nik*_*619 9 c# asp.net openid-connect asp.net-core asp.net-core-2.0
在.AddOpenIdConnect()内部使用时ConfigureServices,是否可以根据请求更改主机ClientId并ClientSecret基于主机?
我知道它Startup本身无法访问HttpContext,但我想知道是否使用中间件可以解决这个问题,它可以访问上下文.
我尝试过以下链接,但是在通过CustomAuthHandler ASP.NET Core 2.0身份验证中间件运行后,我的值始终为null
我相信您可以实现将RedirectToIdentityProvider属性分配给目标的功能。
在重定向到身份提供者进行身份验证之前调用。这可以用来设置ProtocolMessage.State,它将在身份验证过程中保留下来。ProtocolMessage还可以用于添加或自定义发送给身份提供者的参数。
public void ConfigureServices(IServiceCollection services)
{
    services
    .AddAuthentication()
    .AddOpenIdConnect(options =>
        {
            options.Events.OnRedirectToIdentityProvider = context =>
             {
                  // Retrieve identity from current HttpContext
                  var identity = context.HttpContext.User.Identity;
                  // Lookup for your client_id and client_secret
                  var clientId = "find your client id";
                  var clientSecret = "find your client secret";
                  // Assign client_id and client_secret
                  context.ProtocolMessage.ClientId = clientId;
                  context.ProtocolMessage.ClientSecret = clientSecret;
                  return Task.FromResult(0);
              };
         });
}
Run Code Online (Sandbox Code Playgroud)
相关链接
OpenIdConnectEvents.OnRedirectToIdentityProvider属性
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1887 次  |  
        
|   最近记录:  |