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

标签 python oauth-2.0 azure-active-directory

我们有一个应用程序使用 Office365 OAuth 来注册和验证用户(通过 allauth.social Django 库)。

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

我们已尝试通过 https://login.microsoftonline.com/{tenant_name}/adminconsenthttps://login.microsoftonline.com/{tenant_name 授予管理员同意}/oauth2/v2.0/authorize?prompt=admin_consent。尽管我们的管理员用户能够成功注册并授予权限(并且还能够检索可用于模拟租户中任何用户的 token ),但个人用户仍然无法注册/登录我们的应用程序,因为不允许他们完成 OAuth 流程。他们刚刚遇到以下页面:enter image description here

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

附言我们正在使用 Microsoft Graph API

最佳答案

看起来您可能仍需要对应用本身进行管理员同意(您在问题中共享的 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(注意:为了强制管理员同意,这在技术上并不一定存在,因为当我们重定向到它时,同意已经发生)

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

关于python - 如何允许非管理员用户通过 OAuth2.0 为不允许用户代表他们同意应用程序的租户进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45631145/

相关文章:

python - Conda软件包需要矛盾的Numpy版本

authentication - 带有 Client_Id 和 Client_Secret 的 OAuth2 密码授予类型

authentication - OAuth2 : Resource Owner OpenID Grant?

azure - 无法在 Azure 门户中创建 AAD B2C Yahoo OpenID Connect

python - 使用代理集成通过 API 网关触发 AWS Lambda

python - Numpy "double"-广播 - 有可能吗?

python - Kaggle 数据集到 jupyter notebook

java - Microsoft exchange - IMAP OAuth2 With client credentials

php - 如何使用 PHP 验证 Azure 广告 b2c token ?

java - SSO 中的图形 API 在 Azure AD 中不起作用