在 Spring Boot OAuth2 中跳过 OAuth 用户批准

Posted

技术标签:

【中文标题】在 Spring Boot OAuth2 中跳过 OAuth 用户批准【英文标题】:Skip OAuth user approval in Spring Boot OAuth2 【发布时间】:2015-06-24 02:47:08 【问题描述】:

我只想知道是否有任何方法可以跳过 Spring Boot - Spring Security OAuth2 中的用户批准屏幕。我听说过自定义用户批准处理程序,但我不太确定如何覆盖它以禁用用户批准过程并进行直接重定向。

谢谢

【问题讨论】:

有什么原因吗?我已将此表单返回到我的 /authorize 请求,我想禁用它,但我想知道这是否是安全且良好的解决方案! 【参考方案1】:

您不需要自定义处理程序来跳过批准(无论如何从 2.0 开始)。您只需将客户端详细信息中的 autoApprove 标志设置为“true”(或自动批准的范围模式列表)。

【讨论】:

只是为了确保这一点更加清楚,请注意@Dave Syer 已在引用中添加了 true。如果您将客户详细信息存储在数据库中,则此值需要是数据库中的字符串,而不是 true 的布尔值。 这正是它起作用的时候。不知道你的意思。 他的意思是,如果您将客户详细信息存储在数据库中,您需要将自动批准列值保存为 'true'(字符串)而不是 1(mysql 默认值为 true 布尔值,例如)【参考方案2】:

这就是我在 JHipster 应用程序中更改它的方式:

        @Override
        public void configure(ClientDetailsServiceConfigurer clients) throws Exception 
            clients
                .inMemory()
                .withClient(jhipsterProperties.getSecurity().getAuthentication().getOauth().getClientid())
                .autoApprove(true)
                .scopes("read", "write")
                .authorities(AuthoritiesConstants.ADMIN, AuthoritiesConstants.USER)
                .authorizedGrantTypes("password", "refresh_token")
                .secret(jhipsterProperties.getSecurity().getAuthentication().getOauth().getSecret())
                .accessTokenValiditySeconds(jhipsterProperties.getSecurity().getAuthentication().getOauth().getTokenValidityInSeconds());
        

【讨论】:

【参考方案3】:

在 application.yml 中设置属性 auto-approve-scopes: '.*'

security:
  oauth2:
    client:
      client-id: acme
      client-secret: acmesecret
      scope: read,write
      auto-approve-scopes: '.*'

另见https://spring.io/guides/tutorials/spring-boot-oauth2/#_social_login_authserver

【讨论】:

以上是关于在 Spring Boot OAuth2 中跳过 OAuth 用户批准的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 1.5 禁用 oauth2 安全性

如何在 spring-mvc 中跳过杰克逊时区校正?

spring cloud gateway 某些路由中跳过全局过滤器

如果在 Spring Data JPA 中为空或为空,如何在 @Query 中跳过 @Param

Spring Boot 和 OAuth2 社交登录,无法获取 refreshToken

在 reStructuredText 中跳过标题级别