我目前正在学习有关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"
这样的东西有什么实际区别?
答案 0 :(得分:0)
据我了解,这就是您的客户体验。创建BaseClinetDetails.java实例时,可以为客户端设置任何作用域,并且在进行身份验证时,可以使用isScoped()方法检查是否提供了任何作用域。如果不是,则请求的范围将被忽略。
如果isScoped()返回true,则可以使用getScope()方法获取所有范围,并确定身份验证请求是否为您预定义的范围。
尽管文档尚不清楚,但我尝试设置随机字符串,但这并未使世界停滞不前。