如何允许非管理员用户通过OAuth2.0对不允许用户代表他们同意应用的租户进行身份验证?

joh*_*n2x 5 python oauth-2.0 azure-active-directory

我们有一个使用Office365 OAuth注册和验证用户身份的应用程序(通过allauth.socialDjango库).

问题是,当Microsoft/Azure租户配置为限制非管理员用户"同意代表他们访问公司数据的应用程序"时,用户无法注册和登录.

我们试图通过https://login.microsoftonline.com/{tenant_name}/adminconsent和授予管理员同意https://login.microsoftonline.com/{tenant_name}/oauth2/v2.0/authorize?prompt=admin_consent.虽然我们的管理员用户能够成功注册和授予权限(并且还能够检索可用于模拟租户中任何用户的令牌),但个人用户仍然无法注册/登录我们的应用程序,因为他们不允许完成OAuth流程.他们刚刚遇到以下页面:在此输入图像描述

我们如何允许非管理员用户在限制这样做时使用OAuth登录?

PS我们正在使用Microsoft Graph API

小智 6

看起来您可能仍需要对应用程序本身进行管理员同意(您在问题中共享的URL不包含应用程序ID).你可以尝试使用类似这样的URL对应用程序进行管理员同意:https://login.windows.net/common/oauth2/authorize?response_type=code&client_id={0}&resource={1}&redirect_uri={2}&prompt=admin_consent其中:

  • {0} =您的客户ID
  • {1} =您要授予权限的范围
  • {2} =重定向URI(注意:仅强制管理员同意,技术上不必存在,因为当我们重定向到它时,已经发生了同意)

一旦您获得了应用程序本身的管理员同意,个人用户应该能够登录而无需经过任何同意流程.

  • 为了澄清,`resource`参数需要设置为`https:// graph.microsoft.com`.而且,一旦授予管理员同意,请确保在授权非管理员用户时不要**指定`prompt = consent`,否则他们将始终获得页面同意,即使在管理员同意后仍然会失败. (2认同)