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

修改.NET Core OpenID Connect授权流程的redirect_uri值

修改.NET Core OIDC授权流程中的redirect_uri

嘿,我来帮你搞定修改redirect_uri的事儿!在你现有的OpenID Connect授权码模式配置里,只需要针对AddOpenIdConnect的选项做调整就行,具体操作分这几个场景:

1. 静态设置固定的redirect_uri

直接在OpenIdConnectOptions配置中添加RedirectUri属性,指定你需要的跳转地址。注意这个地址必须和你在身份提供商(IdP)后台注册的客户端redirect_uri完全一致(包括协议、域名、路径)。

示例代码修改如下:

services.AddAuthentication(options => { 
    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; 
    options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme; 
}) 
.AddCookie() 
.AddOpenIdConnect(o => { 
    o.ClientId = "[Client ID]";
    // 新增或修改这一行,设置你的目标redirect_uri
    o.RedirectUri = "https://your-app-domain.com/signin-oidc";
    // 其他原有配置...
});

默认情况下,OIDC中间件会使用/signin-oidc作为redirect_uri,如果你只是想修改域名或调整路径,直接替换成对应值即可。

2. 动态设置redirect_uri(适配多环境/动态域名)

如果你的应用需要根据环境、请求上下文动态调整redirect_uri,可以通过OpenIdConnectEvents中的OnRedirectToIdentityProvider事件来修改:

services.AddAuthentication(options => { 
    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; 
    options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme; 
}) 
.AddCookie() 
.AddOpenIdConnect(o => { 
    o.ClientId = "[Client ID]";
    // 配置事件来动态修改redirect_uri
    o.Events = new OpenIdConnectEvents
    {
        OnRedirectToIdentityProvider = context =>
        {
            // 这里可以根据请求上下文、环境变量等动态生成地址
            var currentDomain = context.Request.Host.Value;
            context.ProtocolMessage.RedirectUri = $"https://{currentDomain}/signin-oidc";
            return Task.CompletedTask;
        }
    };
    // 其他原有配置...
});

3. 关键注意事项

一定要同步更新身份提供商(IdP)后台的客户端配置!

不管是静态还是动态设置,你代码里的redirect_uri必须和IdP后台注册的客户端允许的redirect_uri列表完全匹配,否则身份提供商将拒绝授权请求,返回错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:02:04