python - Authlib 与 Azure AD - “iss”声明的声明验证错误
问题描述
我曾经使用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 完成整个登录并询问权限。client.parse_id_token()
但是,一旦通过,Authlib 本身会在方法中引发错误,同时iss
从返回的 ID 令牌验证声明。
引发的错误是authlib.jose.errors.InvalidClaimError: invalid_claim: Invalid claim "iss"
. 使用 Flask 的调试器并阅读_validate_claim_value()
函数的源代码,我确认它正在尝试与https://login.microsoftonline.com/{tenantid}/v2.0'
相同的 URL 进行比较,但{tenant}
替换为固定的 GUID(根据https://docs.microsoft.com/en-us上的文档/azure/active-directory/develop/id-tokens)。
我的猜测是我的应用程序应该以某种方式在这里进行替换,然后让验证进行,但是,我不知道该怎么做。问题是:在验证声明之前,Authlib 中是否有一种好方法可以做到这一点?
PS:我已经看到并知道loginpass,但想先探索一下使用股票 Authlib,因为这是一个现有的应用程序,如果可能的话,我不想把蓝图弄得这么乱。
解决方案
我无法评论 Authlib,因为那是第 3 方库。但是是的,您需要有https://login.microsoftonline.com/{tenantid}/v2.0格式的 iss 声明。
需要注意的是,Microsoft为 Python 提供 Microsoft Authentication Library (MSAL)作为官方 SDK,以与Microsoft Identity 平台(包括 Azure AD)集成。
推荐阅读
- delphi - 为什么我在 idHTTPServer 的 ServeFile 上出现异常?
- python - 如何检查字符串是否包含子字符串的所有字符?
- javascript - 如何使用 css 变换创建循环过渡动画
- c# - 下载文件配置错误无法加载文件或程序集
- c++ - 为arm交叉编译opencv:c++:错误:无法识别的命令行选项'-mthumb';你的意思是“-mtbm”吗?
- python - 为什么三次应用相同的通道会产生黑白图像?
- javascript - 尝试使用令牌验证用户但 emailAddressVerificationToken 未定义
- google-apps-script - 使用谷歌应用脚本获取电子邮件大小
- java - 用于生成 JavaDoc 的 Java 自定义注释和文档处理器
- sitecore - 删除站点核心页面以使 301 重定向工作