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

Spring Boot 2.0 M6中的oAuth2 REST客户端(Spring Security 5.0)

井镜
2023-03-14

我正在尝试从Spring Boot 2.0 M3升级到当前的M6里程碑。在里程碑M5中,他们更改了Spring Security 5中的oAuth2客户端行为。

现在我很困惑如何重新配置我的应用程序以适应使用Microsoft BotFramework oAuth2 REST API更改的oAuth2实现。我在当前版本5.0 RC1中使用依赖项:org.springframework.security: spring-security-oAuth2-client

我目前的猜测是:

应用yml公司

spring:
  security:
    oauth2:
      client:
        registration:
          botframework:
            client-id: myClientId
            client-secret: myClientSecret
            scope: https://api.botframework.com/.default
            authorization-grant-type: client_credentials
            client-authentication-method: form
        provider:
          botframework:
            token-uri: https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token

允许oAuth2登录的配置

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
            .antMatchers("/**").permitAll()
            .and()
            .oauth2Login();
}

现在我需要获取访问令牌以针对BotFramework REST API发出请求。在版本升级之前,这是通过使用oAuth2 REST模板完成的。我还需要这个吗?如果是,如何?

目前,Spring Boot 2.0 M6自动配置不适用于我。关于这个话题有什么想法吗?

共有1个答案

靳祺然
2023-03-14

我的解决方案是:

security:
  oauth2:
    client:
      client-id: ************
      client-secret: *************
      access-token-uri: https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token
      scope: https://api.botframework.com/.default
      grant-type: client_credentials
      client-authentication-scheme: form

@Bean
@Primary
@ConfigurationProperties(prefix = "security.oauth2.client")
public OAuth2ProtectedResourceDetails oauth2RemoteResource() {
    return new ClientCredentialsResourceDetails();
}

现在一切都是允许的

@Configuration
@EnableWebSecurity
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/**");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/**").permitAll();
    }

}
 类似资料:
  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 我使用生成的app engine Android客户端(jar lib)。31个客户中有30个没有问题。但三星的一款平板电脑拒绝连接并给出了这样的死机: Android:4.4.4制造商:三星型号:SM-T533-日期:Mon Aug 03 09:49:03 CEST 2015 ApiUtils类:

  • URI 方法 URI() string 返回当前客户端使用的服务器地址。 SetURI 方法 SetURI(uri string) 设置当前客户端使用的服务器地址。如果你想要设置多个服务器地址,请使用 SetURIList 方法代替该方法。 URIList 方法 URIList() []string 返回当前客户端可使用的服务器地址列表。 SetURIList 方法 SetURIList(uriL

  • 客户端事件通过 SetEvent 方法进行设置。 客户端事件有两个,它们分别定义为: type onErrorEvent interface { OnError(name string, err error) }   type onFailswitchEvent interface { OnFailswitch(Client) } 因为 go 语言不需要显式实现接口的特点,所以这两

  • 创建客户端有两种方式,一种是直接使用特化的构造器函数,另一种是使用工厂构造器函数。 第一种方式返回的是具体的客户端结构体指针对象,第二种方式返回的是客户端接口对象。 使用特化的构造器函数创建客户端 特化的构造器函数有下面几个: func NewHTTPClient(uri ...string) (client *HTTPClient) func NewTCPClient(uri ...string

  • 我注意到Rest客户端上有两个指南:MicroProfile和Vertx。既然微文件支持异步,那么使用基于Vertx的Rest客户端有什么好处?

  • 客户端下载地址: windows 32位安装包 windows 64位安裝包 mac 安装包 Android App iOS App