1

私のセットアップは次のとおりです。

  • EAP 6.4.18
  • keycloak-saml アダプター
  • サードパーティ IdP サーバー (キークローク サーバーではありません)

EAR 内の Web アプリケーションの 1 つを保護しようとしています。現在、私のstandalone.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 によって返されたロールが一致しないことです。

ユーザーがセッションで正しいロールを持つように、これら 2 つのロール マッピングを構成するにはどうすればよいですか?

タイ。

ノート:

私は picketlink サブシステムでこのようなことをしました。以下では、プロパティ ファイルを使用してこのようなマッピングを行いました。キークローク アダプターでも同様のことができると思いましたが、「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"...
4

1 に答える 1