2017-06-28 4 views
1

Irgendwelche Ideen, warum dies passieren kann? Unsere IT hatte von Version 3 auf Version aktualisiert ADFS 4. Nach dem Update unserer ASP.NET Core-Anwendung folgende Fehler wird:ADFS 4.0: Ungültige Client-Anmeldeinformationen erhalten

Fehlercode:

"Unhandled remote failure. (OAuth token endpoint failure: Status: BadRequest; 
Body: {\"error\":\"invalid_client\",\"error_description\":\"MSIS9623: Received invalid Client credentials. The OAuth client is not configured to authenticate using passed in client credentials.\"};)" 

Die Anfrage:

https://.../adfs/oauth2/authorize?client_id=d...4c&scope=&response_type=code&redirect_uri=https%3A%2F%2Flocalhost%3A44377%2F&state=CfDJ8...Og&resource=https%3A%2F%2Flocalhost%3A44377&redirect_url=https%3A%2F%2Flocalhost%3A44377 

Ich habe es auch versucht:

  • "grant_type" = "authorization_c ode "

Jemand eine Idee, was die" Client-Anmeldeinformationen "in diesem Zusammenhang bedeutet?

+0

ist dieses 'ADFS' oder' OAuth'? – Turbot

+0

AD FS mit oauth2. AD FS stellt einen OAUTH- und OpenIDConnect-Endpunkt bereit – Im4Ever

Antwort

1

ADFS 4.0 gibt einen Fehler aus, wenn "client_secret" gesendet wurde. ADFS 3.0 hat diesen Wert ignoriert.

Die UseOAuthAuthentication sendet immer ein "client_secret". Meine schmutzige Lösung ist, die HTTP-Anfrage abzufangen und das "client_secret" zu entfernen. Wenn jemand eine bessere Lösung hat ...

if (securityService.IsOAuthEnabled) 
{ 

    HttpClientHandler clientHandler = new HttpClientHandlerInterceptor(){}; 
    var options = securityService.GetOAuthOptions(); 
    options.BackchannelHttpHandler = clientHandler; 
    app.UseOAuthAuthentication(options); 
} 

HttpClientHandlerInterceptor:

public class HttpClientHandlerInterceptor : HttpClientHandler 
{ 
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 
    { 
     if (request.Content is FormUrlEncodedContent) 
     { 
      var x = ((FormUrlEncodedContent) request.Content).ReadAsStringAsync().Result; 
      var contenttype = request.Content.Headers.ContentType.MediaType; 
      x = x.Replace("client_secret=will+be+ignored&", ""); 
      request.Content = new StringContent(x, Encoding.UTF8, contenttype); 
     } 
     return base.SendAsync(request, cancellationToken); 
    } 
} 
0

Wenn Sie die Anwendung auf der ADFS-Seite über den Assistenten konfigurieren, erhalten Sie eine Client-ID.

Dies ist die clientId, die Sie in der Anfrage übergeben.

Überprüfen Sie, ob Sie die richtige clientId übergeben.

Schauen Sie auch in das ADFS-Fehlerprotokoll.

+0

Eine Lösung gefunden. Fehler war: MSIS9265: Ungültige Client-Anmeldeinformationen erhalten. Der Abfrageparameter 'client_secret' wurde in der Anforderung gefunden, aber der Client '620f7 ... c21' ist nicht für die Authentifizierung mit dem geheimen Client-Post konfiguriert. – Im4Ever