Аутентификация 302 перенаправляет загрузку документа на sharepoint при использовании маркера oauth вместо старого файла cookie, созданного с помощью имени пользователя / пароля - PullRequest
0 голосов
/ 01 мая 2020

Я конвертирую работающий c# веб-запрос, который загружает документ на sharepoint, чтобы использовать токен на предъявителя вместо повара ie, и я получаю перенаправление 302 на ссылку аутентификации. генерация токенов успешно загружает файлы и читает папки. Я пытался выяснить, чего мне не хватает, чтобы загрузка работала безуспешно.

Я преобразовал различные вызовы на sharepoint из файлов cookie, сгенерированных с помощью аутентификации по имени пользователя / паролю, для использования токена, сгенерированного из сертификата .

основная часть моих вызовов на sharepoint работает нормально, но те, которые загружают документ на sharepoint, терпят неудачу с ответом 302, указывающим на ссылку аутентификации в теле ответа.

поток аутентификации использует клиентский контекст sharepoint следующим образом.

//Microsoft.SharePoint.Client.ClientRuntimeContext
public static void SetupRequestCredential(ClientRuntimeContext context, HttpWebRequest request)

ClientRuntimeContext.SetupRequestCredential(authenticationContext, request);

Когда authenticationContext представляет собой clientcontext, инстанцированный именем пользователя / паролем

authenticationContext = new ClientContext(siteUrl)   
       {
Credentials = new SharePointOnlineCredentials(legacyAuthentication.account
, legacyAuthentication.password.ToSecureString())
};

Но когда мы генерируем clientcontext, используя контекст, сгенерированный сертификатом (как следует)

// this is our goal to move away from needing a username/password
var authManager = new SPtools.AuthenticationManager();
        authenticationContext = authManager.GetAzureADAppOnlyAuthenticatedContext(siteUrl, clientId,
            tenantDomain,
            certPath,
            certificatePassword);

* следует отметить, что когда мы используем контекст, сгенерированный сертификатом, мы также присоединяем заголовок авторизации, установленный к токену носителя (я также пытался пропустить этот код безрезультатно)

эти запросы работают для различных запросов к Это правда, но когда мы пытаемся сохранить документ, мы получаем 302, перенаправляющую нас на ссылку для аутентификации.

это усугубляется, потому что существует множество документации по sharepoint, но я не смог найти то, что Непосредственно имеет дело с конвертацией через унаследованный путь с использованием токена oauth2 и обнаружением 302. Я чувствую, что тонул в документации, которая, как мне кажется, поначалу может оказаться полезной, что оказывается ложными следами.

- Спасибо за любую помощь!

функциональный веб-запрос имеет следующие заголовки перед вызовом (webRequest) GetResponseAsyn c

Expect: 100-continue
Content-Length: #filesize#
Host: #host#
X-FORMS_BASED_AUTH_ACCEPTED: f
Cache-Control: no-cache
Translate: F
Accept-Language: en-us
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Content-Type: multipart/form-data; charset=utf-8
Accept: */*
Cookie: #cookie generated from code#

неработающий веб-запрос имеет следующие заголовки

Expect: 100-continue
Content-Length: #filesize#
Host: #host#
Cache-Control: no-cache
Translate: F
Accept-Language: en-us
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Content-Type: multipart/form-data; charset=utf-8
Accept: */*
Authorization: Bearer #token generated from code#
...