在验证期间访问JWT令牌

时间:2014-12-15 01:20:19

标签: java spring-security spring-boot spring-security-oauth2 spring-cloud

我正在使用以下示例来玩Spring Cloud OAuth2实现:

https://github.com/spring-cloud-samples/authserver

https://github.com/spring-cloud-samples/sso

第一个是OAuth服务器,它在对用户进行身份验证时生成JWT令牌。第二个是正在消耗的资源。根据OAuth规范,资源将用户的身份验证中继到authserver。

所有似乎都运作良好,引出了其他问题:

  1. 在authserver中,在身份验证期间,如何访问clientId和clientSecret?
  2. 我可以确定哪些值用于生成JWT令牌吗?
  3. 在SSO中,如何在用户通过身份验证后访问令牌的内容(例如,主体)?

1 个答案:

答案 0 :(得分:1)

回答3):更改方法签名以包括:

@AuthenticationPrincipal  User principal

这样,身份验证凭据将传递给Spring调用的控制器方法。另一种方式是通过安全上下文:

SecurityContext securityContext = SecurityContextHolder.getContext(); 
Authentication authentication = securityContext.getAuthentication();

至于2),我在这一点上的猜测是,为了影响用于计算JWT令牌的参数,需要实现自定义的AccessTokenConverter。如果我的理解是正确的,默认的一个名为DefaultAccessTokenConverter的人不允许这样做。我欢迎任何其他意见。