2017-06-28 10 views
1

これはなぜ起こりますか? 私たちは、それが私たちのASP.NETコア・アプリケーションは次のエラーを取得し、更新後のバージョン4. に、バージョン3から更新ADFSを持っていた:ADFS 4.0:無効なクライアントの資格情報を受け取りました

エラーコード:

"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.\"};)" 

要求:

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 

私も試してみました:

  • "grant_type" = "authorization_c ode "

誰かがこの文脈で"クライアントの資格情報 "とは何か考えていますか?

+0

はこの 'ADFS'または' OAuth'のですか? – Turbot

+0

oauth2を使用するAD FS AD FSはOAUTHとOpenIDConnectエンドポイントを提供します – Im4Ever

答えて

1

「client_secret」が送信された場合、ADFS 4.0はエラーをスローします。 ADFS 3.0はその値を無視しています。

UseOAuthAuthenticationは常に「client_secret」を送信します。私のダーティー解決策は、http要求をインターセプトし、 "client_secret"を削除することです。誰かがよりよい解決策を持っている場合...

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

ウィザードを使用してADFS側でアプリケーションを構成すると、clientIdが取得されます。

これはリクエストで渡したclientIdです。

正しいクライアントIDを渡していることを確認してください。

また、ADFSエラーログを調べます。

+0

解決策を見つけました。エラー:MSIS9265:無効なクライアント資格情報を受け取りました。リクエストの 'client_secret'クエリパラメータが見つかりましたが、クライアント '620f7 ... c21'はクライアントシークレットポストを使用して認証するように設定されていません。 – Im4Ever

関連する問題