在 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 cloud gateway 某些路由中跳过全局过滤器
如果在 Spring Data JPA 中为空或为空,如何在 @Query 中跳过 @Param