簡體   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