【问题标题】:Azure AD + Graph API: How to reconsent after new permissions?Azure AD + Graph API:新权限后如何重新同意?
【发布时间】:2018-01-30 13:44:22
【问题描述】:

我在 Azure AD 中有一个应用程序注册,它设置了一些 Graph API 委派权限。

应用程序只是 SharePoint 中的一个页面,它进行 Graph 调用,使用 ADAL.js 库进行身份验证。

我现在想在页面上对新的 Graph API 端点进行额外的 Graph 调用,因此我需要为应用程序分配额外的权限。我在 Azure AD 中设置此权限并保存。但是,从不会要求访问 SharePoint 页面的用户重新同意新权限,因此新的 Graph 调用失败并显示 401 Unauthorized 消息。

我已经尝试了许多不同的端点和权限,我确信我在应用程序中设置了正确的权限。

如何在应用程序权限更改时自动为用户显示同意对话框?

管理员同意不是一个选项。

【问题讨论】:

  • 您使用的是 Azure AD v1 还是 v2?
  • 抱歉,我不确定 - 我该如何检查?我正在使用新的 Azure 界面,如果这就是您的要求...
  • 我刚刚发现了一些有趣的事情:该应用出现在 aad.portal.azure.com 上,但没有出现在 apps.dev.microsoft.com 上。我不确定有什么区别,但这可能会回答您的问题。
  • 在这种情况下,您使用的是 Azure AD v1。让我稍后提出一个解决方案。

标签: azure azure-active-directory microsoft-graph-api adal azure-ad-graph-api


【解决方案1】:

我记得前段时间与 Azure AD 团队的一位成员讨论过这个问题,这是他当时的建议(尽管我从未尝试过,所以它可能行不通)。

基本上他的建议是,当您收到 Unauthorized (401) 错误时,您将用户再次重定向到 Azure AD 登录,即再次遵循 OAuth 授权流程,但在登录 URI 中包含 prompt=consent。这将向用户显示具有最新权限的同意页面。用户同意最新权限后,您可以将用户重定向回您的应用程序。您可能会发现此链接有助于理解 propmpt 参数的不同值:https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-openid-connect-code

再一次,我没有亲自尝试过,所以它可能不起作用。如果没有,请告诉我,我将删除我的答案。

【讨论】:

  • 谢谢,这是有道理的。我会试一试,然后回复你。
  • 这种方法应该有效 - 让我们知道。如果您使用 v2 端点进行身份验证,此过程会变得稍微容易一些,因为它支持“增量同意”。您仍然需要处理Unauthorized (401),但您只需向授权端点发出请求,请求您需要的额外范围 - 这将自动重新提示最终用户重新同意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
  • 2018-08-28
相关资源
最近更新 更多