我们有一个使用spring-security-oauth2:1.0的应用程序。我试图把它改成一个更新的版本,spring-security-oauth2:2.0.7.RELEASE。如果我没有指定scope,或者我指定了我的单个作用域,那么应用程序可以正常工作。在请求像read,write这样的多个作用域时,我遇到了问题,因为以前的版本都是这样的。
我请求的客户端拥有所有read,write and trust权限。
当我使用spring-security-oauth2:1.0时,为了得到一个令牌,我经常做一个get调用,例如
secret=secret&scope=read,write&username=user@abc.com&password=temp123
如果您看到了范围参数scope=read,write,那么通过这样的请求,我就可以获得一个带有作用域read and write的令牌。
如果我试图对Oauth2版本的2.0.7.RELEASE(尽管有一个POST请求)做同样的事情,我会得到Invalid Scope异常,因为tokenRequest将read,write作为一个单独的作用域。我请求的客户端具有read,write and trust权限,但read,write不是其中之一。
如果我尝试使用scope=write或scope=read,它可以正常工作,因为read或write是客户端范围的一部分。
如果我想在OAuth2 2.0.7.RELEASE中请求多个作用域,我如何做到这一点?
发布于 2015-07-22 05:48:34
我找到了正确的方法。与逗号分隔的作用域不同,您必须使用+来分隔作用域。
例:read+write,write+trust
因此,下面的POST请求运行良好。
secret=secret&scope=read+write&username=user@abc.com&password=temp123
希望能对其他人有所帮助:)
https://stackoverflow.com/questions/31547822
复制相似问题