DokuWiki

It's better when it's simple

ユーザ用ツール

サイト用ツール


ja:plugin:authad

Active Directory 認証プラグイン

互換性のある DokuWiki バージョン

Weatherwax

plugin Microsoft Active Directoryに対する認証を提供する

最終更新日
2014-04-03
種類
Auth
リポジトリ
ソース

この拡張機能は 'plugin' または 'template' 名前空間にないため、無視されます。

類似 adfs, pureldap, saml

タグ !bundled

概要

この認証バックエンドは、DokuWiki が Active Directory サーバに対して認証できるようにします。

Active Directory 認証は、汎用のLDAP認証プラグインを用いても可能ですが、専用のAD認証プラグインを使うとより簡単になります。 素晴らしいadLDAP ライブラリと James Van Lommel の貢献が元となっています。 adLDAP ライブラリは DokuWiki に同梱されており、ダウンロードする必要はありません。

さらに、NTLM と Kerberos に基づいたシングルサインオンの使用も可能です。

利用方法

このプラグインを使用する前に、いくつかの設定をする必要があります:

  1. ADサーバを準備する。サーバー設定を参照してください。
  2. プラグイン管理で Active Directory 認証プラグインを有効にする。
  3. サイト設定管理で接続の詳細を定義します。
  4. 設定項目: authtypeauthad を選択して、この認証プラグインに切り替える。

サイト設定管理による変更から設定を保護するために conf/local.protected.php ファイルに設定を保存します。

ユーザー管理ユーザーとそのグループの変更が可能です。 可能なのは変更だけで AD認証では新規ユーザーの追加はできません。 また、ユーザによる自己登録はAD認証プラグインでは無効です。 現在、wikiから Active Directory のパスワードポリシーを確認することができないので、 設定項目: disableactionsresendpwd (新しいパスワードをセット)を無効にするか ADパスワードポリシーを変更するのをお薦めします。

サーバー設定

サーバー設定はadLDAP PHPライブラリの要件を満たす必要があります。

Apache

UbuntuやDebianでApacheを使用している場合は、php5-ldap パッケージをインストールしてください。 別のディストリビューション上でApacheを使用している場合は、このガイドに従って下さい。 SLES の場合も php5-ldap パッケージをインストールしてください。 Arch Linux を使用している場合、pacman で ​php-ldap​ パッケージをインストールしてください。

MS IIS7

MS IIS7 サーバーの場合、php-ldapphp-openssl 拡張機能をインストールする必要があります(二番目はSSLのサポートが必要な場合のみ)。 php-openssl のために、依存関係のDLL ssleay32.dlllibeay32.dll をシステム上で利用可能にする必要があります。 SSLを使用してADにアクセスする場合、TLS_REQCERT never 行を記載した ldap.conf ファイルを C:\OpenLDAP\sysconf に作成してください。 これによって LDAP呼出し時のAD証明書チェックを無効にします。
警告!これは中間者攻撃される可能性があります。 このファイルに有効な証明書を設定することが、より良い方法です(詳細は http://linux.die.net/man/5/ldap.conf) 。

lighttpd

Debian を使用している場合は、php5-ldap パッケージをインストールしてください。

その他

Apache IIS7以外のWebサーバーを使用している場合、自分自身で把握する必要があります。 成功した場合は、この記事を更新してください。

設定

サイト設定管理の “認証” 部分にある設定項目: authtypeauthad を選択するか、変更から保護された設定を保存する conf/local.protected.php ファイルに対応する行を追加することで、バックエンドは有効になります。

サイト設定管理の “プラグイン” 部分にAD認証プラグインの設定があります。 ここに AD サーバーと接続詳細を定義します。

より一般的な認証関連設定も利用可能です。

設定例

プラグイン設定のためにサイト設定管理を利用可能です。 しかし、サイト設定管理によって上書されないように、このバックエンドの設定を conf/local.protected.php に置くことをお奨めします。

最低限の設定項目は以下の通りです:

conf/local.protected.php
  <?php
  // 一般的な DokuWiki 設定項目
  $conf['useacl']         = 1;
  $conf['authtype']       = 'authad';
 
  // 各自の Active Directory 設定項目
  $conf['plugin']['authad']['account_suffix']     = '@my.domain.org';
  $conf['plugin']['authad']['base_dn']            = 'DC=my,DC=domain,DC=org';
  $conf['plugin']['authad']['domain_controllers'] = 'srv1.domain.org, srv2.domain.org'; //複数設定可

必要に応じて、以下の設定項目も可能です:

  $conf['plugin']['authad']['admin_username']        = 'root';
  $conf['plugin']['authad']['admin_password']        = 'pass';
  $conf['plugin']['authad']['sso']                = 1;
  $conf['plugin']['authad']['real_primarygroup']  = 1;
  $conf['plugin']['authad']['use_ssl']            = 1; // ssl、tls オプションは同時使用不可
  $conf['plugin']['authad']['use_tls']            = 1; // どちらか片方だけ
  $conf['plugin']['authad']['debug']              = 1;
  $conf['plugin']['authad']['recursive_groups']   = 1; // AD のグループの数が多い場合、0 に切り替えると性能が向上します。しかし間接的なメンバーシップは動作しません。
  $conf['plugin']['authad']['additional']         = 'department,office'; // 取得する追加属性
  // 数日前にパスワード期限切れをユーザーに警告する(バージョン2012年3月10日以降)
  $conf['plugin']['authad']['expirywarn']         = 5;

admin_usernameadmin_password は、例えばメール通知の登録を可能にするために必要です。 ユーザーの詳細情報を照会するために、このアカウントは AD に結び付けられます。

管理者とスーパーユーザー

スーパーユーザー権限を設定には、このコードを local.protected.php に記入してください:

$conf['manager']   = '@LDAPGROUPNAME';
$conf['superuser'] = '@LDAPGROUPNAME';

AD グループ名は、“@” を前に付与されスペースはアンダースコアに置換えられます。 例えば、AD グループが “Internal DokuWiki Admins” の場合、Dokuwiki では “@Internal_DokuWiki_Admins” になります。 他の LDAP構文は不要です(例:全ての “CN=”, “DN=”, 等々)。 グループの名前だけが必要とされます。

他のオプション

$conf['plugin']['authad'] で指定された他のオプションは、直接 adldap ライブラリに渡されます。 他にどのようなオプションが使用できるのかの詳細については、adLDAP マニュアルを参照して下さい。

シングルサインオンとの組み合わせでは、Windowsドメイン固有の設定を追加することができます。 例)NTLMまたはKerberosドメインに応じて別のActive Directoryサーバーに対して認証する。 (小文字)ドメインは $conf['plugin']['authad'] の設定にサブキーとして使用する必要があります。例)デフォルト以外のADサーバーを使用して Foobar Windowsドメインの全てのユーザーを識別するためには、設定に次の追加の行を追加します:

  $conf['plugin']['authad']['foobar']['account_suffix']     = '@foobar.domain.org';
  $conf['plugin']['authad']['foobar']['base_dn']            = 'DC=foobar,DC=domain,DC=org';
  $conf['plugin']['authad']['foobar']['domain_controllers'] = 'otherad.domain.org';
  $conf['plugin']['authad']['foobar']['admin_username']        = 'otherroot';
  $conf['plugin']['authad']['foobar']['admin_password']        = 'otherpass';

