修改.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
相关产品推荐
相关产品推荐

