首页 > 解决方案 > 具有 Spring Boot Security 的一个客户端应用程序的多种授权类型

问题描述

我正在编写一个客户端(Spring Boot 应用程序),它必须为用户提供两个端点,一个使用授权代码授予,另一个使用资源所有者密码凭据授予。端点位于不同的 URL 上。另一个将由内部应用程序使用,所以我不关心安全性。

我有一个外部 OAuth2 服务器(授权和资源服务器) - 所以我没有对它们进行编程,但我可以完全访问它们的配置。钥匙斗篷有问题。

我设法设置了授权代码授予,但无法让另一个工作。

我的 application.yml 看起来像:

security:
  oauth2:
    resource:
      token-info-uri: ...3rd party...
      userInfoUri: ...3rd party...
    client:
          client-id: ...
          client-secret: ...
          grant-type: authorization_code
          registered-redirect-uri: http://localhost:8080/app/auth_grant
          pre-established-redirect-uri: http://localhost:8080/app/auth_grant/
          user-authorization-uri: ...3rd party uri...
          access-token-uri:  ...3rd party uri...
          scope:
            - read
            - write
            - openid

我有一个带有注释的 WebSecurityConfigurerAdapter 实现, @EnableOAuth2Sso @Configuration它只允许未经授权访问/login 。

现在我希望我的用户能够在(示例)/login_ROPCG使用资源所有者密码凭据授予登录。

我已经阅读了文档,但我想我走错了方向。你能给我一些提示吗?

我读过这条评论:Spring Boot Oauth2 use multiple grant_types for same URL 其中提示我需要两个具有不同映射的不同安全配置,但我不知道该怎么做。

我读过这篇文章:如何在 Spring Boot 中使用 JWT 身份验证实现基本身份验证?但我看不到如何设置两种不同的授权类型。

正因为如此,我不确定这是否可能: https ://github.com/spring-projects/spring-boot/issues/14554

标签: springspring-bootspring-securityspring-security-oauth2

解决方案


推荐阅读