Asp.net web api 在我自己的代码中解析oauth令牌

Asp.net web api 在我自己的代码中解析oauth令牌,asp.net-web-api,oauth-2.0,asp.net-mvc-5,asp.net-identity,owin,Asp.net Web Api,Oauth 2.0,Asp.net Mvc 5,Asp.net Identity,Owin,我有一个应用程序(服务器上的WPF C#,asp.net web api 2),用户可以在其中登录,并且可以作为管理员登录。然后我希望他们能够注销,并作为另一个用户登录,但仍然完成一些管理任务。为此,我认为最简单的方法是将作为管理员登录时返回的oauth令牌传递给服务器上的Web API函数。然后我应该能够读取令牌,验证它是否有效,并检查用户是否是管理员 然而,我找不到任何明显的方法可以做到这一点 有什么简单的方法可以做到这一点吗?答案很简单,下面是您需要做的: Startup.OAuthOpt

我有一个应用程序(服务器上的WPF C#,asp.net web api 2),用户可以在其中登录,并且可以作为管理员登录。然后我希望他们能够注销,并作为另一个用户登录,但仍然完成一些管理任务。为此,我认为最简单的方法是将作为管理员登录时返回的oauth令牌传递给服务器上的Web API函数。然后我应该能够读取令牌,验证它是否有效,并检查用户是否是管理员

然而,我找不到任何明显的方法可以做到这一点


有什么简单的方法可以做到这一点吗?

答案很简单,下面是您需要做的:
Startup.OAuthOptions.AccessTokenFormat.Unprotect(adminToken)


其中Startup是包含ConfigureAuth的默认MVC类。

有很多不同的方法可以实现这一点。这取决于您如何创建oauth令牌以及可以从中检索哪些信息。你有什么样的代码可以把你尝试过的东西发布出来吗?@Karen B,我几乎不知道从哪里开始。对我来说,大部分都是一个黑盒子。我还没有找到允许我从oauth令牌中获取任何信息的示例代码。令牌是在GrantResourceOwnerCredentials中创建的OAuthAuthorizationServerProvider派生类,代码为:AuthenticationTicket ticket=new AuthenticationTicket(oAuthIdentity,properties);上下文。已验证(票证);context.Request.context.Authentication.sign(cookiesIdentity);我需要做的与创建令牌的过程相反,但不确定如何做……您是从另一个应用程序获取令牌,还是同时编写使用者和提供者代码?如果您同时写入这两个数据点,那么您可以确定组成令牌的数据点、加密密钥和salt是什么,然后您可以在另一端反转它。如果您没有同时编写这两个代码,那么您需要从提供令牌的人那里获取这些信息。另外,Microsoft教程是一个很好的起点:。我同时控制这两个代码,但我不知道salt或key或类似的代码是什么,因为它们都是在ASP WebApi代码中完成的。我已阅读了该文件,并认为它有帮助。代码从服务器发送,然后由客户端发送回服务器,这样服务器上的一切都会发生。