问题标签 [flask-oidc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flask - Keycloak Gitpod Flask OIDC:oauth2client.client.FlowExchangeError:无效响应:301
我正在尝试实现Flask-OIDC
并Keycloak
在Gitpod
工作区中运行的 Flask 应用程序中。
我正在Keycloak
像这样运行应用程序和服务器:
基于这篇文章
我可以Keycloak
从应用程序内重定向到普通用户的登录页面Flask
,但是当我使用现有用户登录时,我得到以下信息:
oauth2client.client.FlowExchangeError:无效响应:301
我client_secrets.json
目前看起来像这样:
keycloak中的相关客户端配置:
我http
在所有这些 url 中使用而不是https
,因为当我使用时https
Keycloak
说redirect_uri
是无效的。这似乎是这里的实际问题,因为 gitpod url 使用https
,但我不知道如何处理这个问题。我已经尝试了一些像这里描述的解决方案,但无法让它们工作。
相关部分路由:
其中部分standalone.xml
可能是相关的:
更新
按照Jan Garaj 的建议将 http url 更改为 https并设置OVERWRITE_REDIRECT_URI
我不再收到invalid response: 301
错误后:
现在我可以进入 keycloak 登录表单,但在登录时我现在得到:
oauth2client.client.FlowExchangeError:无效响应:401。
这些是提出的要求:
python-3.x - Python 从另一个全局对象构造一个可变全局对象
我有main.py
和app.py
。app.py
包含create_app()
返回app
对象。main.py
来电create_app()
。我必须在main.py
. 这个全局对象app
作为输入参数。这在 python 中对我来说似乎很复杂。当应用程序启动时,我如何可能实现这个全局对象构造?
具体来说,我正在使用flask_oidc
并且需要构造一个oidc = OpenIDConnect(app)
inmain.py
并使oidc
对象在其他控制器 .py 文件中可用。此oidc
对象将存储用户信息并验证用户是否已通过身份验证。
任何建议和见解都值得赞赏。
nginx - 在 EC2 上部署的 docker 中使用 flask_oidc 和 nginx 反向代理的烧瓶应用程序在使用 keycloak 进行身份验证后给出未授权错误
我有以下设置:
1:在 EC2 实例上运行的 Keycloak docker 容器。(我已将其临时配置为接受 http 连接)
2:我的 Flask 应用程序与 nginx 反向代理一起在另一个 EC2 实例上的 docker 中运行。
我在 keycloak 上创建了领域和客户端并配置了重定向 uri。
我能够让我的烧瓶应用程序到达 Keycloak 实例进行身份验证。
我添加from werkzeug.middleware.proxy_fix import ProxyFix
并app.wsgi_app = ProxyFix(app.wsgi_app)
让redirect_uri 工作。
但是,当重定向发生时,我收到“未授权”错误(我也可以在 nginx 日志中看到 401)。
我已经将 nginx 设置OVERWRITE_REDIRECT_URI
为OVERWRITE_REDIRECT_URI = 'https://authenticationdemo.mydomain/oidc_callback'
将带有端点 oidc_callback 的 https 请求转发到我的烧瓶应用程序路由/oidc_callback
(我没有实现自己的回调)。
我无法解决这个问题,因为我无法弄清楚回调哪里出错了。我可以通过 GET /oidc_callback?state=<...somevalue..>&session_state=<...somevalue>&code=<..somevalue...> 查看来自 nginx 的日志,但是在重定向之后这不起作用。
我都试过了
- 在重定向 uri 中使用 ip 地址
- 域名与我的证书相同,并使用 keycloak 在 EC2 实例上配置主机文件以指向带有烧瓶应用程序的 EC2 实例的正确 IP 地址
两者都不起作用。
我无法弄清楚在传回身份验证信息时是否出现问题,或者是否存在一些基本配置错误。
有人可以指出正确的方法吗?
我已经在其他相关问题中查找并尝试了信息:
Flask_oidc 在 Docker 容器中运行时给出 Errno 99 Cannot assign requested address when run
flask-oidc-redirect-uri-value-被覆盖-某处
flask-oidc-with-keycloak-oidc-callback-default-callback-not-working
(并阅读许多其他类似的)
我不是在寻找自定义回调。我只需要默认的回调行为,因为它没有反向代理。
python - 为什么来自 Flask-OIDC 扩展的访问令牌对 keycloak GET /users 端点无效?
我正在尝试从 keycloak 服务器访问领域用户列表,但我不明白为什么来自Flask-OIDC in-buildget_access_token()
方法的令牌对我不起作用。
当我如下所述使用请求中的令牌时,一切都很好:
但是当token = openid_connect.get_access_token()
我收到{"error":"HTTP 401 Unauthorized"}
这是我的 client_secrets.json 文件:
get_access_token()
来自方法的令牌:
由于某些明显的原因它不起作用吗?也许Flask-OIDC
使用密码grant_type 来获取令牌?我没有在OpenIDConnect
对象源代码中找到指定的grant_type,只是它将令牌保存在模块中的神秘g
对象中。flask
先感谢您!
keycloak - 使用 Flask-OIDC 验证公共令牌(概念问题)
我一直在尝试使用 keycloak 来保护我的 python 后端服务。我目前使用公共密钥斗篷客户端为前端建立了用户登录。Fir 测试,我获得了前端客户端的令牌,然后尝试使用 Flask-OIDC 在我的 python 代码中验证令牌。经过一周的努力,我仍然无法验证令牌。
我的概念混乱与客户有关。为了验证令牌,您必须使用机密或不记名 keycloak 客户端。我可以针对不记名客户端验证从公共客户端发出的令牌吗?如果不是,正确的方法是什么?
谢谢。
reactjs - React + Flask + Flask OIDC + Keycloak + Bearer Only
我正在努力使用烧瓶 oidc 和 keycloak 保护烧瓶 API 后端。我的项目包括一个 React 前端和一个烧瓶应用程序,作为受 Keycloak 服务器 v13.0.1 保护的 REST API。因此,我为前端创建了一个公共客户端,为后端创建了一个仅承载客户端,但我不断收到带有“需要令牌但无效消息”的 401。Flask 没有写任何关于错误原因的日志。我无法弄清楚我做错了什么,所以我希望你能帮助我。
这是 flask-oidc 的 client_secrets.json
这些是 flask-oidc 配置参数(它总是采用默认值)
这是令牌保护方法:
最后这是我为客户端配置的密钥斗篷:
python - 使用 redirect_to_auth_server() 重定向到 oAuth 提供程序时获取“KeyError:destination”
我想要一种使用flask-oidc激活和停用 OIDC 检查的方法。
使用@require_login
装饰器是个问题,因为它不能被停用。例如 :
当我被重定向到我的 oAUth 提供商时,这与 OIDC 配合得很好。但现在我想g_use_oidc
设置为 False 并@require_login
停止重定向呼叫。
为了实现这一点,我创建了一个装饰器来检查如下g_use_oidc
状态:
我应该能够像这样使用装饰器:
不幸的是,我从 OIDC 得到了这个堆栈跟踪: