gpt4 book ai didi

python-3.x - Flask-OIDC redirect_uri 值在某处被覆盖?

转载 作者:行者123 更新时间:2023-12-03 16:05:23 27 4
gpt4 key购买 nike

我已经安装了 Flask-OIDC 并且正在尝试使用我公司的服务对用户进行身份验证。我正在使用 client_secrets.json 文件,该文件正在为 client_id、client_secret 和其他值正确读取、解析和发送。我将 redirect_uri 变量存储在如下所示的行中:

"redirect_uris": ["https://example.com/_oid_response"],

当请求被发送到身份验证服务时,它看起来像这样:
redirect_uri=http%3A%2F%2Fexample.com%2Foidc_callback

任何想法这里发生了什么?在我用于向身份验证提供程序注册的任何信息中,我的任何应用程序文件、任何 json 中都没有“oidc_callback”字符串。它是否设置不正确,或者被 Flask 或 Flask-OIDC 库覆盖?

最佳答案

修复

OVERWRITE_REDIRECT_URI = 'https://www.your-server.com/your_oidc_callback_uri'内部配置对象(相同,您保留 SECRET_KEYOIDC_SCOPES 的位置),例如:

app.config['OVERWRITE_REDIRECT_URI'] = 'https://www.your-server.com/your_oidc_callback_uri'

为什么有效
Flask-OIDC 的默认行为是它使用 /_oidc_callback应用程序服务器上的端点(用 OIDC_CALLBACK_ROUTE 指定),而不更改 URL 的架构或权限部分。

例如,当有人通过 https(例如使用 nginx)通过反向代理公开他的应用程序时,可能会出现问题。 Flask 应用程序本身不知道它是通过 https 公开的,因此它只使用普通的 http URL。

这种行为的根源位于 Flask-OIDC 的 __init__py文件,里面 _flow_for_request(self)功能。
def _flow_for_request(self):
"""
Build a flow with the correct absolute callback URL for this request.
:return:
"""
flow = copy(self.flow)
redirect_uri = current_app.config['OVERWRITE_REDIRECT_URI']
if not redirect_uri:
flow.redirect_uri = url_for('_oidc_callback', _external=True)
else:
flow.redirect_uri = redirect_uri
return flow

关于python-3.x - Flask-OIDC redirect_uri 值在某处被覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40663585/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com