用于客户端身份验证的OpenIdConnect HTTP基本身份验证方案

时间:2018-01-24 12:24:56

标签: asp.net-mvc asp.net-core openid-connect

我正在尝试将OpenIdConnect登录到我的.net核心2.0网站。 我尝试使用的IdentityServer仅支持'client_secret_basic'作为token_endpoint_auth_methods。 我按如下方式配置了应用程序:

            services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = "Cookies";
            options.DefaultSignInScheme = "Cookies";
            options.DefaultChallengeScheme = "oidc";
        })
       .AddCookie()
       .AddOpenIdConnect(options =>
       {
           options.SignInScheme = "Cookies";
           options.Authority = Auhtority;
           options.ClientId = ClientID;
           options.ClientSecret = ClientSecret;
           options.ResponseType = "code";
           options.SaveTokens = true;
           options.Scope.Add("profile");
           options.Scope.Add("rrn");
       });

但是这似乎将ClientId和ClientSecret发布到请求的主体,而不是使用HTTP Basic身份验证。 我可能遗漏了一些明显的东西,但我似乎无法找到如何配置OpenIdConnect以使用client_secret_basic而不是client_secret_post。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,终于使用以下选项/事件挂钩using System.Net.Http;使它起作用:

options.Events.OnAuthorizationCodeReceived = context =>
        {
            context.Backchannel.SetBasicAuthenticationOAuth(context.TokenEndpointRequest.ClientId, context.TokenEndpointRequest.ClientSecret);
            return Task.CompletedTask;
        };

我主要是从对您的问题的评论中得出的,并提到的方法已被标记为已弃用,并带有我使用的新扩展方法的提示。