我想知道,加密和解密OAuth2中使用的承载令牌和Asp.Net Identity中的代码的内部流程是什么。
一旦服务器收到令牌,它就能够检索UserId,Roles,Claims及其中的所有属性。那么,Bearer令牌如何解密?什么是加密算法和使用的代码?
答案 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获得:
序列化为二进制格式
MachineKey已加密(当应用程序自托管时使用DPAPI等)
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);