Friday, February 17, 2012

AlfrescoのLDAP連携

こんにちは。てらしたです。

前回からかなり日があいてしまいました。前回の最後に、"次回は、Apache Directory Studioを使って簡単なディレクトリデータベースを作成する方法を紹介したいと思います。"と書いておいてアレなんですが、これに関してはググればけっこう解説記事が出てくるのでやっぱりやめて、今回はAlfrescoのLDAP連携の方法を紹介したいと思います。

  1. <tomcat_dir>/shared/classes/alfresco/extension以下に次のような階層でディレクトリを作成します。
    $ mkdir -p <tomcat_dir>/shared/classes/alfresco/extension
    /subsystems/Authentication/ldap/ldap-test
    
    ここで、最後の"ldap-test"というディレクトリ名は、例えば複数のLDAPサーバと連携する必要がある場合にそれぞれを区別するために付ける名前なので、どのような名前でもかまいません。
  2. このディレクトリに以下のようにcommon-ldap-context.xml、ldap-authentication-context.xml、ldap-authentication.propertiesの3つのファイルをコピーします。
    $ cp <tomcat_dir>/webapps/alfresco/WEB-INF/classes/alfresco
    /subsystems/Authentication/common-ldap-context.xml 
    <tomcat_dir>/shared/classes/alfresco/extension/subsystems
    /Authentication/ldap/
    
    $ cp <tomcat_dir>/webapps/alfresco/WEB-INF/classes/alfresco
    /subsystems/Authentication/ldap/ldap-authentication-context.xml 
    <tomcat_dir>/shared/classes/alfresco/extension/subsystems
    /Authentication/ldap/ldap-test/
    
    $ cp <tomcat_dir>/webapps/alfresco/WEB-INF/classes/alfresco
    /subsystems/Authentication/ldap/ldap-authentication.properties 
    <tomcat_dir>/shared/classes/alfresco/extension/subsystems
    /Authentication/ldap/ldap-test/
    
  3. コピーしたldap-authentication.propertiesを編集します。書き換える必要があるのは主に以下の部分です。
    # LDAPサーバのURLとポート
    ldap.authentication.java.naming.provider.url=ldap://127.0.0.1:389
    
    # LDAPサーバに接続するLDAPユーザの識別名
    #(OpenLDAPの場合はslapd.confにrootdnで指定した識別名)
    ldap.synchronization.java.naming.security.principal=cn\=Manager,
    dc\=aegif,dc\=jp
    
    # 上記のユーザのパスワード
    #(OpenLDAPの場合はslapd.confでrootpwに設定した値)
    ldap.synchronization.java.naming.security.credentials=secret
    
    AlfrescoにはLDAP連携の機能として、ユーザ認証をLDAPサーバに委譲する「認証」と、ユーザ情報をLDAPサーバからAlfrescoにインポートする「同期」の2種類が用意されています。認証を委譲する場合の設定箇所は以下の部分です。
    # 認証時のユーザ名のフォーマット
    #(%sの部分にログイン画面でユーザが入力したIDが入ります)
    ldap.authentication.userNameFormat=uid=%s,ou=users,dc=aegif,
    dc=jp
    
    LDAPサーバからユーザ情報を同期させる場合の設定箇所は以下の部分です。ここでは省略していますが、グループを同期させる場合はグループの同期設定もどうファイル内で設定します。
    # ユーザのobjectclass
    ldap.synchronization.personQuery=(objectclass\=inetOrgPerson)
    
    # ユーザの検索ベース
    ldap.synchronization.userSearchBase=ou\=users,dc\=aegif,dc\=jp
    
    # Alfrescoユーザの「ユーザID」に対応させるアトリビュート
    ldap.synchronization.userIdAttributeName=uid
    
    # Alfrescoユーザの「名」に対応させるアトリビュート
    ldap.synchronization.userFirstNameAttributeName=givenName
    
    # Alfrescoユーザの「姓」に対応させるアトリビュート
    ldap.synchronization.userLastNameAttributeName=sn
    
    # Alfrescoユーザの「メールアドレス」に対応させるアトリビュート
    ldap.synchronization.userEmailAttributeName=mail
    
  4. alfresco-grobal.propertiesを編集して、認証のchainの設定を行います。ここで、"ldap-test:ldap"のldap-testの部分は手順1で付けたディレクトリ名と一致している必要があります。
    authentication.chain=alfrescoNtlm1:alfrescoNtlm,ldap-test:ldap
    
  5. Alfrescoを起動します。
環境によって異なる部分も出てくると思いますが、基本的な設定方法は以上です。手順3で編集したldap-authentication.propertiesには他にも設定項目が細かく用意されており、環境に合わせて柔軟に設定を変えることができるので、色々試してみていただければと思います。

No comments: