Eri*_*ric 4 flask python-3.x openid-connect
我已经安装了 Flask-OIDC 并且正在尝试使用我公司的服务对用户进行身份验证。我正在使用 client_secrets.json 文件,该文件正在为 client_id、client_secret 和其他值正确读取、解析和发送。我将 redirect_uri 变量存储在如下所示的行中:
"redirect_uris": ["https://example.com/_oid_response"],
Run Code Online (Sandbox Code Playgroud)
当请求被发送到身份验证服务时,它看起来像这样:
redirect_uri=http%3A%2F%2Fexample.com%2Foidc_callback
Run Code Online (Sandbox Code Playgroud)
任何想法这里发生了什么?在我用于向身份验证提供程序注册的任何信息中,我的任何应用程序文件、任何 json 中都没有“oidc_callback”字符串。它是否设置不正确,或者被 Flask 或 Flask-OIDC 库覆盖?
使用
OVERWRITE_REDIRECT_URI = 'https://www.your-server.com/your_oidc_callback_uri'内部配置对象(相同,您保留SECRET_KEY或的位置OIDC_SCOPES),例如:
app.config['OVERWRITE_REDIRECT_URI'] = 'https://www.your-server.com/your_oidc_callback_uri'
Run Code Online (Sandbox Code Playgroud)
的默认行为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
Run Code Online (Sandbox Code Playgroud)
小智 0
Eric,我知道您必须管理 OIDC_CALLBACK_ROUTE 设置才能路由到所需的 URL(请参阅此处http://flask-oidc.readthedocs.io/en/latest/)。Flask OIDC 默认将 uri 重定向到 /oidc_callback
| 归档时间: |
|
| 查看次数: |
2132 次 |
| 最近记录: |