Код: Выделить всё
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddOpenIdConnect("AAD", "Microsoft", options =>
{
options.Authority = "https://login.microsoftonline.com/{tenant_id}/v2.0";
options.ClientId = "{client_id}";
options.ClientSecret = "{client_secret}";
options.ResponseType = "code";
options.SaveTokens = true;
options.Scope.Add("openid");
options.Scope.Add("profile");
options.CallbackPath = "/callback/login/aad";
options.MetadataAddress = "https://login.microsoftonline.com/{tenant_id}/v2.0/.well-known/openid-configuration";
options.RequireHttpsMetadata = true;
});
Последовательность действий, которую я реализую, выглядит следующим образом:
< ul>
[*]Пользователь нажимает кнопку «Вход» в SPA (одностраничном приложении), которое перенаправляет его на страницу входа в CourtAuth (пользовательский сервер идентификации, созданный с помощью OpenIddict).
[*]На странице входа CourtAuth есть Azure AD (AAD). кнопка. Когда пользователь нажимает эту кнопку, он перенаправляется в AAD.
[*]Пользователь вводит свои учетные данные в AAD, который проверяет их и возвращает токен доступа в CourtAuth.
[*]Сервер CourtAuth обрабатывает этот токен доступа, генерирует новый токен, специфичный для приложения, и возвращает его в SPA.
Проблема:
В настоящее время, когда пользователь нажимает кнопку AAD, происходит перенаправление на следующий URL-адрес:
https://localhost:44313/Identity/Accoun ... %3Dhttp%3A %2F%2Flocalhost%3A4200%2Fsignin-oidc%26scope%3Dopenid%20profile%20custom_scope%26code_challenge%3D{challenge_value}%26code_challenge_method%3DS256%26nonce%3D{nonce_value}%26prompt%3D
Но возникает следующая ошибка:
InvalidOperationException: невозможно перенаправить на
конечную точку авторизации; конфигурация может отсутствовать или быть недействительной.
Что я проверил:
- Значения tenant_id, client_id и client_secret верны.
- Конечная точка метаданных https://login.microsoftonline.com/{tenant_id}/v2.0/ .well-known/openid-конфигурация доступны.
Какие дополнительные шаги мне нужно предпринять, чтобы поддерживать этот поток с помощью OpenIddict для пользовательского сервера идентификации? В частности, как я могу выполнить интеграцию с AAD в этом процессе, гарантируя при этом корректную работу обмена токенами между AAD и CourtAuth?
Спасибо!
Уже поделился вопросом.
Подробнее здесь: https://stackoverflow.com/questions/792 ... openiddict