Прежде чем начать обучение, вы должны сначала понять концепцию SAML. SAML в основном имеет три идентификатора: пользователь/браузер, поставщик услуг и поставщик удостоверений.
IDP (поставщик удостоверений) Поставщик удостоверений Объяснение: IDP отвечает за проверку личности пользователя и создание утверждений безопасности, содержащих информацию о личности пользователя. В SAML IDP обычно предоставляется организацией или поставщиком услуг и используется для аутентификации пользователя. Поставщик атрибутов AP (Attribute Provider), по сути эквивалентный IDP. Объяснение: AP — это объект, предоставляющий информацию об атрибутах пользователя. В SAML эта атрибутивная информация может включать имя пользователя, адрес электронной почты, роль и т. д. Точка доступа обычно отделена от IDP, чтобы информацией об атрибутах мог управлять выделенный объект. SP (Поставщик услуг) Объяснение поставщика услуг: SP — это объект, который полагается на утверждения SAML для авторизации пользователей. SP может быть веб-приложением, службой или ресурсом, который использует утверждения, сгенерированные IDP, чтобы определить, имеет ли пользователь разрешение на доступ к защищенному ресурсу. RP (проверяющая сторона) Синонимы проверяющей стороны SP Объяснение: RP относится к объекту, который полагается на утверждения SAML для принятия или отклонения запросов доступа пользователей. RP может быть синонимом SP, указывая на то, что он полагается на утверждения, генерируемые IDP, для авторизации пользователя.
Давайте сначала посмотрим, как работает аутентификация проверяющей стороны SAML 2.0 в Spring Security. Во-первых, мы видим, что, как и при входе в систему OAuth 2.0, Spring Security передает пользователя третьей стороне для аутентификации. Это делается посредством серии перенаправлений.
Процесс входа в ADFS
Вышеописанное описано в официальной документации Spring.,Пожалуйста, обратитесь к:SAML 2.0 Login Overview
Говоря простым языком, если вы хотите пойти на концерт Джеки Ченга (СП), вы инсайдер и идете напрямую, а охранник (Спринг Охрана) вас не впустит! Охранник сказал, что у вас нет сертификатов авторизации (авторитетов), и сказал вам, куда писать сертификаты, и дал вам рекомендательное письмо (AuthRequest). Вы отнесли рекомендательное письмо проверяющей стороне (IDP) и предоставили. ваш идентификатор и пароль, проверяющая сторона увидела ваше рекомендательное письмо, проверила формат и обнаружила, что печать подлинная, а пароль удостоверения личности также подлинный, поэтому они выписали вам сертификат и попросили вас взять его с собой на место. С этим сертификатом на концерт (СП) Вы сможете пользоваться услугами внутри столько, сколько пожелаете.
Цель первой конфигурации — настроить SP (ваше приложение Spring) и IDP (ADFS/AzureAD/Okta) для настройки доверия, поэтому SP необходимо настроить sp Metadata.xml, чтобы предоставить IDP импортированное доверие, а затем IDP необходимо предоставляет метаданные IDP. XML-файл предоставляется поставщику услуг для ознакомления. Поставщик услуг предоставляет свои собственные метаданные sp при доступе. После того, как IDP проверит его и обнаружит, что он заслуживает доверия, он позволяет вам войти в систему и перенаправляет на ссылку, которую вы настроили позже. успех. |
---|
существовать AD FS В приложении администратора найдите метаданные федерации. xml документ. щелкнуть AD FS > Служить > конечная точка, затем находится в разделе «Метаданные» URL Эту информацию можно найти по пути。Этот путь обычно/FederationMetadata/2007-06/FederationMetadata.xml , как показано ниже:
Добавьте комментарий к изображению, не более 140 слов (по желанию)
Добавьте комментарий к изображению, не более 140 слов (по желанию)
Чтобы загрузить файл метаданных, вы обычно можете загрузить его через браузер на существующем Служить URL чтобы найти файл. Например: https://<ваше имя хоста>/FederationMetadata/2007-06/FederationMetadata.xml Загрузите этот файл и сохраните его на свой компьютер.
Необязательный,Вы можете напрямую скопировать этот URL,существовать Следовать заSpring app Прямой импорт
Добавьте комментарий к изображению, не более 140 слов (по желанию)
2. Создайте доверенную сторону
Создайте свой Служить в качестве проверяющей стороны (с помощью Spring Конфигурация как пример)
Добавьте комментарий к изображению, не более 140 слов (по желанию)
Импортируйте метаданные вашего процесса
Импортируйте метаданные sp, ранее экспортированные из Spring, выполнив мастер доверия проверяющей стороны, как показано в следующих шагах:
Добавьте комментарий к изображению, не более 140 слов (по желанию)
существуют Если публичная сеть доступна, выберите первый вариант,Обновления — это просто,В противном случае выберите второй вариант, чтобы импортировать его самостоятельно.,Поскольку требование должно быть ссылкой https,Или настройте локальную сеть https
Добавьте комментарий к изображению, не более 140 слов (по желанию)
Введите отображаемое имя
Добавьте комментарий к изображению, не более 140 слов (по желанию)
Выберите политику контроля доступа
Добавьте комментарий к изображению, не более 140 слов (по желанию)
Добавьте комментарий к изображению, не более 140 слов (по желанию)
Просто завершите этот шаг.
Но есть еще один недостающий шаг. ADFS требует настройки полей для распространения. В противном случае после входа в систему вы обнаружите ошибку. Вы можете попробовать это самостоятельно. Далее идут свойства конфигурации
Создание правила политики выпуска утверждений
Для сопоставления атрибутов между AD FS и приложением,Вам необходимо создать политику публикации претензий.,Что будетАтрибуты LDAP, отправленные как утверждения,и будет LDAP атрибуты сопоставляются с SpringApp свойство.
Добавьте комментарий к изображению, не более 140 слов (по желанию)
Добавить правила
Выберите тип правила
Объявить сопоставление имен правил
ВАЖНО: Убедитесь, что По крайней мере один атрибут («NameID») настроен на использование точного написания, показанного выше.。
Настройка ADFS завершена.
Зарегистрируйте свой идентификатор Microsoft Entra, нажмите «Применить», чтобы зарегистрироваться, и зарегистрируйте программу.
Добавьте комментарий к изображению, не более 140 слов (по желанию)
Настройте URI перенаправления. Здесь мы сначала научимся использовать http://localhost:8080/saml/SSO. Обратите внимание, что для приведенной выше конфигурации ADFS требуется протокол https. что локальная сеть использует nginx или хост для настройки https локальной сети.
URI перенаправления для Azure AD
Получите метаданные idp, откройте конечную точку, конечная точка входа в систему Saml:
конечная точка
1. Минимальная зависимость SAML 2.0Служить Поддержка провайдерасуществовать spring-security-saml2-service-provider середина。он строитсуществоватьOpenSAMLна базе библиотеки。
2. Минимальная конфигурация
существоватьиспользовать Spring Boot При преобразовании приложения Конфигурация для провайдера Служить состоит из двух основных шагов.
repositories {
mavenCentral()
maven { url "https://repo.spring.io/milestone" }
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://build.shibboleth.net/nexus/content/repositories/releases/" }
}
б. Добавьте необходимый минимум зависимостей.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.security:spring-security-saml2-service-provider'
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
testImplementation 'net.sourceforge.htmlunit:htmlunit:2.70.0'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}
c. Укажите метаданные поставщика удостоверений (поставщика удостоверений).
существоватьSpring В загрузочном приложении, чтобы указать метаданные поставщика удостоверений, создайте конфигурацию, аналогичную следующей.
spring:
security:
filter:
dispatcher-types: async, error, request, forward
saml2:
relyingparty:
registration:
metadata:
entity-id: "{baseUrl}/saml2/service-provider-metadata/one"
singlelogout:
binding: POST
url: "{baseUrl}/saml/logout"
responseUrl: "{baseUrl}/saml/SingleLogout"
acs:
location: "{baseUrl}/saml/SSO"
assertingparty:
metadata-uri: https://login.microsoftonline.com/603e9946-79fd-42bc-bae2-2abda19cb695/saml2
в:
вот и все! Минимальная настройка завершена! Конечно, вы все равно можете настроить контроллер или HTML для приема пользовательских данных после успешного входа в систему. Подробности см. в исходном коде, которым я поделюсь позже.
После запуска программы доступhttp://localhost:8080 Вы сможете войти в систему. Интерфейс входа выглядит следующим образом.
Добавьте комментарий к изображению, не более 140 слов (по желанию)
После ввода пароля учетной записи интерфейс успешного входа в систему выглядит следующим образом:
Добавьте комментарий к изображению, не более 140 слов (по желанию)
Ссылка на этот пример:https://github.com/Kahen/spring-security-saml2-azure-ad-example
Справочные ссылки: