我正在开发一个必须显示用户所属的Office 365组的本机应用。为此,我调用了需要身份验证的Microsoft Graph API。我正在使用ADAL库。
所需权限需要管理员同意。 对于来自我的租户的用户来说,一切正常,但是当我尝试使用另一个租户的帐户进行身份验证时,它无法正常工作。它不断给出这个结果:
相关ID:9780ed24-9d24-4604-b8bf-28a02c2ea580
时间戳:2017-04-14 12:05:45Z
AADSTS70001:带有标识符&x; xxxxxxxx-xxx-xxx-xxxx-xxxxxxxxxxxx'的应用程序找不到目录XXXXXXX.onmicrosoft.com
即使我在第一次连接时使用管理员帐户。我从未被要求获得同意,并且该应用程序未在其他租户上注册。
该应用程序已注册为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订阅'我不知道?
简而言之:如何让其他租户使用它?
修改:我尝试手动添加"提示= admin_consent"对于请求,像这样:
AuthenticationResult authResult = authContext.AcquireToken(graphResource, clientID, redirectURI,PromptBehavior.RefreshSession, UserIdentifier.Any, "prompt=admin_consent");
但是它会触发一个错误,说明有一个"重复的查询参数'提示'在extraQueryParameters"
答案 0 :(得分:4)
注册本机客户端应用程序时,这是新Azure门户中的一个已知问题。
这些目前(截至2017-04-14)被创建为单租户应用程序。由于Azure门户网站没有公开"多租户"切换到本机客户端应用程序,您需要更新应用程序清单或使用Azure AD PowerShell执行此操作。
从清单中制作应用程序多租户
在Azure门户中,从本机客户端应用程序的设置刀片中,单击清单选项。
将availableToOtherTenants
值更新为true
。
保存清单。
使用Azure AD PowerShell制作应用程序多租户
运行以下命令:
$appId = "<app ID>"
$app = Get-AzureADApplication -Filter "appId eq '$appId'"
Set-AzureADApplicatoin -ObjectId $app.ObjectId -AvailableToOtherTenants $true
应该修补它。稍等一下,然后再试一次。