首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖签名-oidc回调在成功认证后重定向的位置。

覆盖签名-oidc回调在成功认证后重定向的位置。
EN

Stack Overflow用户
提问于 2021-01-21 02:19:33
回答 1查看 2.1K关注 0票数 2

我在一个负载均衡器后面托管一个ASP.NET Core2.xWeb应用程序。比方说,公共网址是public_url.com。在内部,该应用程序在private_url.com/iis_sub_dir中。

我可以首先在管道中添加一个定制的BasePath中间件来完成这个设置。

问题:在使用OpenIdConnect中间件对外部提供者登录后,成功地用302响应代码返回到我的/signin-oidc回调路径,但是响应头“位置”类似于:public_url.com/iis_sub_dir/etc。那个iis_sub_dir毁了一切,我得到了404。

我试图添加另一个自定义中间件,但似乎没有将此请求/响应传递给它!

主配置:

代码语言:javascript
复制
                .AddOpenIdConnect(options =>
                {
                    options.Authority = xxx;
                    options.ClientId = xxx;
                    options.CallbackPath = "/signin-oidc";
                    options.CorrelationCookie.Path = "/"; // cookie + load balancer fix
                    options.NonceCookie.Path = "/"; // cookie + load balancer fix
                    options.ResponseType = "code";
                
                
                    options.Events = new OpenIdConnectEvents
                    {
                        OnRedirectToIdentityProvider = async (ctx) =>
                        {
                            ctx.ProtocolMessage.RedirectUri = publicPath + CallbackPath;

                            await Task.FromResult(0);
                        },

PathBase中间件:

代码语言:javascript
复制
httpContext.Request.PathBase = new PathString(baseRedirectPath);

我只想将iis_sub_dir从CallbackPath端点的"location“响应头中删除。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-01-22 09:45:39

在使用OpenId连接身份验证方案时,请使用RedirectUri属性。

代码语言:javascript
复制
await HttpContext.ChallengeAsync("OpenId-SchemeName",
  new AuthenticationProperties() { RedirectUri = "http://public-url.com/iis_sub_dir/signin-oidc" });

参见这里的文档- https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.authentication.authenticationproperties?view=aspnetcore-2.2

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65820307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档