使用Spring OAuth2实现JWT

3
我创建了Spring授权服务器,发放JWT和资源服务器检查授权服务器上的JWT、声明和权限。为此,我遵循了这篇文章。我的问题是,为什么在获取令牌请求中需要发送带有HTTP基本授权和Base64编码的用户名/密码(ClientId:ClientSecret)的Authorization头?我看到了只需要用户名和密码的JWT实现。
2个回答

0

这是规范的一部分,请参见RFC 6749

2.3 客户端认证

如果客户端类型是机密的,则客户端和授权服务器建立适合授权服务器安全要求的客户端认证方法。授权服务器可以接受满足其安全要求的任何形式的客户端认证。

通常会向机密客户端发放(或建立)一组用于与授权服务器进行身份验证的客户端凭据(例如,密码、公钥/私钥对)。

授权服务器可以为公共客户端建立客户端认证方法。但是,授权服务器不得依赖于公共客户端认证来识别客户端。

客户端在每个请求中不能使用多种身份验证方法。

默认情况下,Spring Security OAuth 2.0 保护令牌端点,请参见OAuth 2 Developers Guide

令牌端点由Spring OAuth在@Configuration支持中默认使用客户端密钥的HTTP基本身份验证来保护您。

但是看起来,您可以禁用客户端身份验证:


0

这是JWT令牌的结构:

HMACSHA256(
      base64UrlEncode(header) + "." +
      base64UrlEncode(payload),
    secret

    )


As you are doing a JWT implementation all the 3 parts must be there: header.payload.secret

也许在你看到的实现中 - 服务器正在使用默认密钥


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接