如何在ASP.NET 7中结合Keycloak使用Direct Access Flow实现认证
问题:ASP.NET 7 集成Keycloak实现Bearer Token认证
我正尝试在ASP.NET 7服务器中基于OpenID Connect与Keycloak实现认证功能,期望用户通过Keycloak完成认证后获取access token,再以Bearer Token方式验证身份并调用服务器的受保护端点。
据了解,使用Keycloak的Direct Access Flow需将Standard flow设置为关闭状态。我的Program.cs配置如下:
services.AddAuthentication(options => { options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme; }) .AddCookie() .AddOpenIdConnect(options => { options.Authority = "http://localhost:8080/realms/GT/"; options.ClientId = "gt_client"; options.ClientSecret = "**********"; options.ResponseType = "code"; options.GetClaimsFromUserInfoEndpoint = true; // MAYBE FOR ROLES options.Scope.Add("openid"); options.Scope.Add("profile"); options.RequireHttpsMetadata = false; // allow HTTP, only in development options.SaveTokens = true; });
Keycloak客户端设置:
调用的受保护端点代码:
[Authorize] [HttpGet("test")] public IActionResult Test() { return Ok(); }
我通过指定方式获取到access token后,调用端点时收到错误提示:Client is not allowed to initiate browser login with given response_type。我推测需要调整Program.cs的配置,告知Keycloak使用Direct Access Flow,跳过浏览器登录,直接用获取到的access token访问端点。
注:若开启Standard flow,调用端点时会跳转至Keycloak登录页面:
内容的提问来源于stack exchange,提问作者Franco
相关产品推荐
相关产品推荐

