Java Get access token using Client Credentials 授予和存储 token

标签 java spring-boot spring-security oauth-2.0 http-headers

我在这里有点迷路,需要一些直接的东西。我是 Java 的新手,这是我尝试编写的第一个程序,显然为此苦苦挣扎了一个月左右。 因此,目前我们使用 postman 输入客户端 ID/密码以从第三方 API 获取访问 token ,使用它我们可以从该第三方的另一个端点请求资源。 我正在尝试引用多个资源,比如这个 spring security example 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 中。但是当我尝试为我重新创建这些示例时,它不起作用,我失败了,实际上放弃了......

在 Application.yml 文件中,这是我的配置。


Spring : 安全: oauth2: 客户: 授权授予类型:client_credentials 客户编号: 客户 secret : token-uri: "这里是 url"

请有人给我一些指导,告诉我如何创建 Java/spring 代码来获取此 token 。凭据必须放在 http 请求的 header 中。

最佳答案

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

如果您使用的是 Intellij,您只需要在您的 maven pom.xml 文件中引用这样的库,maven 就会为您下载该库:

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

在此流程中,通常按如下方式管理 token 存储:

  • 只需将访问 token 存储在内存中
  • 访问 token 最终会过期,您将收到 401 响应
  • 发生这种情况时,只需再次进行身份验证以获取新 token ...
  • ...并使用新的访问 token 重试 API 调用

关于Java Get access token using Client Credentials 授予和存储 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62626004/

相关文章:

java - 带有来自原始资源的自定义铃声的 RingtonePreference

java - Hibernate:从映射迁移到注释 - 是否可以混合使用 hbm 和注释?

java - 为什么 jar 执行的通配符在 docker CMD 中不起作用?

java - 如何在 Spring Boot 中设置基于预身份验证 header 的身份验证?

spring - 使用 Grails 3.0.3 将 springSecurityService 注入(inject) Controller

java - 忽略 Spring Security 中的用户名大小写

Java - JUnit 测试 - ArrayList

java - 如何在java中在特定时间+延迟检查文件?

spring-boot - Spring Boot + Thymeleaf 应用程序中的缓存清除

java - HttpSecurity 正则表达式匹配器未按预期工作