Компонент рендеринга необработанных исключений: не удалось создать «URL»: недопустимый URL

#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 »

Источник: https://docs.microsoft.com/en-us/aspnet/core/blazor/security/webassembly/standalone-with-azure-active-directory-b2c?view=aspnetcore-5.0

Ответ №2:

На самом деле было 2 проблемы, связанные с недостатком внимания.

  1. Я использовал одно и то же значение testb2c.onmicrosoft.com как для {ЭКЗЕМПЛЯРА AAD B2C}, так и для {ДОМЕНА КЛИЕНТА}.
  • {AAD B2C INSTANCE} Instance должно быть https://testb2c.b2clogin.com/
  • {TENANT DOMAIN} domain должно быть testb2c.onmicrosoft.com
  1. Я забыл добавить косую черту в конце экземпляра {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: //»