spring服务自动调用oauth2保护的服务

ou6hu8tu  于 2021-06-08  发布在  Redis
关注(0)|答案(1)|浏览(350)

我有一个服务a,它调用服务b来获取一些资源。当客户端使用访问令牌调用a,并且a将令牌中继到对b的请求时,它工作正常。
现在,我正在实现redis来缓存数据。当我收到来自b的消息,某个内容被更新时,我需要调用b来检索那些更新的资源。但是,a现在没有访问令牌,并且我的请求未授权。
有没有办法自动生成访问令牌?
谢谢你的帮助。

wn9m85ua

wn9m85ua1#

我有点事要做,但不确定这是否是个好习惯。
我为此创建了一个单独的rest模板。
附属国:

<dependency>
            <groupId>org.springframework.security.oauth.boot</groupId>
            <artifactId>spring-security-oauth2-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-jwt</artifactId>
            <version>1.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
        </dependency>

启用:

@EnableOAuth2Client

应用程序.yml:

security:
  oauth2:
    auto:
      clientId: <client id>
      clientSecret: <client key>
      grantType: password
      username: <username>
      password: <password>
      accessTokenUri: <URI>
      userAuthorizationUri: <URI>
      scope: openid profile email

配置:

@Bean
    @ConfigurationProperties("security.oauth2.auto")
    protected ResourceOwnerPasswordResourceDetails autoOAuth2Details() {
        return new ResourceOwnerPasswordResourceDetails();
    }

    @LoadBalanced
    @Bean
    protected OAuth2RestTemplate autoRestTemplate(RestTemplateCustomizer customizer) {
        OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(autoOAuth2Details);
        customizer.customize(restTemplate);
        return restTemplate;
    }

使用此模板,我的服务可以自己调用其他服务。

相关问题