【发布时间】:2019-03-27 13:51:39
【问题描述】:
到目前为止,在我的应用程序中,我使用 OAuth2 密码授予流程为使用 Spring Security 和 Spring OAuth 提供用户名和密码的客户端生成 JWT 访问令牌。然后他们在对我的 Spring Boot REST API 的所有请求中使用该令牌。
我的一些客户现在想改用 SAML 身份验证。我的想法是创建一个单独的端点/saml/accessToken 并使用 Spring SAML 保护它。 SAML 身份验证完成后,用户将被重定向回 /saml/accessToken,现在具有有效的身份验证,并获得一个 JWT,客户端可以使用该 JWT 与我的 REST API 进一步通信。
我需要一个控制器方法,它接受经过身份验证的 SAMLAuthenticationToken,使用它的凭据生成 JWT,并将其返回给客户端:
@RequestMapping(value = "/saml/accessToken")
public String getAccessToken(SAMLAuthenticationToken authentication) {
return accessTokenFactory.create(authentication);
}
我需要帮助的是上面示例中的accessTokenFactory。我想尽可能地遵循 Spring 编码生态系统,避免使用“hack”解决方案,这样我就可以利用已经存在的 TokenEnhancers 等等。
从 SAMLAuthenticationToken 创建 JWT 访问令牌的最佳方法是什么?
【问题讨论】:
标签: java spring spring-boot jwt spring-saml