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

Java使用客户端凭据获取访问令牌授予并存储令牌

汤才捷
2023-03-14

我在这里有点迷路,需要一些直接的请。我是新来Java,这是我试图写的第一个程序,显然与它斗争了一个月左右。因此,目前我们使用邮递员输入客户端ID/秘密从第三方应用编程接口获得访问令牌,使用该令牌我们可以从第三方的另一个终端请求资源。我正在尝试引用多个资源,如此Spring安全示例https://github.com/spring-projects/spring-security/blob/master/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager.java

https://www.baeldung.com/spring-webclient-oauth2#5-security-web-filter-chain

https://mkyong.com/java/how-to-send-http-request-getpost-in-java/

在stackoverflow中也很少有其他的。。但当我尝试为自己重新创建这些例子时,它不起作用,我失败了,实际上我放弃了。。。

在应用程序中。yml文件,这是我的配置。

spring:security:oauth2:client:authorization-grant-type:client\u-credentials-client-id:client-secret:token-uri:url-here

请有人给我一些关于如何创建Java /spring代码来获得这个令牌的方向。

共有1个答案

景岳
2023-03-14

我推荐Connect2ID库,因为它们有很好的文档记录,由专家和开发人员实施:

  • 客户端凭据授予示例

如果您使用Intellij,您只需要在maven pom中引用这样的库。xml文件和maven将为您下载该库:

<dependency>
  <groupId>com.nimbusds</groupId>
  <artifactId>oauth2-oidc-sdk</artifactId>
  <version>8.4</version>
</dependency>

在此流中,通常按以下方式管理令牌存储:

  • 只需将访问令牌存储在内存中
  • 最终,访问令牌将过期,您将得到401响应
  • 发生这种情况时,只需再次验证以获取新令牌
  • 。。。然后使用新的访问令牌重试API调用
 类似资料:
  • 我使用的是Spring Boot,我使用的是第三方API accessToken(通过传递clientId和clientSecret)。 现在,在我的所有服务中,为了使用第三方API,我确实需要一个accessToken,所以在每个服务类中,我都会调用getAccessToken()来获取令牌,然后进行实际的rest调用。 通过上面这样做,它起作用了。但不知何故,我觉得所有服务类中到处都是重复代码

  • 引用的员额: 为什么OAuth v2既有访问令牌又有刷新令牌? 刷新令牌有什么意义?

  • 我已经在本地机器中配置了minikube,并打算在外部使用kubernetes。我在kubernetes中创建了一个服务帐户,使用它的秘密,我可以使用下面的命令获得访问令牌。 我正在以贝娄启动配置。 我能知道如何使用fabric8 java客户端获得上面描述的serviceAccountAccessToken吗?

  • 我正在写一个小小的短信网关,供几个项目使用, 我实现了laravel passport身份验证(客户端凭据授予令牌) 然后,我向api中间件组添加了: 逻辑工作正常,现在在我的控制器中,我需要让客户机与有效令牌关联。 routes.php 出于明显的安全原因,我无法将客户端id与消费者请求一起发送,例如,

  • 我可以使用,其中一个keycloak客户机与另一个keycloak客户机通信。然而,只有当我登录到第一个keycloak客户机时,它才起作用,即它向keycloak服务器发送客户机ID、客户机机密、用户名和密码。如果我没有在第一个客户机上使用用户和密码进行身份验证,我会得到“无法设置授权头,因为没有身份验证原则”。但是我已经将keycloak配置为对第一个客户机使用服务帐户(客户机凭据授权),因此

  • 我喜欢从我自己的应用程序管理键斗篷:创建用户 请求一个访问令牌,其用户名:密码在标题 但答案是403: 如何/是否可能通过客户端凭据授权从新服务帐户访问Admin REST API?