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

时间:2020-05-05 23:44:48

标签: azure-ad-b2c 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;
   });

{
  "Authority": "https://xxxxx.b2clogin.com/Logbooks.onmicrosoft.com/B2C_1_Signinup",
  "clientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
  "postLogoutUrl": "https://localhost:xxxxx"
  }

enter image description here

3 个答案:

答案 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"));
                }
            };

        });