Я пытаюсь настроить приложение Blazor Wasm для аутентификации пользователя из любого каталога организации. Но когда пользователь пытается войти в систему, он получает сообщение об ошибке, если адрес электронной почты отсутствует в списке пользователей для каталога Azure Entra ID.
Вот как это называется в program.cs:
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd"));
Вот файл appsettings.json. Я пробовал обе организации и общее значение TenantId.
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com",
"Domain": "mydomain.onmicrosoft.com",
"TenantId": "organizations",
"ClientId": "myclientid012345678",
"Scopes": "access_as_user",
"CallbackPath": "/signin-oidc"
}
}
Поддерживаемые типы учетных записей: Учетные записи в любом каталоге организации (любой клиент Microsoft Entra ID — мультитенантный)
Поделитесь пожалуйста ошибкой..
В описание проблемы добавлено сообщение об ошибке
Попробуйте один раз удалить области видимости в файле appsettings.json.





AADTS50020: учетная запись пользователя «[email protected]» от поставщика удостоверений «https://sts.windows.net/xxx/» не существует в клиенте «Contoso» и не может получить доступ к приложению «xxx» (ClientAppRuk) в тот арендатор. Сначала учетную запись необходимо добавить в качестве внешнего пользователя в клиенте.
Первоначально я получил ту же ошибку:

Ошибка обычно возникает, если приложение Microsoft Entra ID не настроено как «Учетные записи в любом каталоге организации (любой клиент Microsoft Entra ID — мультитенант)», чтобы разрешить доступ другим пользователям-арендаторам.
organizations.https://login.microsoftonline.com/organizations.Я создал ServerAppRuk и выставил API, как показано ниже:

Создано ClientAppRuk и предоставлены разрешения API:

Для обоих приложений обязательно выберите параметр «Учетные записи в любом каталоге организации (любой клиент Microsoft Entra ID — мультитенант)»:

Чтобы устранить ошибку, обязательно передайте полномочия как https://login.microsoftonline.com/organizations, как показано ниже:
Файл клиентского приложения appsettings.json:
"AzureAd": {
"Authority": "https://login.microsoftonline.com/organizations",
"ClientId": "ClientAppID",
"ValidateAuthority": true
}
}

И убедитесь, что файл серверного приложения appsettings.json выглядит так, как показано ниже:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "XXX.onmicrosoft.com",
"TenantId": "organizations",
"ClientId": "ServerAppID",
"CallbackPath": "RedirectURL",
"Scopes": "access_as_user"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}

Обязательно добавьте клиентское приложение в конфигурацию серверного приложения, как показано ниже:
Передайте ClientID клиентского приложения.

После вышеуказанных настроек я могу успешно войти в приложение с другим пользователем-арендатором:


Использованная литература:
Конфигурация клиентского приложения (MSAL) — платформа идентификации Microsoft | Майкрософт
Вы ДЕЙСТВИТЕЛЬНО приблизили меня к успеху, а затем я столкнулся с этой маленькой жемчужиной ошибки: «Войти При попытке войти в систему произошла ошибка: '9002326 - [2024-03-18 15:54:49Z]: AADSTS9002326: Погашение токена между источниками разрешено только для типа клиента «Одностраничное приложение». Я помню, что где-то в области EntraId указывал одностраничное приложение, но я использую Blazor Wasm. Есть идеи, как исправить это несоответствие импедансов?
Не обращайте внимания на мой последний «комментарий». Я нашел ляп в своей настройке. Отличное решение, большое спасибо за вашу помощь!!!
@GeorgeHelmke, ты решил свою проблему?
Это чистое ядро 7