繁体   English   中英

如何使用其他租户的Azure AD应用程序?

[英]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来执行此操作。

从清单中使应用成为多租户

  1. 在Azure门户中,从本机客户端应用程序的设置刀片中,单击“ 清单”选项。

    在此处输入图片说明

  2. availableToOtherTenants值更新为true

    在此处输入图片说明

  3. 保存清单。

    在此处输入图片说明

使用Azure AD PowerShell使应用成为多租户

  1. 下载Azure AD PowerShell v2模块(AzureAD): https ://docs.microsoft.com/zh-cn/powershell/azure/install-adv2 ? view = azureadps-2.0
  2. 运行以下命令:

     $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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM