サポート > リポジトリ > アカウント > Windows Active Directory/LDAP による認証

ログオンアカウントのパスワード認証に Windows Active Directory または LDAP を使うことができます。

Wagby は標準では (Wagby内部で管理している) アカウントとパスワードを用いたログオン認証を行います。ここで説明する方法を使うと、パスワード認証処理に Windows Active Directory / LDAP 認証を用いることができます。

「環境 > サーバ > 認証」を設定します。

図1 認証に関する設定

LDAP

認証方式に "LDAP" を指定します。次の設定欄が有効になります。

設定欄 説明 記述例
LDAPサーバのURL LDAPサーバのURLを指定します。 ldap://ldap.jasminesoft.co.jp/
ユーザ情報のDN ユーザ情報が登録されているディレクトリのパスを指定します。ユーザ名は「{0}」の部分に置き換わります。 cn={0}
ユーザ情報の検索開始エントリ ユーザ情報の検索開始エントリを必要に応じて設定します。 dc=jasminesoft,dc=co,dc=jp
LDAP接続用ユーザ LDAP 接続ユーザを指定します。匿名アクセスを許可している場合は設定不要です。
LDAP接続用パスワード LDAP 接続ユーザのパスワードを指定します。匿名アクセスを許可している場合は設定不要です。
LDAP認証とJDBC認証を併用する LDAP認証 と JDBC認証を併用することができます。LDAP, JDBC いずれかのパスワードに合致すればログインできます。(*1) 併用は行うが、特別なアカウント(admin など管理者系)のみ JDBC 認証を行いたい場合は、JDBC 認証を行いたくないアカウントの juser テーブルの passwd カラムを NULL とすることで JDBC 認証ではログオンできなくなります。
1. そのためjuserテーブルに簡易なパスワードを設定しないように注意する必要があります。

認証方式に "ActiveDirectory" を指定します。次の設定欄が有効になります。

設定欄 説明 記述例
ActiveDirectoryサーバのURL ActiveDirectoryサーバのURLを指定します。 ldap://adserver.jasminesoft.co.jp/
ActiveDirectoryドメイン ActiveDirectoryのドメインを指定します。 jasminesoft.co.jp
ユーザ検索フィルタ ActiveDirectoryのユーザ検索フィルタを指定します。通常、このフィルタを指定する必要はありません。未設定時は "(&(objectClass=user)(userPrincipalName={0}))" が利用されます。 (&(objectClass=user)(sAMAccountName=XXXXX))

Windows Active Directory / LDAP に登録済みの「アカウント」と同じものをアカウントモデル(juser テーブル)の "userid" 項目に登録してください。なお juser テーブルの「パスワード」はダミーの値を設定してください。それ以外の juser テーブルの項目は任意に設定してください。[参考:juserの関連テーブル...]

実際の認証処理では、この (juserテーブルの) パスワードは使われなくなります。

アカウントの同期についての考え方

Windows Active Directory / LDAP 上のアカウントとの「自動同期」には対応していません。

一般的な運用は Windows Active Directory / LDAP をマスタとします。マスタに加わった変更情報を何らかの方法で抽出し、Wagby の juser テーブルへ反映させるようにします。

具体的には Wagby の REST API を呼び出す形の密結合的な同期から、差分情報を CSV 形式ファイルでまとめて、夜間にアップロード更新処理を行って同期するという方法などがあります。

  • LDAP と ActiveDirectory の併用を行うことはできません。
  • ActiveDirectory と JDBC認証(juserテーブル利用)の併用を行うことはできません。

Wagby Designer の設定は application.properties に反映されます。

LDAP 用設定

wagby.security.ldap.url=${LDAPサーバのURL}
wagby.security.ldap.userSearchFilter=${ユーザ情報のDN}
wagby.security.ldap.userSearchBase=${ユーザ情報の検索開始エントリ}
wagby.security.ldap.managerDn=${LDAP接続用ユーザ}
wagby.security.ldap.managerPassword=${LDAP接続用ユーザのパスワード}

LDAP 認証とJDBC認証(juserテーブル利用)を併用する場合

wagby.security.useJdbcAuthentication=true

ActiveDirectory 用設定

wagby.security.activeDirectory.url=${ActiveDirectoryサーバのURL}
wagby.security.activeDirectory.domain=${ActiveDirectoryドメイン}

Spring Security について

Windows Active Directory / LDAP 認証は、Wagby に同梱されている Spring Security という認証・認可のためのオープンソース製品を用いて実現しています。開発者は Spring Security の仕組みを活かした認証処理のカスタマイズを行うこともできます。[技術資料の詳細...]

R6/R7 から移行する場合は "R7リポジトリからR8リポジトリへの移行 > CASからSpringSecurityへの移行" をお読みください。

シングルサインオンとは、一回の認証(ログオン)で複数のアプリケーションを利用できるようにする仕組みです。シングルサインオンの実現には「認証サーバ」を用意する必要があります。認証サーバを経由することで、Windows Active Directory / LDAP といった認証方式以外にも、多くの認証に対応することができます。

Wagby は「認証サーバ」を同梱していません。すでに組織内で運用中、または新規に導入予定の認証サーバと Wagby を連携させる手続きが必要です。これは Wagby が同梱している Spring Secutity のカスタマイズを伴いますので、ご購入先の Wagby パートナーへご相談ください。

ログの取得

想定どおりに動作しない場合、次の手順で詳細なログを取得することができます。

  1. ログレベルの変更

    wagbyapp/webapps/$(APPNAME)/WEB-INF/classes/log4j.properties の末尾に以下のログ出力設定を追加して下さい。

    log4j.logger.org.springframework.security.ldap=DEBUG
    
  2. log4j.properties 変更後、Wagby アプリケーションを再起動します。
  3. 下記のケースでログオンを行い、結果のログを確認してください。
    • LDAPに登録してあるID/パスワードを入力した場合。
    • 誤ったパスワードを入力した場合。
    • LDAPに登録していないIDを入力した場合。
Wagby Developer Day 2018