Говоря как кто-то, кто создал SAML
IdP с нуля, его создание в Java в основном включает в себя следующее:
- Серверное приложение, которое прослушивает запросы SAML, обычно через порт 443. Для этого вы можете использовать spring-boot .
- Код сервера для представления страниц аутентификации пользователям, которыми управляет IdP. LDAP является широко используемым способом аутентификации пользователя.
- Код сервера для извлечения атрибутов для аутентифицированного пользователя. Это может быть поиск LDAP для поиска атрибутов, таких как имя, фамилия, адрес электронной почты и т. Д. c.
- Код сервера, чтобы определить, какие атрибуты могут быть переданы запрашивающему SP. Для этого вы должны использовать
entityID
SP. - Код сервера для перевода атрибутов пользователя (например, из LDAP) в атрибуты SAML и отправки в SP.
1 и 4 требуют парсинг и создание SAML
. Для них вы можете использовать openSAML . 5 требуется схема атрибута SAML
, которую SP, вероятно, поймет. Для этого вы можете использовать eduPerson .
Работа с SAML
и SP требует знания и реализации различных SAML
профилей. Веб-браузер SSO часто используется. Вы можете прочитать о профилях здесь .
Как только вы поймете SAML
и где он вписывается в процесс, вам нужно понять / реализовать XMLSignature и различные темы шифрования используя PKI .
Когда у вас есть работающая, протестированная реализация IdP, вам необходимо иметь возможность проанализировать Метаданные SAML (PDF) для проверки SP с использованием его сертификат ключа publi c и другие URL-адреса в его метаданных. Вам также необходимо поддерживать метаданные SP в актуальном состоянии, а также создавать метаданные IdP для отправки в SP, чтобы он мог проверить ваш SAML
Response
, который вы подпишете.
Если ROI не стоит такого количества разработки, вы можете использовать 'стандартный' IdP .