首页 文章

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

提问于
浏览
6

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

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

3 回答

  • 0

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

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

  • 1

    这是一个使用 MachineKeyDataProtector 解密OAuth 2.0承载令牌的Windows Forms tool .

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

    OAuth 2.0 Bearertoken获得:

    • 序列化为二进制格式

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

    • Base64编码

  • -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);
    

相关问题