SpringBoot OAuth2:.scopes()函数的用途?

时间:2018-06-25 03:15:31

标签: spring-boot oauth-2.0 scopes

我目前正在学习有关SpringBoots OAuth2.0实现的知识,并且遇到了以下教程:http://www.tinmegali.com/en/2017/06/25/oauth2-using-spring/

它包含这段代码:

@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
    clients.inMemory()
           .withClient("trusted-app")
           .authorizedGrantTypes("client_credentials", "password", "refresh_token")
           .authorities("ROLE_TRUSTED_CLIENT")
           .scopes("read", "write")
           .resourceIds(resourceId)
           .accessTokenValiditySeconds(accessTokenValiditySeconds)
           .refreshTokenValiditySeconds(refreshTokenValiditySeconds)
           .secret("secret");
}

我在Internet上四处寻找关于scopes函数的文档,但是我根本找不到它的作用,包括在官方SpringBoot API参考中。我可以肯定地说的是,它需要多个string参数。

上面的代码段中scopes()函数的作用是什么?传递("read", "write")与传递"all"或完全像"donkey"这样的东西有什么实际区别?

1 个答案:

答案 0 :(得分:0)

据我了解,这就是您的客户体验。创建BaseClinetDetails.java实例时,可以为客户端设置任何作用域,并且在进行身份验证时,可以使用isScoped()方法检查是否提供了任何作用域。如果不是,则请求的范围将被忽略。

如果isScoped()返回true,则可以使用getScope()方法获取所有范围,并确定身份验证请求是否为您预定义的范围。

尽管文档尚不清楚,但我尝试设置随机字符串,但这并未使世界停滞不前。