【问题标题】:How to fix " AADSTS90094: This application requires application permissions to another application" error after giving admin consent如何在给予管理员同意后修复“AADSTS90094:此应用程序需要对另一个应用程序的应用程序权限”错误
【发布时间】:2019-03-28 19:52:21
【问题描述】:

我最近在我的多租户 Azure AD 应用程序中请求了新的应用程序权限,以便我可以访问 Graph API。我正在使用 adal.js 对 Web 应用程序中的用户进行身份验证,而对 Graph 的实际请求是在使用 adal-node 和证书的节点服务器上发出的。

新权限有效。我可以使用应用程序权限访问 Graph,并且节点服务器没有任何问题。

问题在于,现在每当管理员登录网络应用程序(使用 `adal.js)时,无论他们同意多少次,他们都会看到同意屏幕。非管理员用户在登录时会看到“需要管理员批准”屏幕,从而完全阻止他们登录。

我已经在不同的租约中进行了尝试,结果相同。我还尝试通过azure.portal.com 批准权限并将应用程序完全从租户中删除并再次批准。

我也尝试过取消新权限并恢复为旧权限。无论如何,用户都会点击“需要管理员批准”屏幕。

用户登录代码

public login(): void {
  this.adalContext.login();
}

管理员登录代码

public adminLogin(): void {
  this.adalContext.config.displayCall = (urlNavigate) => {
    let url = urlNavigate + "&prompt=admin_consent";
    this.adalContext.promptUser(url);
  };
  this.adalContext.login();
}

需要明确的是,这个应用已经运行了一个多月。只是在我更改了权限后才开始发生这种情况。

【问题讨论】:

  • @RohitSaigal 我认为这是指我请求许可的 Microsoft API。无论如何,我在另一个 StackOverflow 问题中找到了答案,并将其发布在下面。
  • 好吧有道理..我看到你几乎同时发布的答案后就把它拿出来了..

标签: permissions azure-active-directory multi-tenant adal adal.js


【解决方案1】:

这个问题的答案最终帮助了我:Why Azure AD fails to login non-admins in multi-tenant scenario?

由于我请求应用程序权限,Azure AD 默认在用户登录时始终请求同意。一旦我添加了一个委派权限 (Microsoft.Graph.User.Read) ,同意提示消失。

在我的故障排除过程中添加和删除权限时,我一定是不小心错过了此权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2022-11-04
    • 2011-11-12
    相关资源
    最近更新 更多