Ich habe ein "Test" -Projekt erstellt, in dem ich ein .Net 4.6 WebApi verwende, das ich Authentifizierung mit ADFS integrieren möchte - ähnlich wie this post. Ich rufe die api aus einem Winkel Projekt und mit dem folgenden Code, den ich bin in der Lage, die Authorization-Header zu erhalten:WebApi und ADFS-Integration
string authority = ConfigurationManager.AppSettings["adfsEndpoint"].ToString();
string resourceURI = "https://localhost:44388/";
string clientID = "someguid";
string clientReturnURI = "http://localhost:55695/";
var ac = new AuthenticationContext(authority, false);
//This seems to be working as I am getting a token back after successful authentication
var ar = await ac.AcquireTokenAsync(resourceURI, clientID, new Uri(clientReturnURI), new PlatformParameters(PromptBehavior.Auto));
string authHeader = ar.CreateAuthorizationHeader();
//this fails with a 401
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:64038/api/Values");
request.Headers.TryAddWithoutValidation("Authorization", authHeader);
var response = await client.SendAsync(request);
return response ;
jedoch bei einem späteren Aufruf an meine ValuesController, die das Autorisieren Attribut verwendet, habe ich immer empfange eine 401-Unathorized-Antwort (obwohl ich den Authorization-Header übergebe). Ich bin mir nicht sicher, was ich vermisse.
Eine andere Sache zu beachten: Wenn ich aufgefordert werde, meine Anmeldeinformationen, bekomme ich den Dialog unten und nicht die typische ADFS-Login-Seite, die ich mit meinen normalen MVC-Apps, die Authentifizierung mit ADFS (ich bin mir nicht sicher, warum dies) passiert entweder).