当我尝试获取其中一个API的访问密钥时,我收到了错误消息。 " AADSTS65001:用户或管理员未同意使用带有ID' {GUID}'
的应用程序我首先尝试在登录期间提示=同意,认为我在登录期间未获得新的同意。我收到以下错误。 " AADSTS65005:应用程序' {GUID}'要求访问已删除或不再可用的资源的权限。联系应用程序供应商。" 我删除了prompt = consent并开始摆弄Azure中的权限,现在我遇到了同样的错误。
我改变了一切,但我仍然收到错误,但这只发生在我的用户身上。其他人仍然可以毫无问题地登录。
所以我的问题实际上分为两部分:
尝试获取API的访问令牌时的第一个错误。 不知何故,我需要提示用户同意,但我使用的是adal.js,它使用隐形的iframe静态检索键。我想在用户登录Web应用程序时同意。 这可能吗?
我的用户无法再登录我们的网络应用。其他人都可以,之前有人遇到过这个吗?
该产品是使用React编写的SPA Web应用程序,我们使用adal.js(adal-vanilla)作为对Azure广告进行身份验证的库。
更新 终于搞定了一些东西。不是所有的方式,但至少它是一个开始。
现在的问题是来自其他租户的用户未获得同意提示访问API。
答案 0 :(得分:0)
可以使用prompt = admin_consent修复同意。
至于第二个问题,您可以将您的Web应用程序添加为API的已知客户端应用程序。当用户对Web应用程序进行身份验证时,这将允许同时同意。
为此,请在Azure Portal的Azure AD刀片中找到API应用程序注册。然后打开它的清单(应用刀片上有一个Manifest按钮)。应该有一个" knownClientApplications"属性。在阵列中添加Web应用程序的客户端ID 并保存清单。
E.g:
"knownClientApplications": [
"bda6ffff-ffff-ffff-ffff-ffff8bf8c57f"
],
答案 1 :(得分:0)
不知怎的,问题得到解决,我不是百分之百确定如何或为什么但是如果有人发现自己处于类似情况,我会采取以下步骤来解决问题:
"availableToOtherTenants": true,
"knownClientApplications": [
"{client app application id}"
],