3

アプリケーション(すべてJAVA)でSSOを実行するには、CASサーバーをセットアップする必要があります。これが私の状況です:

  1. CAS1: ORACLE LDAP に基づく既存の CAS サーバー (CAS1 と LDAP を制御することはできません)。これは無視する予定です。この CAS に統合されたいくつかのアプリケーション。

  2. CAS2: 新規ユーザーが多いため、MS Active Directory に基づく新しい CAS サーバーをセットアップする予定です。AD でそれらを維持する予定です。CAS2 で SSO をセットアップする予定のアプリケーションも同じです。

必要なのは、既存の LDAP のユーザーと新しい AD のユーザーの両方が SSO によってアプリケーションにログインできることです。

  1. LDAP と AD の両方を使用するように新しい CAS をセットアップするなど、簡単な方法はありますか。そのため、両側のユーザーがアプリケーションにログインできます。可能であれば、これは私が考えるより良い方法です。詳細な例はありますか?

  2. 2 つの CAS 間のフェデレーションをセットアップできますか? Jasig CASは可能ですか?

助けてください!どうもありがとう!

4

1 に答える 1

1

はい、CAS が複数のソースに対して認証することは可能です。Bean には、;authenticationManagerという名前のプロパティが必要です。そこで、複数のBeanauthenticationHandlersを定義します。AuthenticationHandler私のセットアップでは、(Munin/Nagios からユーザーを監視するための) ローカル ファイルと認証ハンドラーがありますBindLdapAuthenticationHandler

<property name="authenticationHandlers">
    <list>
        <!-- This is the authentication handler that authenticates 
        services by means of callback via SSL, thereby validating 
        a server side SSL certificate. -->
        <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" />
        <bean class="org.jasig.cas.adaptors.generic.FileAuthenticationHandler" p:fileName="${cas.localuser.file}" />
        <bean class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler"
            p:timeout="10000"
            p:filter="${ldap.auth.filter}"
            p:searchBase="${ldap.base.dn}"
            p:ignorePartialResultException="true"
            p:contextSource-ref="contextSource"
            p:searchContextSource-ref="searchContextSource"
        />
    </list>
</property>

認証したい他のもののための認証ハンドラーを追加するだけです。CAS LDAP ハンドラーについてはhttps://wiki.jasig.org/display/CASUM/LDAPを、CAS Active Directory ハンドラーについてはhttps://wiki.jasig.org/display/CASUM/Active+Directoryを確認してください。

この仕組みでは、CAS は各ハンドラーに対して順番に認証を試みます。最初に成功したもので、CAS ログインが成功します。そのため、LDAP に uid=jsmith のレコードがあり、AD に cn=jsmith のレコードがあり、両方が同じパスワードを持っている場合、CAS で最初に定義された方が常に優先されます! したがって、システム間でログイン ID の競合がないことを確認する必要があります。そうしないと、望ましくない副作用が発生する可能性があります (特に、LDAP の jsmith が AD の jsmith と同じ人物ではない場合)。

SAML 検証 ( for などmod_auth_cas) を使用する場合は、他の考慮事項もある場合があります。attributeRepository認証時に個人のレコードから返されるプロパティをリストする Bean を定義し、サービスが を使用してチケットを検証でき/samlValidateます。複数のディレクトリからプルできる Bean クラスがあるかどうかはわかりませんが、samlValidateこれを使用していない場合は問題にならないかもしれません。

それで、より良い方法はありますか?可能であれば、真の認証情報源を 1 つにまとめてください。

CASフェデレーションについて:いいえ。お互いのチケットを信頼するようにサーバーをセットアップできるかもしれませんが、代わりに、できるだけ少ない認証情報源に対して認証する 1 つの CAS 環境 (必要に応じてクラスター化することもできます) を使用することをお勧めします。

于 2014-04-17T11:22:38.380 に答える