Вопрос по http, c#, httpwebrequest, sharepoint-2010 – Использование WebRequest для получения файлов cookie для автоматического входа в Sharepoint Online с получением различных ошибок

0

Я следую этому руководству для удаленной аутентификации на Sharepoint Online, но делаю это на C #.

http://allthatjs.com/2012/03/28/remote-authentication-in-sharepoint-online/

Я могу получить SAML от STS без проблем, но, похоже, я не могу отправить этот токен на Sharepoint для получения файлов cookie для входа в систему. Ниже приведен мой код, извините за любые явные ошибки, я новичок в этом !

<code> //Send cookie to SPO. The token is from STS.
        byte[] spbyteArray = Encoding.UTF8.GetBytes(theToken);
        WebRequest sprequest = WebRequest.Create("https://login.microsoftonline.com/login.srf?wa=wsignin1.0&rpsnv=2&ct=1335885737&rver=6.1.6206.0&wp=MBI&wreply=https%3A%2F%2Fcamida.sharepoint.com%2F_forms%2Fdefault.aspx&lc=1033&id=500046&cbcxt=mai&wlidp=1&guest=1");
        sprequest.Method = "POST";
        sprequest.ContentLength = spbyteArray.Length;
        sprequest.ContentType = "application/x-www-form-urlencoded";
        sprequest.Headers.GetType().InvokeMember("ChangeInternal", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod, null, sprequest.Headers, new object[] { "Host", "mydomain.sharepoint.com" });
        Stream spdataStream = sprequest.GetRequestStream();
        spdataStream.Write(spbyteArray, 0, spbyteArray.Length);
        spdataStream.Close();

        //Get response from SPO
        WebResponse spresponse = sprequest.GetResponse();
        spdataStream = spresponse.GetResponseStream();
        StreamReader spreader = new StreamReader(spdataStream);

        // Read the content.
        string spresponseFromServer = spreader.ReadToEnd();
</code>

Если я использую URL в учебнике, я получаю 403 запрещено. URL, который я использую, это тот, на который он перенаправляет, когда яhttp://mydomain.sharepoint.com

Любая помощь и совет с благодарностью.

Ваш Ответ

2   ответа
1

что вы добавляете какие-либо файлы cookie, которые могут потребоваться. Если вы бросили свойWebRequest дляHttpWebRequestВы можете работать спеченье, Увидетьc # WebRequest с использованием файла cookie WebBrowser.

Кроме того, я бы познакомился с таким инструментом, какобманщик для проверки запросов и ответов, которые вы отправляете из браузера. Это позволяет вам точно видеть, что отправляется туда и обратно, так что вы можете попытаться дублировать / эмулировать запросы в C #.

Спасибо, Сет. Я использовал Firebug, но я начну использовать Fiddler по вашему совету. Я попробую этот актерский состав, добавлю токен как cookie в запрос и оставлю комментарий позже. еще раз спасибо Dan
При запросе от SharePoint вы должны установить User Agent, иначе он возвращает 403 This line; sprequest.UserAgent = "Mozilla / 5.0 (Windows NT 6.0; версия 12.0) Gecko / 20100101 Firefox / 12.0"; Это все, что потребовалось. Спасибо за вашу помощь. Я сам это сделаю, когда истечет 8 часов. Dan
3

иначе он возвращает 403 This line;

 sprequest.UserAgent = "Mozilla/5.0 (Windows NT 6.0; rv:12.0) Gecko/20100101 Firefox/12.0";

Это все, что потребовалось.

Похожие вопросы