#azure-ad-b2c #blazor-webassembly
#azure-ad-b2c #blazor-webassembly
Вопрос:
Я следовал этому руководству построчно. В нем рассказывается, как создать приложение, размещенное на blazor wasm, со всем кодом для аутентификации в Azure B2C. Все, что мне нужно было сделать, это заменить правильные значения в нужных местах.
dotnet new blazorwasm -au IndividualB2C --aad-b2c-instance "{AAD B2C INSTANCE}" --api-client-id "{SERVER API APP CLIENT ID}" --app-id-uri "{SERVER API APP ID URI}" --client-id "{CLIENT APP CLIENT ID}" --default-scope "{DEFAULT SCOPE}" --domain "{TENANT DOMAIN}" -ho -o {APP NAME} -ssp "{SIGN UP OR SIGN IN POLICY}"
К сожалению, при запуске я получаю эту ошибку:
Трудно сказать, откуда исходит проблема. Я погуглил ошибку, но не могу найти никакой документации по этой проблеме.
Спасибо за помощь.
Редактировать
Вот сценарий, который я использую для создания приложения Blazor
dotnet new blazorwasm -au IndividualB2C --aad-b2c-instance "testb2c.onmicrosoft.com" --api-client-id "3b113bda-55d5-47eb-9d8c-5e44375f1341" --app-id-uri "https://testb2c.onmicrosoft.com/testapi" --client-id "3b9fd635-a87f-4899-ad04-9a73fc6f4e21" --default-scope "api.read" --domain "testb2c.onmicrosoft.com" -ho -o BlazorCmdLine -ssp "B2C_1_SignUpIn"
Комментарии:
1. Это предположение, а не ответ. Может быть, у вас есть какие-то «недопустимые символы», такие как пробелы в ваших переменных? И когда служба аутентификации пытается создать URL-адрес перенаправления??? для запроса он выдает ошибку?
2. Ваш URL-адрес должен выглядеть следующим образом:
https://{tenant}.onmicrosoft.com/{SERVER API APP ID URI}/scope name
.3. @CarlZhao Я только что опубликовал свой сценарий в вопросе. Какая часть сценария должна быть такой, как вы описываете в своем комментарии?
4. Что произойдет, если вы запустите
dotnet new blazorwasm -au IndividualB2C -ho -o BlazorCmdLine
?5. @AllenWu, выполнение этой команды сгенерировало только заполнители, которые позволяют точно увидеть, что ожидалось. Большое вам спасибо
Ответ №1:
Всем, кто оказался в такой ситуации — вместо того, чтобы проверять ваши значения и снова запускать команду, откройте файл appsettings.json и проверьте «AzureAdB2C.Значение «Авторитет». Это должен быть допустимый URL-адрес в формате: «{ЭКЗЕМПЛЯР AAD B2C} / {ДОМЕН АРЕНДАТОРА} / {ПОЛИТИКА РЕГИСТРАЦИИ ИЛИ ВХОДА}»
Пример: «https://testb2c.b2clogin.com/testb2c.onmicrosoft.com/B2C_1_SignUpSignIn »
Ответ №2:
На самом деле было 2 проблемы, связанные с недостатком внимания.
- Я использовал одно и то же значение
testb2c.onmicrosoft.com
как для {ЭКЗЕМПЛЯРА AAD B2C}, так и для {ДОМЕНА КЛИЕНТА}.
{AAD B2C INSTANCE} Instance
должно бытьhttps://testb2c.b2clogin.com/
{TENANT DOMAIN} domain
должно бытьtestb2c.onmicrosoft.com
- Я забыл добавить косую черту в конце экземпляра {AAD B2C INSTANCE}. Итак, я получал
"Authority": "testb2c.onmicrosoft.comtestb2c.onmicrosoft.com/B2C_1_SignUpIn"
,
Спасибо, @just the benno, @Carl Zhao и @Allen Wu
Комментарии:
1. Вы забыли # 2. Ha ha ha. Просто шучу, чувак. Это занимало меня больше часа, и я бы никогда не догадался. Спасибо!
2. Полномочия также должны начинаться с «https: //»