Laden...

Sharepoint Authentifizierung im WebBrowserControl

Erstellt von trib vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.202 Views
T
trib Themenstarter:in
708 Beiträge seit 2008
vor 7 Jahren
Sharepoint Authentifizierung im WebBrowserControl

Hallo zusammen,

ich habe ein WebBrowser-Control, welches Dokumente von einem Sharepoint-Online anzeigen soll.
Die integrierte Windows-Authentifizierung funktioniert daher leider nicht.

Navigiere ich die URL an, erhalte ich ein "401 UNAUTHORIZED". Öffne ich die URL im IE und Authentifiziere mich dort mit dem O365-Account, funktioniert auch anschließend die Anzeige im Control (für diese Session).

Daher versuche ich gerade die Authentifizierung dem WebBrowser-Control mit zu geben:


webBrwsr.Navigate(url, string.Empty, null, CredentialHeader(UserName, Password));

        public static string CredentialHeader(string username, string password)
        {
            return "NTLM " + Convert.ToBase64String(Encoding.ASCII.GetBytes(username + ":" + password)) + Environment.NewLine;
        }

Die Seite gibt nun keine Meldung mehr aus, bleibt aber weiß.
NTLM ist auch was der Fiddler aufzeichnet, wenn ich per IE auf die URL zugreife.

Was problemlos funktioniert sind sowohl ein WebClient, als auch ein WebRequest:


var client = new WebClient { Credentials = new NetworkCredential(username, password) };
var response = client.DownloadString(url);
MessageBox.Show(response, "Response");

WebRequest request = WebRequest.Create(url);
request.Credentials = GetCredential(url, username, password);
request.PreAuthenticate = true;
var response = request.GetResponse();
MessageBox.Show(response.ResponseUri.ToString(), "ResponseUri");


        private CredentialCache GetCredential(string url, string username, string password)
        {
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
            var credentialCache = new CredentialCache();
            credentialCache.Add(new Uri(url), "NTLM", new NetworkCredential(username, password));
            return credentialCache;
        }

Im Internet lese ich immer von einem gegenteiligem Verhalten und wie man den CookieContainer vom WebBrowser an den Request weiter reichen kann.

Die Seite ist im IE als Vertrauenswürdig hinterlegt.

Im Fiddler kann ich sehen, dass es 2 Anfragen/Antworten für die Authentifizierung braucht. Quasi ein kleines PingPong. Kann das ein Problem sein?
Auch wenn ich den Header aus dem Fiddler 1:1 in den Header an das WebControl übergebe, bleibt die Seite weiß.

Hat jemand sowas in der Art bereits umgesetzt?