Моя настройка:
- EAP 6.4.18
- адаптер keycloak-saml
- Сторонний IdP-сервер (не сервер keycloak)
Я пытаюсь защитить одно из веб-приложений в EAR. В настоящее время мой автономный. xml выглядит так:
<subsystem xmlns="urn:jboss:domain:keycloak-saml:1.3">
<secure-deployment name="myapp.war">
<SP entityID="https://mydomain/myapp/" sslPolicy="EXTERNAL" nameIDPolicyFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" logoutPage="/logout.jsp" forceAuthentication="false" isPassive="false" turnOffChangeSessionIdOnLogin="false">
<Keys>
<Key signing="true" encryption="false">
<KeyStore password="pass" file="/path-to/keyStore.jks">
<PrivateKey alias="sp" password="pass"/>
<Certificate alias="sp"/>
</KeyStore>
</Key>
</Keys>
<IDP entityID="...entityID...">
<SingleSignOnService signRequest="true" validateResponseSignature="true" requestBinding="POST" bindingUrl="...sso dinding..." assertionConsumerServiceUrl="https://mydomain/myapp/saml"/>
<SingleLogoutService validateRequestSignature="true" validateResponseSignature="true" signRequest="true" signResponse="true" requestBinding="POST" responseBinding="POST" postBindingUrl="...slo binding..." redirectBindingUrl="...redirect..."/>
<Keys>
<Key signing="true" encryption="false">
<KeyStore password="pass" file="/path-to/keyStore.jks">
<Certificate alias="idp"/>
</KeyStore>
</Key>
</Keys>
</IDP>
</SP>
</secure-deployment>
</subsystem>
Эта часть работает просто отлично. Я перенаправлен на IdP и могу войти. Проблема в том, что мои роли приложений и роли, возвращенные IdP, не совпадают.
Как настроить сопоставление ролей между этими двумя так, чтобы у пользователя были правильные роли в сеансе?
Ty.
Примечание:
Я сделал что-то подобное с подсистемой picketlink. Ниже я использовал файл свойств для такого сопоставления. Я думал, что нечто подобное можно сделать с помощью адаптера keycloak, но схема «keycloak-saml: 1.1», похоже, не позволяет выбрать домен безопасности.
<security-domain name="my-realm">
<authentication>
<login-module code="org.picketlink.identity.federation.bindings.jboss.auth.SAML2LoginModule" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
<login-module code="org.jboss.security.auth.spi.RoleMappingLoginModule" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="rolesProperties" value="${jboss.server.config.dir}/rolesMapping-roles.properties"/>
<module-option name="replaceRole" value="true"/>
</login-module>
</authentication>
С подсистемой picketlink я мог выбрать свой домен безопасности, и произошло бы сопоставление ролей.
<service-provider name="myapp.war" security-domain="my-realm"...