为了账号安全,请及时绑定邮箱和手机立即绑定

在 AspNetCore OpenIdConnect 上设置 redirect_uri

在 AspNetCore OpenIdConnect 上设置 redirect_uri

C#
子衿沉夜 2021-06-04 14:01:50
在 .Net 上当我创建一个 Open ID 连接身份验证选项时,我有一个属性来设置 RedirectUri,这甚至按照文档中的建议进行了定义,但 AspNetCore 上不存在此类属性,它会自动设置为当前服务器 EX:,(http://localhost)是有没有办法改变这一点?试图为此找到解决方案时,我遇到了新的 AspNetCore 身份验证的许多缺点,该产品已准备好还是只是 WIP?
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

我正在更改架构如下


public static void AddCookieAuthentication(this IServiceCollection services, IConfiguration configuration)

    {

        _configuration = configuration;

        services.AddAuthentication(options =>

            {

                options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;

                options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;

            })

            .AddCookie()

            .AddOpenIdConnect(options =>

            {

                options.TokenValidationParameters.AuthenticationType = IdentityConstants.ApplicationScheme;

                options.ResponseType = "code";

                options.MetadataAddress = configuration["Authentication:Cognito:MetadataAddress"];

                options.ClientId = configuration["Authentication:Cognito:ClientId"];

                options.ClientSecret = configuration["Authentication:Cognito:ClientSecret"];

                options.GetClaimsFromUserInfoEndpoint = true;

                options.Scope.Add("openid");

                options.Scope.Add("profile");

                options.Scope.Add("email");

                options.Scope.Add("aws.cognito.signin.user.admin");


                options.Events = new OpenIdConnectEvents

                {

                    // this makes signout working

                    OnRedirectToIdentityProviderForSignOut = OnRedirectToIdentityProviderForSignOut,

                    OnRedirectToIdentityProvider = OnRedirectToIdentityProvider,

                };

            });

    }


    private static Task OnRedirectToIdentityProvider(RedirectContext ctx)

    {

        ctx.Options.Events.OnRedirectToIdentityProvider = async context =>

        {

            **context.ProtocolMessage.RedirectUri = context.ProtocolMessage.RedirectUri.Replace("http:", "https:");**

            await Task.FromResult(0);

        };

        return Task.CompletedTask;

    }


查看完整回答
反对 回复 2021-06-05
  • 2 回答
  • 0 关注
  • 326 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信