Identity Server 4如何实现Json Web Tokens

时间:2017-11-02 06:36:28

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

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

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

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

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:0)

JWT的原因在specs of OAuth2

中给出
  

由于OAuth 2.0没有为资源服务器定义协议   学习有关从中收到的令牌的元信息   授权服务器,已有几种不同的方法   为弥合这一差距而发展。这些包括使用结构化令牌
  JWT [RFC7519]或专有服务间等格式   沟通机制(如共享数据库和受保护的机构)   传达令牌信息的企业服务总线。

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

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

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

  • 自包含:有效负载包含有关用户的所有必需信息,无需多次查询数据库。

有很多网站解释这些东西以及众多技术提供商。

回答与IdentityServer相关的问题。身份验证&授权相关信息通常是编码的

使用JWT对这些令牌中的特定于应用程序的信息/有效负载进行编码。如果提供了良好的库,JWT对应用程序开发人员来说几乎是透明的 - 就像IdentityServer的情况一样。您可以在excellent documentation for IdentityServer中找到问题的答案。还包括如何提取用户声明。该项目提供了许多client examples,涵盖了典型的AuthX设置。通过它需要时间和承诺。

答案 1 :(得分:0)

JSON Web令牌(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是JWT。

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

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