CSOM не проходит проверку подлинности с помощью проверки подлинности с помощью форм - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть ферма SharePoint 2019, которая имеет 2 метода аутентификации: NTLM и Form. Если я подключаюсь через NTLM, используя этот код:

using (ClientContext context = new ClientContext("https://myserver"))
{
    context.ExecutingWebRequest += (object sender, WebRequestEventArgs e) =>
    {
        e.WebRequest.Headers.Remove("X-FORMS_BASED_AUTH_ACCEPTED");
        e.WebRequest.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
    };
    context.AuthenticationMode = ClientAuthenticationMode.FormsAuthentication;
    CredentialCache cache = new CredentialCache();
    NetworkCredential cred = new NetworkCredential("windows username", "windows pwd", "domain");
    cache.Add(new Uri(https://myserver), "NTLM", cred);
    context.Credentials = cache;

    var web = context.Web;
    context.Load(web.Lists);
    await context.ExecuteQueryAsync();
    return true;
}

Работает нормально. Если я попробую этот метод с Аутентификацией по форме:

using (ClientContext context = new ClientContext("https://myserver"))
{
    context.AuthenticationMode = ClientAuthenticationMode.FormsAuthentication;
    context.Credentials = new NetworkCredential("username", "password");

    var web = context.Web;
    context.Load(web.Lists);
    await context.ExecuteQueryAsync();
    return true;
}

, я получу 403, запрещено. Какой HTTP-заголовок я должен установить для запуска проверки подлинности формы вместо Windows?

...