У меня есть веб-API, который вызывается угловым веб-приложением через проверку подлинности Windows.Мне нужно использовать учетные данные, которые передаются через проверку подлинности Windows, чтобы получить доступ к точке доступа API.
Ниже приведен пример кода, который у меня сейчас есть.(Обратите внимание, что ... символизирует, где я пропустил некоторый код, есть еще несколько случаев, и я не верю, что код того, что делается на Sharepoint, необходим для этого.)
using Microsoft.SharePoint.Client.Utilities;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Web.Http;
using System.Security.Claims;
using Microsoft.SharePoint.Client;
using System.Web;
using SP = Microsoft.SharePoint.Client;
using System.Security.Principal;
using System.Net;
...
public static List<SPDocument> GetSPDocumentsById(int itemId)
{
using (ClientContext context = new ClientContext("https://...")
{
//This I believe is giving me the IIS user Identity, and not the Windows
//credentials that the user is logging into the API with.
context.Credentials = CredentialCache.DefaultNetworkCredentials;
...
}
}
Моя проблема очень похожа на проблему в этом вопросе: Идентификация пула приложений IIS для использования идентификатора Windows-пользователя вошедшего в систему , но действия по ее устранению не устраняют мою проблему.Внутри контроллера, если я проверяю значение HttpContext.Current.User.Identity.Name
, я получаю ожидаемое имя пользователя, но если я проверяю WindowsIdentity.GetCurrent().Name;
, я получаю учетную запись пользователя IIS.Если бы вызов WindowsIdentity.GetCurrent().Name;
возвратил учетную запись Windows, вошедшую в систему, это решило бы мою проблему.