我对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令牌? 我在哪里可以获得用户声明?
答案 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) 。这可能会让你感到困惑。阅读以下文章可能会有所帮助。