2016-09-27 1 views
0

ich brauche, um den Auth-Header für meine http Web-Anfrage mit der AuthenticationResult ich von AuthenticationContext erhalten setzen:Wie httpwebrequest Authentication Header mit Authenticationresult

AuthenticationContext authContext = new AuthenticationContext("http://blabla/token"); 

Task<AuthenticationResult> resultTask = authContext.AcquireTokenAsync(
       "http://blabla/service", 
       "SomeGuid", 
       new Uri("http://authlogin"), 
       new Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters(PromptBehavior.Auto, false)); 

resultTask.Wait(); 
AuthenticationResult result = resultTask.Result; 
HttpWebRequest request = WebRequest.CreateHttp("http://MyApi/method"); 
//Set headers for request 

Ich brauche meine das Authentifizierungsergebnis an den Header zu übergeben von anfordern. Ich weiß, was ich tun kann

request.Headers[HttpRequestHeader.Authorization] = //something 

Ich weiß nur nicht, was das etwas sein sollte. Jede Hilfe wird geschätzt. Danke

Antwort

0

Here ist ein Wiki-Artikel über grundlegende HTTP-Authentifizierung, die in der Kopfzeile übergeben wird.

Der Einfachheit halber hier ist ein Code, der die Grund Auth-Token implementiert:

string auth = string.Format("{0}:{1}", userName, password); 
string enc = Convert.ToBase64String(Encoding.ASCII.GetBytes(auth)); 
string cred = string.Format("{0} {1}", "Basic", enc); 
reqest.Headers[HttpRequestHeader.Authorization] = cred; 

Beachten Sie, dass dies durch die request.Credential Einstellung ersetzen können, sondern Ihre eigenen Header-Wert der Konstruktion. Dies macht den Code sauberer, jedoch wird Ihre Anfrage den Auth-Header nicht übergeben, AUSSERDEM der Server mit einem Auth-Fehler (401) antwortet, so erzeugt dieser Ansatz mehr Netzwerkverkehr an gesicherten Endpunkten.

+0

Ich habe das gesehen. Wie würde ich in diesem Fall das AuthenticationResult von meiner Frage in etwas wie cred konvertieren? – SKLAK

+0

Ich entschuldige mich, diesen Teil der Frage habe ich verpasst. Ich glaube nicht, dass es eine Möglichkeit gibt, das Passwort zu erhalten, da dies alle Arten von Sicherheitsproblemen öffnen würde, aber Informationen über den Benutzer können aus der AuthenticationResult.UserInfo extrahiert werden. Was Sie damit machen, hängt davon ab, welche Anforderungen Sie an die API stellen. Wenn Sie es zu einem internen Benutzer auflösen müssen, ist eine Benutzerzuordnung erforderlich. – Theo

Verwandte Themen