ADFS 4.0:收到无效的客户端凭据

时间:2017-06-28 08:53:43

标签: asp.net asp.net-core oauth-2.0 adfs

为什么会发生这种情况的任何想法? 我们的IT使ADFS从版本3更新到版本4。 更新后,我们的ASP.NET Core应用程序出现以下错误:

错误代码:

"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_code"

有人知道"客户凭证"意味着在这种情况下?

3 个答案:

答案 0 :(得分:2)

如果发送了“client_secret”,则ADFS 4.0会抛出错误。 ADFS 3.0忽略了该值。

UseOAuthAuthentication始终发送“client_secret”。我的解决方案是拦截http请求并删除“client_secret”。如果有人有更好的解决方案......

selected

HttpClientHandlerInterceptor:

 if (securityService.IsOAuthEnabled)
 {

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

答案 1 :(得分:0)

通过向导在ADFS端配置应用程序时,您将获得clientId。

这是您在请求中传递的clientId。

检查您是否传递了正确的clientId。

另请查看ADFS错误日志。

答案 2 :(得分:0)

在您的请求字符串中注意:response_type=code

当我从 Startup.Auth.cs 中的 ConfigureAuth 函数中注释掉 UseOAuthe2CodeRedeemer 时,它缓解了手头的问题。

见下文:

        //    code_grant is present in the querystring (&code=<code>).
        //app.UseOAuth2CodeRedeemer(
        //    new OAuth2CodeRedeemerOptions
        //    {
        //        ClientId = AuthenticationConfig.ClientId,
        //        ClientSecret = AuthenticationConfig.ClientSecret,
        //        RedirectUri = AuthenticationConfig.RedirectUri
        //    }
        //);