我最近在多租户的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();
}
请注意,此应用在一个月的时间内一直运行良好。。只是更改了权限之后,这种情况才开始发生。
答案 0 :(得分:1)
这个问题的答案最终对我有所帮助:Why Azure AD fails to login non-admins in multi-tenant scenario?
由于我仅请求 应用程序权限,因此,Azure AD默认会始终在用户登录时始终征求同意。一旦我添加了一个已授权权限({{1 }),同意提示消失了。
在进行故障排除期间,在添加和删除它们的过程中,我一定不小心错过了此权限。