我曾经使用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,因为这是一个现有的应用程序,如果可能的话,我不想把蓝图弄得这么乱。