Как запустить потоки пользователей Azure B2C из приложения Blazor WASM с помощью MSAL 2

Я успешно настроил службу AzureB2C , чтобы приложение Blazor WASM запускало мой поток пользователя B2C_1_Signin, перейдя к /authentication/loginв моем приложении.

Теперь я пытаюсь запустить свой пользовательский поток B2C_1_Signup. Когда я пытаюсь /authentication/register, я получаю сообщение о том, что регистрация не поддерживается . Я предполагаю, что мне не хватает какой-то конфигурации, но я не могу найти документацию о том, как действовать дальше.

Вот что я пробовал:

  1. В моем wwwroot/appsettings.json я попытался добавить параметры, чтобы указать MSAL, какие потоки пользователей использовать:
      {
  "AzureAdB2C": {
    "Authority": "https://xxx/yyy/B2C_1_Signin",
    "ClientId": "0000-0000-0000",
    "ValidateAuthority": false,
    "SignUpPolicyId": "B2C_1_Signup",
    "SignInPolicyId": "B2C_1_Signin"
  }
}

... но это не работает.

  1. я прополз через Microsoft.AspNetCore.Components.WebAssembly.Authenticationисходный код, пока я не нашел сообщение « Регистрация не поддерживается ». Судя по окружающему коду, похоже, что он ожидает значение в RemoteRegisterPath, поэтому я изменил свой Program.cs следующим образом:
      builder.Services.AddMsalAuthentication(options =>
{
    builder.Configuration.Bind("AzureAdB2C", options.ProviderOptions.Authentication);
    options.ProviderOptions.DefaultAccessTokenScopes.Add("openid");
    options.ProviderOptions.DefaultAccessTokenScopes.Add("offline_access");
    options.ProviderOptions.LoginMode = "redirect";

    options.AuthenticationPaths.RemoteRegisterPath = "https://xxx/yyy/B2C_1_Signup";
});

При этом запускается User Flow, но, похоже, ему нужен полный URL -адрес с сайта AzureB2C:

      https://xxx/yyy/oauth2/v2.0/authorize?p=B2C_1_Signup&client_id=0000-0000-0000&nonce=defaultNonce&redirect_uri=https%3A%2F%2Flocalhost%3A5001%2Fauthentication%2Flogin-callback&scope=openid&response_type=code&prompt=login&code_challenge_method=S256&code_challenge=F1ut2KaRX...

Поскольку я не хочу обрабатывать полный обмен PKCE (например, создать code_challengeи обрабатывать возвращенное code), мне интересно, как поступить.

0 ответов

Другие вопросы по тегам