【发布时间】:2019-04-22 11:59:24
【问题描述】:
我使用 Sprint Boot、Spring 安全性和 JWT 完成了一个示例应用程序,并定义了我的自定义身份验证和授权过滤器。在执行基本身份验证(传递用户名和密码)时,我得到格式为 xxxx.yyyy.zzzz 的 JWT 令牌,其中 xxxx 是标头,yyyy 是有效负载,zzzz 是签名,每个部分都使用 Base64URL 编码器进行编码。我不明白 JWT 与 OAuth 2.0 有何不同。在 OAuth 2.0 中,我们可以传递 2 种类型的 grant_types 作为“用户名”或“客户端凭据”,还需要传递客户端 ID、机密 ID 以获取访问权和刷新令牌。
请协助澄清我的以下疑虑:- 1) JWT 是否比 OAuth 2.0 更轻,因为它不包含刷新令牌而仅包含访问令牌? 2) JWT 是否不能用于制作独立的授权服务器,就像我们可以在 OAuth 2.0 中使用 @EnableAuthorizationServer 注释制作独立的授权服务器一样。我的假设正确吗? 3) JWT 不接受客户端 ID/秘密客户端,而只是用作获取不记名令牌的基本身份验证? 4)OAuth2.0和JWT的access token(或bearer)格式是否不同?
我看到了一个同时使用 OAuth 2.0 和 JWT 的示例。 OAuth 2.0 是做授权服务器,最终只返回 JWT 令牌,但不明白如果 OAuth2.0 可以自己返回令牌,为什么要使用 JWT。
谢谢
【问题讨论】: