繁体   English   中英

尝试获取 MS Graph API 令牌时缺少用户的 ImmutableID(Windows 身份验证)

[英]ImmutableID of the user missing when trying to acquire a token for MS Graph API (Windows auth)

我正在开发一个 API,它使用 Microsoft Graph 客户端 SDK 对 Sharepoint 站点进行多次调用。

为了对调用 API 的用户进行身份验证,我使用集成的 Windows Provider 方法,代码非常简单:

var clientApp = PublicClientApplicationBuilder
    .Create(_apiSettings.Value.AzureClientId)
    .WithTenantId(_apiSettings.Value.AzureTenantId)
    .Build();

var token = clientApp.AcquireTokenByIntegratedWindowsAuth(new string[] { _apiSettings.Value.MicrosoftGraphApiScopeUrl })
    .ExecuteAsync().Result;

在本地调用包含此代码的方法时,它可以完美运行。 但是当我将应用程序部署到我们的测试服务器时,并通过与本地用户相同的用户使用 NTLM 身份验证,我遇到了这个错误:

Microsoft.Identity.Client.MsalUiRequiredException:AADSTS90020:SAML 1.1 断言缺少用户的 ImmutableID。

打印 HttpContext.User 的内容时,我看到连接到同一组的同一用户同时用于“在线”和本地版本。

我已经尝试添加这个 header,但它什么也没做:

var immId = new Dictionary<string, string>();
immId.Add("Prefer", "IdType=\"ImmutableId\"");

var token = clientApp.AcquireTokenByIntegratedWindowsAuth(new string[] { _apiSettings.Value.MicrosoftGraphApiScopeUrl })
    .WithExtraHttpHeaders(immId)
    .ExecuteAsync().Result;

我能做什么?

谢谢!

如果您的应用程序没有管理员同意该应用程序。您将获得MsalUiRequiredException

尝试将管理员同意添加到应用程序。

或者尝试添加租户管理员,在应用程序注册的 API 权限选项卡上选择授予/撤销{租户域} 管理员同意按钮。 有关详细信息,请参阅添加权限以访问您的 web API

有关更多详细信息,请参阅此文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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