Azure ad b2c Azure B2C登录/注册后重定向-Blazor

Azure ad b2c Azure B2C登录/注册后重定向-Blazor,azure-ad-b2c,blazor,Azure Ad B2c,Blazor,我有一个blazor应用程序,正在使用B2C进行身份验证。这部分工作正常,但我需要做的是,当用户注册时,我需要检查他们是否是新用户,然后种子数据库。我正在考虑使用重定向URI,以便在登录/注册后将其转发到一个组件,我可以检查新用户声明并从那里开始。但无论我在Azure中将重定向URI设置为什么,它都会返回应用程序主页或登录/重定向页面(如果已设置)。对这一点很陌生,所以不确定我是否走上了正确的道路。谢谢 builder.Services.AddMsalAuthentication(options

我有一个blazor应用程序,正在使用B2C进行身份验证。这部分工作正常,但我需要做的是,当用户注册时,我需要检查他们是否是新用户,然后种子数据库。我正在考虑使用重定向URI,以便在登录/注册后将其转发到一个组件,我可以检查新用户声明并从那里开始。但无论我在Azure中将重定向URI设置为什么,它都会返回应用程序主页或登录/重定向页面(如果已设置)。对这一点很陌生,所以不确定我是否走上了正确的道路。谢谢

builder.Services.AddMsalAuthentication(options =>
   {
   var configuration = builder.Services.BuildServiceProvider().GetService<IConfiguration>();
   var authentication = options.ProviderOptions.Authentication;
   authentication.Authority = configuration["Authority"]; 
   authentication.ClientId = configuration["clientId"];
   authentication.PostLogoutRedirectUri = configuration["postLogoutUrl"];
   authentication.ValidateAuthority = false;
   });

请在代码中添加一行:

authentication.navigateToLoginRequestUrl = false;
属性
navigateToLoginRequestUrl
的默认值为
true


您可以了解有关此属性的更多信息。

请在代码中添加一行:

authentication.navigateToLoginRequestUrl = false;
属性
navigateToLoginRequestUrl
的默认值为
true


您可以了解有关此属性的更多信息。

您可以捕获两个事件,第一个事件在令牌经过身份验证后设置重定向URL,这是可选的

第二个事件是使用刚刚验证过的令牌与您的服务对话,以创建用户、更新声明等

        services.Configure<OpenIdConnectOptions>(AzureADB2CDefaults.OpenIdScheme, options =>
        {
            options.Events.OnRedirectToIdentityProvider = async context =>
            {
                context.Properties.RedirectUri = "YOUR LOCAL URI FOR AFTER LOGIN";
            };

            options.Events.OnTokenValidated = async context =>
            {
                // Token was just validated, talk to your DB
                // to create users or add claims as needed using
                // context.principal
                // Example for adding claims below
                    var claimsIdentity = (ClaimsIdentity) context.Principal.Identity;
                    claimsIdentity.AddClaim(new Claim(type: ClaimTypes.Role, value: "foo"));
                }
            };

        });
services.Configure(AzureADB2CDefaults.OpenIdScheme,选项=>
{
options.Events.OnRedirectToIdentityProvider=异步上下文=>
{
context.Properties.RedirectUri=“登录后的本地URI”;
};
options.Events.OnTokenValidated=异步上下文=>
{
//令牌刚刚验证,请与数据库联系
//使用创建用户或根据需要添加声明
//上下文。主体
//下面添加索赔的示例
var claimsIdentity=(claimsIdentity)context.Principal.Identity;
AddClaim(新的Claim(类型:ClaimTypes.Role,值:“foo”);
}
};
});

您可以捕获两个事件,第一个事件在令牌经过身份验证后设置重定向URL,这是可选的

第二个事件是使用刚刚验证过的令牌与您的服务对话,以创建用户、更新声明等

        services.Configure<OpenIdConnectOptions>(AzureADB2CDefaults.OpenIdScheme, options =>
        {
            options.Events.OnRedirectToIdentityProvider = async context =>
            {
                context.Properties.RedirectUri = "YOUR LOCAL URI FOR AFTER LOGIN";
            };

            options.Events.OnTokenValidated = async context =>
            {
                // Token was just validated, talk to your DB
                // to create users or add claims as needed using
                // context.principal
                // Example for adding claims below
                    var claimsIdentity = (ClaimsIdentity) context.Principal.Identity;
                    claimsIdentity.AddClaim(new Claim(type: ClaimTypes.Role, value: "foo"));
                }
            };

        });
services.Configure(AzureADB2CDefaults.OpenIdScheme,选项=>
{
options.Events.OnRedirectToIdentityProvider=异步上下文=>
{
context.Properties.RedirectUri=“登录后的本地URI”;
};
options.Events.OnTokenValidated=异步上下文=>
{
//令牌刚刚验证,请与数据库联系
//使用创建用户或根据需要添加声明
//上下文。主体
//下面添加索赔的示例
var claimsIdentity=(claimsIdentity)context.Principal.Identity;
AddClaim(新的Claim(类型:ClaimTypes.Role,值:“foo”);
}
};
});

在startup.cs中,@StefanGordon解决方案的一部分对我有效。使用您希望用户在成功登录后转到的url更改“/dashboard”

            services.Configure<OpenIdConnectOptions>(
            OpenIdConnectDefaults.AuthenticationScheme, options =>
            {
                options.Events.OnRedirectToIdentityProvider = async context =>
                {
                    context.Properties.RedirectUri = "/Dashboard;
                };
            });
服务。配置(
OpenIdConnectDefaults.AuthenticationScheme,选项=>
{
options.Events.OnRedirectToIdentityProvider=异步上下文=>
{
context.Properties.RedirectUri=“/Dashboard;
};
});

在startup.cs.Change“/dashboard”中,@StefanGordon解决方案的一部分对我起到了作用,其中包含了成功登录后希望用户访问的url

            services.Configure<OpenIdConnectOptions>(
            OpenIdConnectDefaults.AuthenticationScheme, options =>
            {
                options.Events.OnRedirectToIdentityProvider = async context =>
                {
                    context.Properties.RedirectUri = "/Dashboard;
                };
            });
服务。配置(
OpenIdConnectDefaults.AuthenticationScheme,选项=>
{
options.Events.OnRedirectToIdentityProvider=异步上下文=>
{
context.Properties.RedirectUri=“/Dashboard;
};
});

不幸的是,这没有效果。不确定这是否与我使用.NET framework有关……不幸的是,这没有效果。不确定这是否与我使用.NET framework有关。。