Ich muss meine. Net Core API (. Net Framework) konfigurieren, ADFS 3.0 (2012) zu verwenden, um die Bearer-Token von unseren mobilen Clients zu validieren..net Core Api Authentifizierung mit ADFS 2012
Ich bin in der Lage, das access_token vom ADFS-Server zu erzeugen, und ich gebe es in der Authorization-Header.
Mein Problem ist in der API: Wie konfiguriere ich es, um den Benutzer zu validieren und zu autorisieren?
Ich suchte an vielen Orten und ich konnte keine definitive Methode finden, es zu tun.
Was habe ich versucht, so weit:
Gebrauchte IdentityServer4 (fehlgeschlagen, weil es JWT und ADFS verwendet bietet keine OpenID Versuchte UseOpenIdConnectAuthentication (gefunden Beispiel bei IdentityServer4) eine eigene Middleware ich eine andere Methode nicht verwenden können, ., ich OAuth2 unterstützen muß
Also, wie kann ich tun, es
Hier ist mein letzter Versuch:
var connectOptions = new OpenIdConnectOptions
{
AuthenticationScheme = "adfs",
SignInScheme = "idsrv.external", //IdentityServerConstants.ExternalCookieAuthenticationScheme,
SignOutScheme = "idsrv", //IdentityServerConstants.SignoutScheme,
AutomaticChallenge = false,
DisplayName = "ADFS",
Authority = $"https://{options.AdfsHostName}/adfs/oauth2",
ClientId = options.ClientID,
ResponseType = "id_token",
Scope = { "openid profile" },
CallbackPath = new PathString("/signin-adfs"),
SignedOutCallbackPath = new PathString("/signout-callback-adfs"),
RemoteSignOutPath = new PathString("/signout-adfs"),
ClaimsIssuer = $"https://{options.AdfsHostName}/adfs/services/trust",
//TokenValidationParameters = new TokenValidationParameters
//{
// ValidateIssuer = true,
// ValidIssuer = $"https://{options.AdfsHostName}/adfs/services/trust"
//},
};
app.UseOpenIdConnectAuthentication(connectOptions);
Ich bekomme eine sehr schnelle 401 auf jeden Anruf, mit einem gültigen Token. In der Tat, während ich die Verbindung im Konsolenfenster sehe, sehe ich kein anderes Protokoll im Roslyn Konsolenfenster bezüglich der Sicherheitsvalidierung.
Ich benutze derzeit ASP.Net Core 1.1.X, und wenn ich kann, würde ich vermeiden, zu .Net Core 2.0 zu verschieben, da wir zu spät im Projekt sind und es viele brechende Änderungen enthält ...
Fühlen Sie sich frei, nach mehr Informationen zu fragen, und ich werde alle guten Ratschläge zu schätzen wissen!