ドメイン未指定時に代替する、デフォルトのドメインをオプションとして設定することができます:

  $conf['plugin']['authad']['domain'] = 'foobar';

複数ドメインを設定すると、ログイン画面にドメインの選択肢が表示されます。

単一の親の下に複数のDCを持つ組織を使用している場合、デフォルトの Port 389ではなく Port 3268に接続する必要があるかもしれません。 Otherwise, users from the remote DC may not show up as members of any groups. The easiest way to do this is to change adLDAP.php in the source code, because the base call to ldap_connect needs port as a separate argument (line 364 in inc/adLdap.php version 3.3.2).

ユーザー情報とパスワードの変更

ユーザーはユーザー情報の更新ボタンを使用して、ユーザー情報(フルネーム、メールアドレス、パスワード)を変更できます。 これには admin_usernameadmin_password オプションによる特権ユーザーの設定が必要です。 パスワードの変更は、SSL 又は TLS を介してのみサポートされます。 adLDAP マニュアルの LDAP over SSL を参照して下さい。

DokuWikiの自動生成されたパスワードは、Active Directoryのデフォルトのパスワードポリシーに一致しないことに注意してください。 ADのパスワードポリシーを調整するか、disableactions 定義オプションを使用して”パスワード再発行”オプションを無効にします。

グループ名とユーザー名

グループ名とユーザー名は DokuWiki 内部で整形されます。 そのため Active Directory サーバに設定されている内容と異なる場合があります。 スペースはアンダースコアに置き換えられます。“\”(バックスラッシュ)と “#“(ハッシュ記号)は削除されます。

例: Domain Users は DokuWiki 内では Domain_Users になります。 ACL を手作業で編集する場合、 Domain%5fUsers と正しくエンコーディングする必要があります。 ”%5f” はアンダースコアを表します。

アクセス制御リスト設定時、ユーザー名やグループ名を指定する際、このことを念頭においてください。

シングルサインオンの有効化

Enabling SSO(英語)参照。

他のプラグインへの影響

AD認証バックエンドへ切り替えると、いくつかのプラグインは正常に動作しないかもしれません。 具体的には、有効な認証情報が提供されない場合、ユーザー表示名取得は機能しません。 WikiStatistics プラグインはこれに該当しますが、ユーザー名のみを表示するという簡単な回避策が適用可能です。

PHP の LDAP 拡張のページクエリ機能に対応していないので、AD認証プラグインを使用し、アクティブディレクトリに 1000以上のオブジェクトが存在すると、認証バックエンドから全ユーザーを取得しようとするプラグインは失敗します。 IssueTrackerプラグインはその一つです。

ja/plugin/authad.txt · 最終更新: by sawachan

特に明示されていない限り、本Wikiの内容は次のライセンスに従います: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki