Использование Picketlink и Wildfly для аутентификации на сервере LDAP
После некоторых трудностей я настроил standalone.xml моей wildfly для аутентификации на LDAP-сервере:
<security-domain name="LDAPAuth" cache-type="default">
<authentication>
<login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required">
<module-option name="java.naming.provider.url" value="ldap://URL:389"/>
<module-option name="bindDN" value="username"/>
<module-option name="bindCredential" value="password"/>
<module-option name="baseCtxDN" value="OU=UsersDC=domain,DC=com"/>
<module-option name="baseFilter" value="(sAMAccountName={0})"/>
<module-option name="allowEmptyPasswords" value="false"/>
</login-module>
</authentication>
</security-domain>
Я также настроил свой jboss-web:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web xmlns:cr="http://www.jboss.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.jboss.com/xml/ns/javaee
http://www.jboss.org/j2ee/schema/jboss-web_5_1.xsd">
<cr:context-root>/projectName</cr:context-root>
<security-domain>LDAPAuth</security-domain>
<use-jboss-authorization>true</use-jboss-authorization>
</jboss-web>
и мой web.xml:
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>LDAPAuth realm</realm-name>
<form-login-config>
<form-login-page>/login.xhtml</form-login-page>
<form-error-page>/error.xhtml</form-error-page>
</form-login-config>
</login-config>
...
и все работает отлично.
Следующим шагом является использование PicketLink. Но я не могу узнать, как настроить PicketLink для использования моего домена безопасности.
Я могу найти примеры и учебные пособия для установки соединения LDAP программным способом и того, как я могу настроить PicketLink для работы с поставщиками удостоверений и услуг. Но, как я знаю, мой сценарий использования содержит поставщика удостоверений и поставщика услуг?!? Так что нет никакого выделенного сервера, с которым я хочу соединиться. Запрос LDAP обрабатывается моим сервером wildfly. В каждом примере я могу найти, что оба сервера являются отдельными машинами. Я понял что-то не так? После нескольких часов "погугливания" я все больше и больше путаюсь.
я добавил
<valve>
<class-name>org.picketlink.identity.federation.bindings.tomcat.idp.IDPWebBrowserSSOValve</class-name>
</valve>
Но я не знаю, как настроить picketlink.xml. Какой URL у моего провайдера идентификации? Я верю, что есть только одна часть, которую я понимаю неправильно. Кто-нибудь может мне помочь?:-D
1 ответ
Какой URL у моего провайдера идентификации?
URL-адрес будет приложением, которое вы выбрали в качестве портала /IDP для управления ответами и запросами единого входа SAML и отправки их в приложения. IDP будет содержать файл picketlink.xml, и каждое Приложение (в picketlink с именем SP) будет также файлом picketlink.xml (помещенным в WEB-INF-Folder).
Посмотрите на начинающие проекты для picketlink здесь: https://github.com/jboss-developer/jboss-picketlink-quickstarts
Есть так много примеров для picketlink...
Документация Picketlink (если вы прочитаете главы, вы получите представление о файлах определения и конфигурации IDP и SP): https://docs.jboss.org/author/display/PLINK/Identity+Provider+Configuration
Picketlink IDP - простая настройка:
<PicketLink xmlns="urn:picketlink:identity-federation:config:2.1">
<PicketLinkIDP xmlns="urn:picketlink:identity-federation:config:2.1">
<IdentityURL>http://localhost:8080/idp/</IdentityURL>
<Trust>
<Domains>locahost,mycompany.com</Domains>
</Trust>
</PicketLinkIDP>
<Handlers xmlns="urn:picketlink:identity-federation:handler:config:2.1">
<Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2IssuerTrustHandler" />
<Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2LogOutHandler" />
<Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2AuthenticationHandler" />
<Handler class="org.picketlink.identity.federation.web.handlers.saml2.RolesGenerationHandler" />
</Handlers>
</PicketLink>
Для вашего проекта (ов) у вас будет:
Приложение IDP /Portal (война,...)
- WEB-INF picketlink.xml
- WEB-INF jboss-web.xml с клапаном IDP
- В IDP вы можете использовать любой логин-модуль, который вы хотите (по умолчанию тот, который указан в jboss-web.xml)
SP / Некоторое приложение с поддержкой SSO
- WEB-INF picketlink.xml
- WEB-INF jboss-web.xml с клапаном SP
- Со стороны SP вы должны использовать домен безопасности с модулем входа (org.picketlink.identity.federation.bindings.wildfly.SAML2LoginModule)