python - Authlib 与 Azure AD - "iss"声明的声明验证错误

标签 python azure authlib

我曾经使用Flask-OAuthlib,但由于不再支持它,我已切换到 Authlib与 flask 。我将 OpenID Connect 支持与 OpenID 配置链接结合使用(与此示例几乎相同: https://github.com/authlib/demo-oauth-client/blob/master/flask-google-login/app.py )。它与 Google 完美配合,但是,我在使用 Azure AD 时遇到问题。我已设置好一切,流程运行,Azure 完成整个登录并请求权限。但是,一旦通过,Authlib 本身会在验证返回的 ID token 中的 iss 声明时,在 client.parse_id_token() 方法中引发错误。

引发的错误是authlib.jose.errors.InvalidClaimError:invalid_claim:无效声明“iss”。使用 Flask 的调试器并阅读 _validate_claim_value() 函数的源代码,我确认它正在尝试比较 https://login.microsoftonline.com/{tenantid}/v2.0 ' 到相同的 URL,但将 {tenant} 替换为固定 GUID(根据 https://learn.microsoft.com/en-us/azure/active-directory/develop/id-tokens 上的文档)。

我的猜测是我的应用程序应该以某种方式在这里进行替换,然后让验证进行,但是,我不知道该怎么做。问题是:在 Authlib 中是否有一种好方法可以在验证声明之前执行此操作?

附注:我已经看到并知道 loginpass ,但想首先使用 Stock Authlib 进行探索,因为这是一个现有的应用程序,如果可能的话,我不想用蓝图搞乱那么多。

最佳答案

我无法对 Authlib 发表评论,因为它是第 3 方库。但是,是的,您需要在 https://login.microsoftonline.com/{tenantid}/v2.0 中拥有 iss 声明。格式。

就此而言,Microsoft 提供了 Microsoft Authentication Library (MSAL) for Python作为官方 SDK 与 Microsoft Identity platform 集成(包括 Azure AD)。

关于python - Authlib 与 Azure AD - "iss"声明的声明验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62674426/

相关文章:

python - 使用 Qthread 时的信号槽问题

azure - 在 Azure 数据工厂数据映射事件中使用参数

powershell - VSTS Azure PowerShell 任务 SQL 防火墙规则

oauth-2.0 - 通过Authorization Code从lepture/Authlib获取Refresh Token

python - Caffe:从 Python 读取 LMDB

python - 如何从 pyspark 删除数据帧来管理内存?

linux - 重置 Azure 资源管理器 Ubuntu VM 密码

flask - Authlib客户端错误: State not equal in request and response

authlib - 运行时错误: Missing "jwks_uri" in metadata for flask and Azure AD authlib

Python - 无法更改类内项目的值