0

CAS と LDAP を組み合わせて使用​​すると、いくつかの問題が発生します。複数のアプリケーションに SSO ソリューションを実装したいと考えています。認証はこれまでのところうまく機能しています。LDAP で構成されているロールに基づいてユーザーを承認したいと考えています。問題は、CAS がユーザーの役割を提供しないことです。

deployerConfigContext.xmlこれまでのところ、 を構成する必要があることがわかりました。また、さまざまなチュートリアルも見つけましたが、ほとんどは間違ったバージョンの CAS で動作するか、希望どおりに動作しません。

ユーザーは にありcn=admin,cn=users,dc=manager,dc=local、グループは にありcn=admins,ou=groups,dc=manager,dc=localます。CAS のバージョンは 3.5.2 です

私は次のようなものを挿入しようとしました:

<bean id="attributeRepository" class="org.jasig.services.persondir.support.StubPersonAttributeDao">
    <property name="backingMap">
        <map>
            <entry key="uid" value="uid" />
            <entry key="eduPersonAffiliation" value="eduPersonAffiliation" />
            <entry key="groupMembership" value="groupMembership" />
        </map>
    </property>
    <property name="query" value="(uid={0})" />
    <property name="contextSource" ref="contextSource" />
    <property name="ldapAttributesToPortalAttributes">
        <map>
            <entry key="cn" value="Name" />
            <entry key="home" value="homeDirectory" />
        </map>
    </property>
</bean>

queryCAS は、プロパティ、contextSourceおよびが気に入らないと私に言いましたldapAttributesToPortalAttributes。「単純な」属性 homeDirectory を取得したかったのです。

その邪悪なxmlファイルを構成する方法について、誰かヒントを教えてもらえますか? ご希望であれば、完全な xml ファイルを提供することもできます。

アップデート

attributeRepositoryいくつかいじった後、このサイトで as を構成しようとしました: https://wiki.jasig.org/display/CASUM/Attributes in chapter Populate Principal's attributes with LDAP repository. その結果、CAS は開始されず、代わりにメッセージが表示されます

Bean property 'ldapAttributesToPortalAttributes' is not writable or has an invalid setter method.

attributeRepositoryはこのように見えます:

<bean id="attributeRepository"  class="org.jasig.services.persondir.support.ldap.LdapPersonAttributeDao">
    <property name="ldapAttributesToPortalAttributes">
        <map>
            <entry key="cn" value="Name" />
            <entry key="home" value="homeDirectory" />
        </map>
    </property>
</bean>
4

1 に答える 1

3

私は次の豆を持っています

<bean id="attributeRepository"
    class="org.jasig.services.persondir.support.ldap.LdapPersonAttributeDao">
    <property name="baseDN" value="ou=groups,dc=manager,dc=local"/>     
    <property name="contextSource" ref="contextSource" />
    <property name="requireAllQueryAttributes" value="true"/>
    <property name="queryAttributeMapping">
        <map>
            <entry key="username" value="sAMAccountName" />
        </map>
    </property>     
    <property name="resultAttributeMapping">
        <map>               
            <entry key="displayName" value="cn" />
        </map>
    </property>
</bean>

displayName属性をcnとしてマッピングしている場所。deployerConfigContext.xmlの下の行には、allowedAttributesがあり、存在しない場合は追加できます。これを使用して、その情報をセッションにロードします。

<bean
    id="serviceRegistryDao"
    class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl">
        <property name="registeredServices">
            <list>
                <bean class="org.jasig.cas.services.RegexRegisteredService">
                    <property name="id" value="0" />
                    <property name="name" value="HTTP and IMAP" />
                    <property name="description" value="Allows HTTP(S) and IMAP(S) protocols" />
                    <property name="serviceId" value="^(https?|imaps?)://.*" />
                    <property name="evaluationOrder" value="10000001" />
                    <property name="allowedAttributes">
                        <list>
                            <value>cn</value>
                        </list>
                    </property> 
                </bean>                    
            </list>
        </property>
    </bean>

これらの値を CAS から返すには、casServiceValidationSuccess.jsp (WEB-INF/view/jsp/protocol/2.0 にあります) を変更します。

<cas:attributes>
<c:forEach var="auth" items="${assertion.chainedAuthentications}">
<c:forEach var="attr" items="${auth.principal.attributes}" >
<cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}        </cas:${fn:escapeXml(attr.key)}>
</c:forEach>
</c:forEach>
</cas:attributes>
于 2013-12-24T14:40:20.303 に答える