问题
无法检索租户的displayName
什么是好的
我的应用程序是一个多租户网站。 我使用Open Id Connect对客户进行身份验证,并从ordre中的代码授予流程中获取访问令牌(例如 armToken )以运行此请求:
https://management.azure.com/tenants
获取声明客户的所有租户的列表。说它是租户。
这很好用。
出错的地方
然后我想获得有关所有租户的更多信息,因为它是显示名称。 所以我需要在租户:
上为每个租户运行此请求https://graph.windows.net/[tenantId]/tenantDetails?api-version=1.6
我使用这样的代码:
foreach (Tenant tenant in Tenants)
{
string graphToken = await
GetAuthorizationToken("https://graph.windows.net/", tenant.TenantId);
string json = await GetGraphRequest($"https://graph.windows.net/{tenant.TenantId}/tenantDetails? api-version=1.6", graphToken);
// I parse JSON to get my informations
}
我尝试了什么
问题可能在于 GetAuthorizationToken 方法,该方法无法检索正确的令牌。 我测试了所有 AcquireTokenAsync 签名,除了:
之外没有任何工作AcquireTokenAsync(string resource, ClientCredential clientCredential);
但收到的令牌仅适用于租户测试与用户声明中的TID匹配的情况。
根据租户我收到几条消息:
{“odata.error”:{“code”:“Authorization_RequestDenied”,“message”:{“lang”:“en”,“value”:“没有足够的权限来完成操作。”}} }
==>但我给了 Microsoft Grant
所有可能的权限或
{“odata.error”:{“code”:“Authorization_IdentityNotFound”,“message”:{“lang”:“en”,“value”:“无法建立调用应用程序的标识。“}}}
=>实际上,我没有声明作为标记
中的OID我的问题
我真的不知道自己能做些什么。
这应该是可能的,因为我可以看到它在这里工作:
https://github.com/projectkudu/AzureResourceExplorer/
但它不使用ADAL库。那么也许这是对该库的限制?
答案 0 :(得分:1)
如果用户使用azure广告帐户登录您的应用程序,使用azure ad graph api tenantDetails操作,您只能获取发出访问令牌的租户详细信息。否则,它将抛出错误:Invalid domain name in the request url
。
要获取与用户帐户关联的所有Azure AD实例的列表,您可以尝试使用Windows Azure Service Management API,请参阅my reply here。作为回应,您可以获取租户的displayName,domainName和ID。