【问题标题】:How Identity server 4 implements Json Web TokensIdentity server 4 如何实现 Json Web Tokens
【发布时间】:2018-04-14 14:34:21
【问题描述】:

我对 oauth2 令牌和 json web 令牌之间的区别感到非常困惑。 我搜索了这些技术,结果是;

Open Id 是一种协议,它使用 JSON Web 令牌来确保请求来自受信任的用户。

一个 Json Web 令牌包含一些使用 sts 私钥加密的用户信息(声明)。

Oauth2 是一个框架,我们可以管理我们的用户、客户端和资源与第三方应用程序之间的登录操作。

Identity Framework 4 是一个 Open Id 连接实现 .net MVC 库。该库使用 oauth2 规范编写并实现了 Open Id。

这是我不明白的一点。 Oauth2 框架已经有它的令牌实现。

在这种情况下 JSON Web 令牌的位置在哪里? 例如,我们有一个简单的 Web 应用程序和一个实现身份服务器 4 的服务器。

当用户从 Web 应用程序请求页面时,用户将被重定向到我们的身份服务器以进行登录操作。 成功登录后,身份服务器会在我们的响应中添加一个 cookie,这些 cookie 包含一个令牌。 我们将在请求其他安全资源时使用该令牌。

这些步骤对我来说很清楚。这个 schenio 中的 Jason Web 令牌在哪里? 如何在我的客户端应用程序中使用 JSON Web 令牌? 我在哪里可以获得我的用户声明?

【问题讨论】:

    标签: oauth-2.0 openid identityserver4 json-web-token


    【解决方案1】:

    JSON Web Token (JWT) (RFC 7519) 本身独立于 OAuth 2.0 和 OpenID Connect。你可以在任何你喜欢的地方使用 JWT。

    OAuth 2.0 是关于如何请求和发布 访问令牌 的规范。该规范没有说明应该如何表示访问令牌。因此,访问令牌可能是随机字符串,也可能是 JWT。一些授权服务器实现生成随机字符串并将它们作为访问令牌发布,而其他实现生成 JWT 并将它们作为访问令牌发布。见“7. Full-Scratch Implementor of OAuth and OpenID Connect Talks About Findings 中的访问令牌” 供进一步讨论。

    OpenID Connect 是关于如何请求和发布 ID 令牌 的规范。规范说ID token 是一种 JWT。此外,规范中的其他地方也使用了 JWT。来自UserInfo Endpoint 的响应是纯 JSON 或 JWT。 Request Objects 是智威汤逊。

    在正常情况下,支持 OpenID Connect 的服务器可以同时发布 ID 令牌(JWT)和访问令牌(随机字符串或 JWT)。这可能会让你感到困惑。阅读以下文章可能会有所帮助。

    1. Diagrams of All The OpenID Connect Flows
    2. Diagrams And Movies Of All The OAuth 2.0 Flows

    【讨论】:

      【解决方案2】:

      specs of OAuth2中给出了JWT的原因

      由于 OAuth 2.0 没有为资源服务器定义协议 了解从一个
      授权服务器,已经有几种不同的方法
      为弥合这一差距而开发。其中包括使用结构化令牌
      格式,例如 JWT [RFC7519] 或专有的跨服务
      通信机制(例如共享数据库和受保护
      传送令牌信息的企业服务总线。

      作为一种开放标准的 JWT,已在与安全相关的技术和协议中广泛采用。它定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息作为 JSON 对象。此信息可以验证和信任,因为它经过数字签名

      让我们进一步解释一下这个定义的一些概念。

      • 紧凑:由于 JWT 较小,可以通过 URL、POST 参数或 HTTP 标头内部发送。此外,更小的尺寸意味着传输速度更快。

      • 自包含:payload包含所有需要的用户信息,避免了多次查询数据库的需要。

      有很多解释这些事情的网站以及众多技术提供商。

      回答您的 IdentityServer 相关问题。身份验证和授权相关信息通常被编码

      这些令牌中的特定于应用程序的信息/有效负载是使用 JWT 编码的。如果提供了良好的库,JWT 对应用程序开发人员基本上是透明的——就像 IdentityServer 的情况一样。您可以在excellent documentation for IdentityServer 中找到问题的答案。还介绍了如何提取用户声明。该项目提供了大量的client examples,涵盖了典型的 AuthX 设置。度过难关需要时间和承诺。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-14
        • 2019-06-02
        • 2020-11-05
        • 2020-06-21
        • 2018-06-27
        • 2018-08-25
        • 1970-01-01
        • 2012-11-16
        相关资源
        最近更新 更多