如何创建承载令牌(OAuth2)?

时间:2014-09-16 21:20:32

标签: encryption asp.net-web-api oauth-2.0 asp.net-identity bearer-token

我想知道,加密和解密OAuth2中使用的承载令牌和Asp.Net Identity中的代码的内部流程是什么。

一旦服务器收到令牌,它就能够检索UserId,Roles,Claims及其中的所有属性。那么,Bearer令牌如何解密?什么是加密算法和使用的代码?

3 个答案:

答案 0 :(得分:1)

你从哪里获得令牌?令牌很少被加密(有时它们是),但它们将始终被编码(和签名)。 OpenID(OAuth2之上的协议)使用JWT。 OAuth2(不是OpenID)使用" opaque"令牌。

有关解码JWT的库,请参阅http://jwt.io

答案 1 :(得分:0)

以下是使用MachineKeyDataProtector解密OAuth 2.0承载令牌的Windows窗体tool

因此,如果您的应用程序托管在IIS中,则可以使用上述工具。

OAuth 2.0 Bearertoken获得:

  1. 序列化为二进制格式

  2. MachineKey已加密(当应用程序自托管时使用DPAPI等)

  3. Base64编码

答案 2 :(得分:-3)

这是一个简短的答案,我有时间。 OAuthBearerTokenOptions包含创建令牌所需的代码。它必须在你的owin启动中配置。

app.UseOAuthBearerAuthentication(OAuthBearerOptions);

鉴于......

var ticket = new AuthenticationTicket(identity, new AuthenticationProperties());
var currentUtc = new SystemClock().UtcNow;
ticket.Properties.IssuedUtc = currentUtc;
ticket.Properties.ExpiresUtc = currentUtc.Add(TimeSpan.FromMinutes(expirationMinutes));
string accessToken = oAuthBearerAuthenticationOptions.AccessTokenFormat.Protect(ticket);