【发布时间】:2017-09-10 14:10:23
【问题描述】:
我正在开发一个本机应用程序,该应用程序必须显示用户所属的 Office 365 组。为此,我调用了需要身份验证的 Microsoft Graph API。我正在使用 ADAL 库。
所需的权限需要管理员同意。 我的租户的用户一切正常,但是当我尝试使用另一个租户的帐户进行身份验证时,它不起作用。它不断给出这个结果:
相关 ID:9780ed24-9d24-4604-b8bf-28a02c2ea580
时间戳:2017-04-14 12:05:45Z
AADSTS70001:在目录 XXXXXXX.onmicrosoft.com 中找不到标识符为“xxxxxxxx-xxx-xxx-xxxx-xxxxxxxxxxxx”的应用程序
即使我在第一次连接时使用管理员帐户。从未征求我的同意,并且该应用未在其他租户上注册。
应用程序注册为 Native,所以它应该是多租户的,我在权限中将“/common”作为租户传递。
我还尝试在另一个租户上注册一个具有相同规格的应用程序,并在权限上给予管理员同意,并且效果也很好。
这是我检索访问令牌的方法:
private static string GetAccessToken()
{
AuthenticationContext authContext = new AuthenticationContext(authority);
AuthenticationResult authResult = authContext.AcquireToken(graphResource, clientID, redirectURI, PromptBehavior.RefreshSession);
var accessToken = authResult.AccessToken;
return accessToken;
}
是不是代码有问题?参数有问题?其他租户是否需要一些我不知道的“特殊 Azure 订阅”?
简而言之:我如何让它为其他租户工作?
编辑:我尝试手动将“prompt=admin_consent”添加到请求中,如下所示:
AuthenticationResult authResult = authContext.AcquireToken(graphResource, clientID, redirectURI,PromptBehavior.RefreshSession, UserIdentifier.Any, "prompt=admin_consent");
但它会触发一个错误,提示“extraQueryParameters 中存在重复的查询参数'提示'”
【问题讨论】:
-
能否包含错误消息中的 CorrelationId 和 Timestamp?
-
@PhilippeSignoret 是的,完成。
-
您是如何创建本机客户端应用程序的?什么界面?
-
@PhilippeSignoret 这是一个 .net winform 应用程序。
-
@PhilippeSignoret 哦,好的,对不起。我使用了 Azure 门户 portal.azure.com,你是这个意思吗?
标签: .net azure multi-tenant microsoft-graph-api adal