首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flask-OIDC redirect_uri值在什么地方被覆盖了?

Flask-OIDC redirect_uri值在什么地方被覆盖了?
EN

Stack Overflow用户
提问于 2016-11-18 03:36:36
回答 2查看 2.3K关注 0票数 4

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

代码语言:javascript
复制
"redirect_uris": ["https://example.com/_oid_response"],

当请求被发送到身份验证服务时,它的输出如下所示:

代码语言:javascript
复制
redirect_uri=http%3A%2F%2Fexample.com%2Foidc_callback

知道这是怎么回事吗?在我的应用程序的任何文件中,在任何json中,在我用来向身份验证提供商注册的任何信息中,都没有"oidc_callback“字符串。是设置不正确,还是被Flask或Flask-OIDC库覆盖了?

EN

回答 2

Stack Overflow用户

发布于 2018-02-19 18:45:50

解决之道

在configuration对象内部使用OVERWRITE_REDIRECT_URI = 'https://www.your-server.com/your_oidc_callback_uri' (与保存SECRET_KEYOIDC_SCOPES的位置相同),例如:

代码语言:javascript
复制
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。

此行为的源代码位于_flow_for_request(self)函数内的Flask-OIDC的__init__py文件中。

代码语言:javascript
复制
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
票数 5
EN

Stack Overflow用户

发布于 2018-02-02 16:55:34

Eric,我知道您必须管理OIDC_CALLBACK_ROUTE设置才能路由到所需的URL (请参阅此处的http://flask-oidc.readthedocs.io/en/latest/)。Flask OIDC缺省值将uri重定向到/oidc_callback

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40663585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档