Я пытаюсь включить OIDC authN и рабочий процесс authZ для моего Spring-Java-веб-приложения. В идеале я хотел сделать это независимым от IDP способом. То есть это приложение могло быть интегрировано только с любым из Azure AD, OKTA, AWS SSO, Google-auth администратором развертывания. И я хочу, чтобы пользователи перенаправлялись на любого провайдера, которогоПриложение интегрировано с.
С OIDC в качестве стандарта, я понимаю, что я должен быть в состоянии написать фильтр обработки аутентификации OIDC, который должен работать с любым из провайдеров. Необходимая конфигурация, которая варьируется в зависимости от провайдера (URL-адрес аутентификации, идентификатор клиента, секрет, URL-адрес JWKS для получения ключей провайдера и т. Д.), Будет передана в этот шаблон фильтра / отдыха в качестве параметров.
- В.1 Можно ли реализовать независимый от поставщика фильтр OIDC? Может кто-нибудь дать какие-нибудь указатели?
Мне известно, что Spring изначально предоставляет библиотеки Oauth2 / apis, такие как AuthorizationCodeResourceDetails, OAuth2ClientAuthenticationProcessingFilter. Однако я не вижу никакого встроенного фильтра обработки OIDC во встроенном. Есть ли что-нибудь?
Я попытался понять рабочий процесс, описанный в https://www.baeldung.com/spring-security-openid-connect. Однако, когда я пытаюсь настроить этот код, чтобы он работал с Azure AD, он не работает. Это связано с тем, что Azure AD требует
- Параметр response_type должен содержать id_token.
- Запрос должен содержать параметр
nonce
, который должен быть установлен в запросе.
AuthorizationCodeResourceDetails не поддерживает такой параметр. Учитывая, что OIDC является общим стандартом,
Q-2. Я не понимаю, почему у каждого поставщика все еще разные требования? Разве это не противоречит цели OIDC. На самом деле я прочитал, что Google выдает ошибку, если вы передаете nonce
Q-3. Есть ли какие-нибудь родные способы настройки этих дополнительных параметров, специфичных для провайдера, таких как nonce
, promt
, дополнительные response-type
, предпочтительно с примерами?