我们有一个使用spring-security-oauth2:1.0
的应用程序。我试图将其更改为较新版本spring-security-oauth2:2.0.7.RELEASE
。如果我没有指定scope
或如果我指定单个范围,则应用程序可以正常工作。我在请求多个范围时遇到问题,例如read,write
,它曾在以前的版本中运行。
我请求的客户端拥有所有read,write and trust
权限。
当我使用spring-security-oauth2:1.0
时,为了获得一个令牌,我曾经像
如果你看到范围参数scope=read,write
,通过请求这种方式,我曾经获得一个范围为read and write
的令牌。
如果我尝试使用Oauth2版本2.0.7.RELEASE
执行相同的操作(虽然有POST
请求),我会收到Invalid Scope
异常,因为tokenRequest
正在执行read,write
1}}作为单一范围。我请求的客户端具有read,write and trust
权限,但read,write
不是其中之一。
如果我使用scope=write
或scope=read
进行试用,则可以正常使用,因为read
或write
是客户端范围的一部分。
如果我想在OAuth2 2.0.7.RELEASE
中请求多个范围,我该怎么做?
答案 0 :(得分:5)
我找到了正确的方法。您必须使用+
来分隔范围,而不是以逗号分隔的范围。
例如:read+write
,write+trust
因此,以下POST
请求正常工作。
http://localhost:8080/oauth/token?grant_type=password&client_id=ws&client_secret=secret&scope=的读+写强>&安培; username=user@abc.com&密码= temp123
我希望它能帮助别人:)