【问题标题】:How Bearer tokens (OAuth2) are created?Bearer 令牌 (OAuth2) 是如何创建的?
【发布时间】:2016-06-01 00:43:44
【问题描述】:

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

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

【问题讨论】:

  • 查看我的博客文章,我在其中描述了生成令牌的过程、它依赖于什么以及受保护资源收到令牌时会发生什么。 bitoftech.net/2014/09/24/…
  • @TaiseerJoudeh 非常感谢您对我的问题发表评论。我已经阅读了您的帖子(以及您在博客上写的所有内容),但我对 Bearer 令牌加密的过程很感兴趣。使用的加密算法及其过程是什么。换句话说,Asp.Net Identity 是如何在内部完成这个过程的。

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这是一个小的 Windows 窗体 tool,它使用 MachineKeyDataProtector 解密 OAuth 2.0 Bearer 令牌。

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

    OAuth 2.0 Bearertoken 获取:

    1. 序列化成二进制格式

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

    3. Base64 编码

    【讨论】:

    • 是的,你必须去这里:link
    • 嗯,好的...指定您有一个名为“Initial”的分支可能会有所帮助。我倾向于认为一个空的 master 分支代表一个尚未启动的项目。
    • 是的,我现在已经将它设置为默认分支...只是一个小演示工具..
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-26
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      • 2019-06-18
      • 2019-02-18
      • 1970-01-01
      相关资源
      最近更新 更多