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