访问令牌没有openid范围

时间:2016-05-20 19:34:31

标签: oauth wso2 wso2is

我正在做sso示例(travelocity.com)示例。当我尝试使用此命令使用oauth访问令牌访问用户信息时,

  

curl -k -H“授权:Bearer b68ba941c9da3d2644d8a63154d28”   https://localhost:9443/oauth2/userinfo?schema=openid

我遇到了错误

  

{“error”:“insufficient_scope”,“error_description”:“访问令牌   没有openid范围“}

请帮助,谢谢

2 个答案:

答案 0 :(得分:2)

当您向授权端点发出第一个请求时,您必须在openid请求参数中包含scopeOpenID 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. 在示例Web应用程序中打开travelocity.properties [1]文件(您可以在travelocity.com/WEB-INF/classe中找到它)
  2. 取消注释并修改文件[1]中的 QueryParams 属性,如下所示

    QueryParams =范围= OpenID的

  3. 保存属性文件并重新部署Web应用程序并尝试在userinfo端点上生成的访问令牌:)

  4. [1] https://github.com/wso2/product-is/blob/master/modules/samples/sso/sso-agent-sample/src/main/resources/travelocity.properties

    <强>更新

    看起来在QueryParams中设置范围不起作用, 有一个解决方法

    您可以在travelocity.propeties中更改 OAuth2.TokenURL ,如下所示并尝试一下吗?我在本地进行了测试,应该可以使用。

    #OAuth2令牌端点网址

    OAuth2.TokenURL=https://localhost:9443/oauth2/token?scope=openid