You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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客户端设置: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登录页面:Keycloak登录页面


内容的提问来源于stack exchange,提问作者Franco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:53:09