[英]How I can add both Azure AD and non Azure AD tokens to the same .NET Core Api
[英]How can I use my Azure AD app from another tenant?
我正在开发一个本机应用程序,该应用程序必须显示用户所属的Office 365组。 为此,我将Microsoft Graph API称为需要身份验证。 我正在使用ADAL库。
所需的权限需要管理员同意。 一切对于租户中的用户都可以正常使用,但是当我尝试通过另一个租户的帐户进行身份验证时,它将无法正常工作。 它不断给出以下结果:
相关编号:9780ed24-9d24-4604-b8bf-28a02c2ea580
时间戳记:2017-04-14 12:05:45Z
AADSTS70001:在目录XXXXXXX.onmicrosoft.com中找不到标识符为'xxxxxxxx-xxx-xxx-xxxx-xxxxxxxxxxxx'的应用程序
即使我在第一次连接时使用管理员帐户。 我从未征求您的同意,并且该应用程序未在其他租户上注册。
该应用程序已注册为“本机”,因此应为多租户,并且我通过“ / 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;
}
代码内有问题吗?参数? 其他租户是否需要一些我不知道的“特殊天蓝色订阅”?
简而言之: 如何使它适用于其他租户?
编辑 :我试图手动将“提示= admin_consent”添加到请求,像这样:
AuthenticationResult authResult = authContext.AcquireToken(graphResource, clientID, redirectURI,PromptBehavior.RefreshSession, UserIdentifier.Any, "prompt=admin_consent");
但是它触发一个错误,指出“在ExtraQueryParameters中存在重复的查询参数'prompt'”
注册本机客户端应用程序时,这是新Azure门户中的一个已知问题。
当前(截至2017-04-14),这些文件已作为单租户应用程序创建。 由于Azure门户不会公开本机客户端应用程序的“多租户”切换,因此您需要更新应用程序清单或使用Azure AD PowerShell来执行此操作。
从清单中使应用成为多租户
使用Azure AD PowerShell使应用成为多租户
运行以下命令:
$appId = "<app ID>" $app = Get-AzureADApplication -Filter "appId eq '$appId'" Set-AzureADApplicatoin -ObjectId $app.ObjectId -AvailableToOtherTenants $true
那应该修补它。 请稍等,然后重试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.