返回

python-Flask OIDC:oauth2client.client.FlowExchangeError

发布时间:2022-09-09 10:50:05 489
# node.js

图书馆 flask-oidc 包括scope参数输入到授权码/访问令牌交换请求中,这不足为奇地引发以下错误:

oauth2client.client.FlowExchangeError: invalid_request Scope parameter is not supported on an authorization code access_token exchange request. Scope parameter should be supplied to the authorized request.

问题是:

这是配置问题还是库问题?

我的配置:

  • Flask Application
app.config.update({
    'DEBUG': True,
    'TESTING': True,
    'SECRET_KEY': 'secret',
    'SERVER_NAME' : 'flask.example.com:8000',
    'OIDC_COOKIE_SECURE': False,
    'OIDC_REQUIRE_VERIFIED_EMAIL': False,
    'OIDC_CALLBACK_ROUTE': '/oidc/callback',
    'OIDC_CLIENT_SECRETS': 'client_secrets.json'
})
oidc = OpenIDConnect(app)
  • client_secrets.json
{
    "web": {
        "auth_uri": "http://openam.example.com:8080/openam/oauth2/realms/root/authorize",
        "issuer": "http://openam.example.com:8080/openam/oauth2/realms/root/",
        "userinfo_uri": "http://openam.example.com:8080/openam/oauth2/realms/root/userinfo",
        "client_id": "MyClientID",
        "client_secret": "password",
        "redirect_uris": [
            "http://flask.example.com:8000/oidc/callback"
        ],
        "token_uri": "http://openam.example.com:8080/openam/oauth2/realms/root/token",
        "token_introspection_uri": "http://openam.example.com:8080/openam/oauth2/realms/root/introspect"
    }
}

  • 访问管理器

对于我使用的访问管理器OpenAM.我配置了一个OpenAM客户端代理,如下所示:

  • 客户端ID=MyClientID
  • 客户机密=password
  • 响应类型=code
  • 令牌端点身份验证方法=client_secret_post
  • 重定向URI=http://flask.example.com:8000/oidc/callback

上下文:我用烧瓶用于应用程序端的逻辑和OpenAM对于身份和访问管理,bot应用程序在docker容器中运行。当使用简单的curl命令时,我可以检索授权授权和身份验证令牌(授权类型:授权码授权)。但是,在登录到OpenAM并向应用程序授予授权(端点“oauth2/authorize”)后,flask oidc使用上述库发送以下GET请求:

GET /oidc/callback?code= \
&scope=openid%20email \
&iss=http%3A%2F%2Fopenam.example.com%3A8080%2Fopenam%2Foauth2 \
&state= \
&client_id=MyClientID

这导致了上述错误。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像