Как запустить потоки пользователей Azure B2C из приложения Blazor WASM с помощью MSAL 2
Я успешно настроил службу AzureB2C , чтобы приложение Blazor WASM запускало мой поток пользователя B2C_1_Signin, перейдя к
/authentication/login
в моем приложении.
Теперь я пытаюсь запустить свой пользовательский поток B2C_1_Signup. Когда я пытаюсь
/authentication/register
, я получаю сообщение о том, что регистрация не поддерживается . Я предполагаю, что мне не хватает какой-то конфигурации, но я не могу найти документацию о том, как действовать дальше.
Вот что я пробовал:
- В моем 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"
}
}
... но это не работает.
- я прополз через
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
), мне интересно, как поступить.