web-dev-qa-db-ja.com

シングルサインオン(SSO):CASサービスの認証方法としてActive Directoryを使用するにはどうすればよいですか?

Liferayへのポータルを開発していて、そこにシングルサインオンメカニズム(SSO)を適用したいと考えています。複数のWebアプリケーションの集中認証に Jasig CAS を使用しています。これまで、認証方法としてCASを使用できることはわかっていますが、次のステップは、インテリジェンスを追加して、認証を要求することです。 Active Directory サーバ。

これは、認証が行われる「データベース」としてADを使用することで可能になるはずですが、私はこれらのことに慣れておらず、JasigCASでこれを行う方法がわかりません。

このタスクを実行する方法の手がかりはありますか?

12
mico

私はここでいくつかの仮定をしているので、私が目標から外れている場合は私に知らせてください:

  1. 3.3.2から3.4.8までのバージョンのCASを使用しています。
  2. Bind LDAPハンドラー(FastBindについては以下の参照を参照)を使用して、LDAP(KerberosまたはSPNEGOについては以下の参照を参照)を介してCASをActiveDirectoryに結び付けたいと考えています。
  3. あなたはMavenを介してソースからCASを構築することに精通しています。

前提条件

  • (「ldap://」ではなく)「ldaps://」を介してADにバインドする場合、CASサーバー上のJVMはActiveDirectoryサーバーのSSL証明書を信頼する必要があります。 ADに自己署名証明書を使用している場合は、これをJVMのトラストストアにインポートする必要があります。

概要

CASソースツリー内で、次のファイルに変更を加える必要があります。

  • cas-server-webapp/pom.xml
  • cas-server-webapp/src/main/webapp/WEB-INF/deployerConfigContext.xml

詳細

pom.xml:

<dependencies>内に以下を追加します。

<!-- LDAP support -->
<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>cas-server-support-ldap</artifactId>
    <version>${project.version}</version>
</dependency>

deployerConfigContext.xml:

  1. 認証ハンダーを再構成します。

    • <property name="authenticationHandlers">を探します。この中には<list>があり、この中には(おそらく)2つの<bean ...>要素があります
    • これを保管してください:

      <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" />
      
    • もう1つの<bean>(おそらく)は、現在使用している認証方法に対応しています。 (CASが外部サービスを使用せずにこれを行う方法はいくつかあるため、質問に基づいて明確ではありません。デフォルトはSimpleTestUsernamePasswordAuthenticationHandlerであり、ユーザー名がパスワードと等しい限り認証されます)。その<bean>を次のように置き換えます。

      <!-- LDAP bind Authentication Handler -->
      <bean class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler">
      <property name="filter" value="uid=%u" />
          <property name="searchBase" value="{your LDAP search path, e.g.: cn=users,dc=example,dc=com}" />
          <property name="contextSource" ref="LDAPcontextSource" />
          <property name="ignorePartialResultException" value="yes" /> <!-- fix because of how AD returns results -->
      </bean>
      
    • AD構成に従って、「searchBase」プロパティを変更します。

  2. LDAPのコンテキストソースを作成します。

    • これをルート<beans>要素内のどこかに追加します。

      <bean id="LDAPcontextSource" class="org.springframework.ldap.core.support.LdapContextSource">
          <property name="pooled" value="false"/>
          <property name="urls">
              <list>
                  <value>{URL of your AD server, e.g.: ldaps://ad.example.com}/</value>
              </list>
          </property>
          <property name="userDn" value="{your account that has permission to bind to AD, e.g.: uid=someuser, dc=example, dc=com}"/>
          <property name="password" value="{your password for bind}"/>
          <property name="baseEnvironmentProperties">
              <map>
                  <entry>
                      <key>
                          <value>Java.naming.security.authentication</value>
                      </key>
                      <value>simple</value>
                  </entry>
              </map>
          </property>
      </bean>
      
    • それに応じて、「urls」、「userDn」、「password」を変更します。

Cas-server-webappを再構築して試してください。

参照:

28
JohnNKing