问题描述
我已经阅读了许多帖子,文章和文档,但是我对此感到非常困惑。 我想做的是使用feignclient和springboot的apirest,并且必须在请愿书中发送不记名令牌,我要从自定义提供程序获取此不记名令牌。
我的假装客户班级看起来像这样:
@FeignClient(name="test-client",url = "https://testurl/")
public interface TestClient {
@GetMapping("/auth/me")
public ResponseEntity<String> testLogin@R_543_4045@ion() throws FeignException;
}
我的application.properties:
server.port=8082
spring.security.oauth2.client.registration.custom.client-id=mylargeID
spring.security.oauth2.client.registration.custom.client-secret=mylargePassword
spring.security.oauth2.client.registration.custom.authorization-grant-type=client_credentials
spring.security.oauth2.client.registration.custom.scope=access_token_only
spring.security.oauth2.client.registration.custom.provider=custom-provider
spring.security.oauth2.client.registration.custom.client-authentication-method=basic
spring.security.oauth2.client.provider.custom-provider.authorization-uri=https://testurl/auth/token
spring.security.oauth2.client.provider.custom-provider.token-uri=https://testurl/auth/token
我认为其中指出了使请求者获得令牌的所有必要数据...我不明白“ authorization-uri”和“ token-uri”之间有什么区别
在springboot应用程序主类中,我只有以下两个注释:
@SpringBootApplication
@EnableFeignClients
最后但同样重要的一点是,我pom文件中的依赖项如下所示:
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.3.4-RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.1-RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-oauth2</artifactId>
<version>2.2.0-RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-oauth2-client</artifactId>
<version>5.3.4-RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
<version>2.3.4-RELEASE</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20190722</version>
</dependency>
</dependencies>
现在,我得到的是具有ID的客户注册的无效授权授予类型(client_credentials):自定义。
我在做什么错了?
解决方法
- 授权网址
/ authorization 端点用于与资源所有者进行交互并获得访问受保护资源的授权。为了更好地理解这一点,假设您想使用您的Google帐户登录到服务。首先,该服务会将您重定向到Google进行身份验证(如果您尚未登录),然后您将获得一个同意屏幕,系统将要求您授权该服务访问某些您的数据(受保护的资源);例如您的电子邮件地址和联系人列表。
- 令牌网址
访问令牌是不透明的字符串或JWT,它指示谁授权了哪个应用程序的权限(范围)。它打算在 / oauth / token 端点与访问令牌交换。