我正在做sso示例(travelocity.com)示例。当我尝试使用此命令使用oauth访问令牌访问用户信息时,
curl -k -H“授权:Bearer b68ba941c9da3d2644d8a63154d28” https://localhost:9443/oauth2/userinfo?schema=openid
我遇到了错误
{“error”:“insufficient_scope”,“error_description”:“访问令牌 没有openid范围“}
请帮助,谢谢
答案 0 :(得分:2)
当您向授权端点发出第一个请求时,您必须在openid
请求参数中包含scope
。 OpenID Connect Core 1.0, 3.1.2.1. Authentication Request说如下。
<强>范围强>
必需的。 OpenID Connect请求必须包含
openid
范围值。如果openid
范围值不存在,则完全不指定该行为。可能存在其他范围值。应该忽略实现不理解的使用范围值。有关本规范定义的其他范围值,请参见第5.4节和第11节。
答案 1 :(得分:-1)
默认情况下,travelocity.com sso示例网络应用程序未在其访问令牌请求中发送openid范围。这是您遇到错误的原因。
为了在travelocity示例中发送 openid 范围以及访问令牌请求,您可以尝试以下操作,
取消注释并修改文件[1]中的 QueryParams 属性,如下所示
QueryParams =范围= OpenID的
保存属性文件并重新部署Web应用程序并尝试在userinfo端点上生成的访问令牌:)
<强>更新强>
看起来在QueryParams中设置范围不起作用, 有一个解决方法
您可以在travelocity.propeties中更改 OAuth2.TokenURL ,如下所示并尝试一下吗?我在本地进行了测试,应该可以使用。
#OAuth2令牌端点网址
OAuth2.TokenURL=https://localhost:9443/oauth2/token?scope=openid