首页 文章

访问令牌没有openid范围

提问于
浏览
3

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

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

我得到了以下错误

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

请帮帮忙,谢谢

2 回答

  • 2

    当您向授权 endpoints 发出第一个请求时,必须在 scope request参数中包含 openid . OpenID Connect Core 1.0, 3.1.2.1. Authentication Request说如下 .

    范围要求 . OpenID Connect请求必须包含openid范围值 . 如果openid范围值不存在,则完全不指定该行为 . 可能存在其他范围值 . 应该忽略实现不理解的使用范围值 . 有关本规范定义的其他范围值,请参见第5.4节和第11节 .

  • -1

    默认情况下,travelocity.com sso示例Web应用程序不会在其访问令牌请求中发送openid作用域 . 这是您遇到的错误的原因 .

    要在travelocity示例中发送 openid 范围以及访问令牌请求,您可以尝试以下操作,

    • 在示例Web应用程序中打开travelocity.properties [1]文件(您可以在travelocity.com/WEB-INF/classe中找到它)

    • 取消注释并编辑文件[1]中的 QueryParams 属性,如下所示

    QueryParams =范围= OpenID的

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

    [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

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

相关问题