问题标签 [authlib]
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.
python - Authlib 与 Flask 管理授权,无需重定向
我正在尝试使用 Flask OAuth 客户端连接到使用 Microsoft Azure 托管的服务器。
为了获得授权码,除了 response_type、client_id 和 state 之外,我还需要 POST 到 authorize_url、正文中的用户名和密码。然后服务器在响应中返回授权码。
关于如何使它工作的任何想法?
我尝试了以下多种变体,但是在阅读文档时,我无法确定发送用户名、密码和从授权服务器检索代码的方法:
python - ImportError:无法从“oauthlib.common”导入名称“bytes_type”
我正在将气流从 1.10.5 更新到 1.10.10。使用 google OAuth 时,我在网络服务器中收到以下错误
此错误是由于依赖项不匹配造成的。Airflow 1.10.10
正在安装oauthlib==3.1.0
andFlask-OAuthlib==0.9.5
中3.1.0 version of oauthlib
,没有 bytes_type 而 Flash-OAuthlib 期望它存在。
考虑到lepture已归档flask-oauthlib并创建了authlib,我在lepture 的airflow 中看到了有关此更改的PR https://github.com/apache/airflow/pull/6140/files但它没有被合并并被标记为陈旧机器人
有人在 Airflow 1.10.10 中遇到过这个问题吗?我已经通过更改inrequirement.txtoauthlib version to 2.1.0
解决了这个问题
authlib - 来自 HTTPX 的 Authlib ConnectTimeout 与 Starlette OAuth 客户端
我有一个已知问题,在尝试授权访问令牌时,DNS 解析会导致超时。Starlette OAuth 客户端依赖 HTTPX 处理异步请求,HTTPX 的已知超时为 5 秒。
有没有办法让我将 Authlib 的 OAuth 客户端配置为比 5 秒更长的超时时间?
python - MismatchingStateError: mismatching_state: CSRF 警告!请求和响应中的状态不相等
这让我非常抓狂,让我无法进行本地开发/测试。
我有一个使用 authlib 的烧瓶应用程序(仅限客户端功能)。当用户点击我的主页时,我的烧瓶后端会将他们重定向到 /login,然后再重定向到 Google Auth。Google Auth 然后将它们发布回我的应用程序的 /auth 端点。
几个月来,我一直遇到 authlib.integrations.base_client.errors.MismatchingStateError: mismatching_state: CSRF 警告的临时问题!请求和响应中的状态不相等。感觉就像一个 cookie 问题,大多数时候,我只是打开一个新的浏览器窗口或隐身或尝试清除缓存,最终,它有点工作。
但是,我现在在 docker 容器内运行完全相同的应用程序,并且在某个阶段它正在工作。我不知道我做了什么改变,但是每当我浏览到 localhost/ 或 127.0.0.1/ 并通过身份验证过程(每次清除 cookie 以确保我没有自动登录)时,我都会不断被重定向回 localhost /auth?state=blah blah blah 我遇到了这个问题:authlib.integrations.base_client.errors.MismatchingStateError: mismatching_state: CSRF 警告!请求和响应中的状态不相等。
我认为我的代码的相关部分是:
我将非常感谢任何帮助。
当我在本地运行时,我从以下内容开始:
当我在 docker 容器中运行时,我从以下内容开始:
authlib - OIDC 提供程序烧瓶。密码凭证授予
有人知道 authlib python 库是否支持Flask OIDC 提供程序的资源所有者密码凭据授予流程?
在文档中只出现代码、隐式和混合流。
https://docs.authlib.org/en/latest/flask/2/openid-connect.html
如果是这样,请您告诉我您如何实现该功能?
python - authlib OAuth 客户端与 Flask 应用程序一起使用的更好示例?
我的 Flask 应用程序同时使用了密码和代码授权流程,但这一切都感觉有点笨拙。
我发现在 oauth.register 中使用fetch_token
andupdate_token
来处理令牌超时非常令人困惑,而且我没有发现错误处理的示例。有很多巧妙的隐含的东西正在发生,但文档很密集,至少对不太熟悉 OAuth 的我来说是这样。也许我没有以正确的方式阅读文档?
只有两个细节:我fetch_access_token
用于密码授予,但这没有记录在Flask 部分下的APIfetch_token
中,显然它既是回调函数,也是某些客户端的 API 的一部分,但不是其他客户端。
我可以在这里逐个问题地讨论我猜的每个主题,但如果有人能给我指出一个更充实的现实世界的例子,那就更好了。
欢迎任何建议。
flask - 更改 Authlib 中的 authenticate_token 以使用授权服务器验证令牌
从文档中,如果我正确理解了流程,则 authenticate_token 方法会检查数据库中是否存在相同的令牌并返回一个令牌。
我的问题是,是否可以在授权服务器的帮助下验证 token_string,而不是针对数据库进行检查?
https://docs.authlib.org/en/latest/flask/2/resource-server.html
python - 使用带有烧瓶的 Authlib 获取和存储刷新令牌
我正在使用 authlib https://github.com/lepture/authlib获取用户对其数据的身份验证,因此每日离线调度程序可以代表用户下载一些数据。
我首先注册客户端:
在稍后阶段,我使用以下方法检索令牌:
当我打印令牌时,我看到 Google 没有返回我需要存储在数据库中以供离线使用的刷新令牌:
我可以更改使用 access_type = offline 注册客户端的方式,以便让 Google 知道我也需要刷新令牌吗?如何获取和存储刷新令牌?
python - 可以在 authlib 中使用 POST 和 json 正文请求 oAuth 令牌吗?
我的 oAuth2 服务要求我不是通过 GET 请求访问令牌,而是通过 POST 请求并在 JSON 正文中发送 client_id、client_secret 和 token_endpoint。
根据文档,authlib
似乎支持 POST 身份验证请求。但是,以下代码仍然返回“无效请求”(而使用邮递员手动形成的请求成功):