Код: Выделить всё
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; });
Последовательность действий, которую я реализую, выглядит следующим образом:
- Пользователь нажимает кнопку «Вход» в SPA (одностраничном приложении), что перенаправляет его на страницу входа в CourtAuth (пользовательский сервер идентификации, созданный с помощью OpenIddict).
- На странице входа CourtAuth есть Azure AD. (ААД). Когда пользователь нажимает эту кнопку, он перенаправляется в AAD.
- Пользователь вводит свои учетные данные в AAD, который проверяет их и возвращает токен доступа в CourtAuth.
- Сервер CourtAuth обрабатывает этот токен доступа, генерирует новый токен, специфичный для приложения, и возвращает его в SPA.
Код: Выделить всё
Currently, when the user clicks the AAD button, it redirects to the following URL: https://localhost:44313/Identity/Account/ExternalLogin?returnUrl=%2Fconnect%2Fauthorize%3Fresponse_type%3Dcode%26client_id%3DspaClient%26state%3D{state_value}%26redirect_uri%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/{tena ... figuration доступен.
Какие дополнительные шаги мне нужно предпринять для поддержки этого потока с помощью OpenIddict для пользовательского Сервер идентификации? В частности, как я могу выполнить интеграцию с AAD в этом процессе, гарантируя при этом корректную работу обмена токенами между AAD и CourtAuth?
Спасибо!
Уже поделился вопросом.
Подробнее здесь: https://stackoverflow.com/questions/792 ... openiddict