我正在做sso示例(travelocity.com)的例子 . 当我尝试使用此命令使用oauth访问令牌访问用户信息时,
curl -k -H“授权:Bearer b68ba941c9da3d2644d8a63154d28”https:// localhost:9443 / oauth2 / userinfo?schema = openid
我得到了以下错误
{“error”:“insufficient_scope”,“error_description”:“访问令牌没有openid范围”}
请帮帮忙,谢谢
2 回答
当您向授权 endpoints 发出第一个请求时,必须在
scope
request参数中包含openid
. OpenID Connect Core 1.0, 3.1.2.1. Authentication Request说如下 .默认情况下,travelocity.com sso示例Web应用程序不会在其访问令牌请求中发送openid作用域 . 这是您遇到的错误的原因 .
要在travelocity示例中发送 openid 范围以及访问令牌请求,您可以尝试以下操作,
在示例Web应用程序中打开travelocity.properties [1]文件(您可以在travelocity.com/WEB-INF/classe中找到它)
取消注释并编辑文件[1]中的 QueryParams 属性,如下所示
QueryParams =范围= OpenID的
[1] https://github.com/wso2/product-is/blob/master/modules/samples/sso/sso-agent-sample/src/main/resources/travelocity.properties
Update
看起来像QueryParams中的范围设置不起作用,有一种解决方法
你可以在travelocity.propeties中更改 OAuth2.TokenURL ,如下所示并尝试一下吗?我在本地进行了测试,应该可行 .
#OAuth2令牌 endpoints URL