我有一个使用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;
});
{
"Authority": "https://xxxxx.b2clogin.com/Logbooks.onmicrosoft.com/B2C_1_Signinup",
"clientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"postLogoutUrl": "https://localhost:xxxxx"
}
答案 0 :(得分:1)
@StefanGordon 的部分解决方案对我有用 - 在 startup.cs 中。将“/dashboard”更改为您希望用户在成功登录后访问的网址。
services.Configure<OpenIdConnectOptions>(
OpenIdConnectDefaults.AuthenticationScheme, options =>
{
options.Events.OnRedirectToIdentityProvider = async context =>
{
context.Properties.RedirectUri = "/Dashboard;
};
});
答案 1 :(得分:0)
请在您的代码中添加一行:
authentication.navigateToLoginRequestUrl = false;
属性navigateToLoginRequestUrl
的默认值为true
。
您可以在此page上了解有关该物业的更多信息。
答案 2 :(得分:0)
您可以捕获两个事件,第一个事件是在令牌通过身份验证后为 设置重定向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"));
}
};
});