使用 Azure AD 的身份验证 - 声明"iss"验证错误



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

引发的错误是authlib.jose.errors.InvalidClaimError: invalid_claim: 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 中是否有一种好方法可以做到这一点?

PS:我已经看到并知道登录通行证,但想先使用库存Authlib进行探索,因为这是一个现有的应用程序,如果可能的话,我不想弄乱蓝图。

我无法评论Authlib,因为它是第三方库。但是,是的,您需要以 https://login.microsoftonline.com/{tenantid}/v2.0 格式提供 iss 声明。

在这一点上,Microsoft提供了Microsoft Python 身份验证库 (MSAL( 作为官方 SDK,以便与Microsoft标识平台(包括 Azure AD(集成。

最新更新