当前位置: 首页 > 知识库问答 >
问题:

读取REST服务中的JWT令牌内容

邓高韵
2023-03-14

您好,我正在JWTTokenStore中使用Spring Security Oauth2。我想在用户将令牌内容与资源请求一起发送回来后从REST服务读取令牌内容。例如:curl-i-H“授权:持有人”http://localhost:8080/api/UserDetails

读取UserDetails服务中的令牌。

非常感谢。

共有2个答案

公冶麒
2023-03-14

您可以选择这样做:

((OAuth2AuthenticationDetails) SecurityContextHolder.getContext()
    .getAuthentication().getDetails())
        .getTokenValue();

第一个选项的优点是在集成测试中进行模拟。

或:

@AutoWired
private OAuth2ClientContext oAuth2ClientContext ;

public void getToken() {
    String token = oAuth2ClientContext.getAccessToken().getValue();
}

我真的不知道如何在集成测试中模拟OAuth2Client上下文。

或者(如果使用名称“授权”传递令牌):

((ServletRequestAttributes) RequestContextHolder
    .currentRequestAttributes())
        .getRequest().getHeader("Authorization");
岳曦
2023-03-14

如果您的请求头具有jwt令牌。执行以下操作

String jwtToken = request.getHeader("Authorization");
Claims claims = Jwts.parser().setSigningKey("secretkey")
                                .parseClaimsJws(jwtToken).getBody();
claims.getSubject();
claims.getExpiration();

其中,密钥是创建jwt令牌时使用的密钥。

 类似资料:
  • 我尝试用angular2前端实现jwt令牌。当我尝试使用Postman接收带有post方法的令牌时,我接收到授权令牌,但在Angular中这样做返回空响应对象。这里是我使用的Angular服务的代码片段。 问题是,当我尝试记录时,令牌是空的,与响应相同。对于代码的后端部分,我遵循了jwt令牌的这个实现。

  • 是否可以从应用程序中创建JWT令牌,并使用GCP服务帐户在应用程序中验证它?我如何在Python中做到这一点? 这两个应用程序都部署在GCP中。应用程序可以部署在GCF、Cloud Run、AppEngine、GKE甚至GCE中。 我花了一些时间阅读Google Cloud文档,但我没有找到如何处理服务间身份验证的“通用”答案。(很可能是因为它们对每个GCP产品都不相同) 那么,考虑到我们抛开了谷

  • 我有一个单独的身份验证服务器和一个资源服务器——都是Spring Boot应用程序。我使用OAuth2和JWT令牌进行身份验证和授权。 我可以通过访问身份验证服务器获得令牌: 并通过将令牌附加到请求标头来从资源服务器(在不同的服务器上运行)获取资源时使用它。 但我不清楚的是,确定哪个用户登录了资源服务器。 在auth服务器中,我可以这样做: 此终结点将根据所使用的令牌获取当前用户。如果我尝试在资源

  • 我有一个顶点。x REST服务接收带有jwt令牌的请求,我想调用另一个传递接收到的令牌的REST服务。在路由器处理程序和WebClient调用之间,我有一个业务逻辑层。我的问题是,除了通过我的业务逻辑层显式地传递令牌之外,是否有其他方法可以向webClient提供令牌?换句话说,是否可以从vertxContext或其他组件中以某种方式检索我的RoutingContext和令牌? 示例代码演示了我想

  • 我试图创建spring rest服务,它是由我自己的oauth2资源服务器自动引诱的。我创建了资源服务器: {“error”:“server_error”,“error_description”:“java.io.NotSerializableException:org.springframework.security.crypto.bcrypt.bcryptPasswordenCoder”} 在

  • 正如您所看到的,我有Method1,这是一个异步调用,它作为一个单独的线程运行,因此将相同的令牌传递给这个方法,因为主线程将不知道子线程。但是,Method2和Method3只是函数调用,因此不会传递CancellationToken,因为主线程的上下文中正在运行。 我有几个关于在Service Fabric中使用CancellationToken的问题。1.我们是否需要为正在从长时间运行的方法(