2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LDAP の仕組み理解:WordPress の認証で Active Directory を利用する

Posted at

本記事の目的

  • 以下記事にて「LDAP ってどんなもの?」ということをざっくり説明した。

  • 本記事は、実際に LDAP の設定を行ってみて仕組みをもう少し理解するためのもの。ここでは WordPress を LDAP クライアント、ActiveDirectory(WindowsServer2022)を LDAP サーバーとして動作確認する。検証イメージは以下図の通り。
    fig-001.png

手順

今回 Azure 上に Ubuntu20.04(WordPress 用) および WindowsServer2022(Active Directory 用) を用意した。手順は以下の通り。

  • ActiveDirectory の構築
  • ActiveDirectory でのユーザ情報追加
  • WordPress 準備
  • WordPress プラグイン設定
  • LDAP 認証の動作確認

なお、手順詳細の後に「WordPress の LDAP 設定にあたり何を行ったか」を解説している項目を設けていいるので、そちらも参照しながら検証するのが good。

手順詳細

ActiveDirectory の構築

ActiveDirectory の構築については特に何も参照しなかったが、以下とか参考になりそう。

  • なお上記 URL の「Active Directory ドメイン サービス構成ウィザード」において、ルートドメイン名は ad.co.jp としています(後々使う情報)。

ActiveDirectory でのユーザ情報追加

  • 以下のようにユーザを追加する。
    • Manager:ou の所属なし、グループについては Administrators に所属させておく。LDAP バインド用のユーザ(バインドについては後述)。
      ad-001.png
    • user001 と user002:ou=department001 を新規作成し、所属させる。ActiveDirectory の登録情報を用いて WordPress にログインできるか確認するためのユーザ。
      ad-002.png
    • user003:ou=department002 を新規作成し、所属させる。。ActiveDirectory の登録情報を用いて WordPress にログインできるか確認するためのユーザ。
      ad-003.png

WordPress 準備

以下を参考にさせていただきました、ありがとうございました!

  • Azure 上に構築している際には、「受信ポートの規則」にて http 通信を許可しないと、ブラウザでアクセスできないので注意。
    fig-002.png

WordPress プラグイン設定

プラグインインストール

  • 「LDAP」あたりの単語で検索し、Active Directory Integration / LDAP Integration をインストール、有効化する。

fig-003.png

  • このプラグインを使うためには、おそらく以下コマンドを実施のうえで再起動する必要がありそう(そうしないと、アラートが常時表示される)。
# sudo apt-get -y install php-ldap

プラグイン設定

  • LDAP Configuration のタブについて、以下の通り設定。

    • LDAP Server については、Active Directory のプライベート IP を設定。
    • Username と Password については、前手順で作成した Manager ユーザの情報を入力。
      fig-004.png
  • 「Test Connection & Save」をクリック。問題なければチェックマークが表示される。

    • Azure で実施する場合は、こちらも「受信ポート規則の設定」により、WordPress ⇔ WindowsServer 間でポート 389 の通信を許可する必要がありそう。
      • WordPress 側の受信ポート規則追加例
        fig-005.png
  • 続いて ou=department001 のユーザが、LDAP 認証でログインできるように設定する。
    fig-006.png

  • Test Authentication の項目があるが、ここは設定項目というわけではないのでスルーで良さそう。

    • 添付については Manager が ou=department001 にいないので失敗しているケース。user001・user002 で試すと成功する。
      fig-007.png
  • Sign-In Settings において「Enable LDAP Login」を有効化することで、設定完了。

    • たぶん大丈夫だが「すべてのユーザが LDAP でしかログインできない」というケースに備えて、管理者権限ユーザについてはログインしたまま、ここ以降の検証を行うほうが無難。
      fig-008.png

LDAP 認証の動作確認

  • 今回は ou=department001 に所属するユーザについて LDAP 認証ができるようにした。WordPress のログイン画面から、user001・user002 ともに、WindowsServer にログインする際のパスワードでログインできれば設定成功している。
  • 以下のように、user001・user002 が自動で WordPress 上に登録される。
    fig-009.png

ざっくりとした手順解説

  • 「ActiveDirectory でのユーザ情報追加」 において、以下のような組織ツリー図を作成したことになる。
    fig-009.png
    • dc, ou, cn については以下参照にざっくりまとめる。

LDAPの属性値 属性表示名 ざっくり意味するところ
dc Domain-Component ドメイン。ここでは dc=ad,dc=co,dc=jp
ou Organizational-Unit-Name 組織単位(OU)。「人事部」とか「開発部」みたいな部署名と考えると良さそう
cn Common-Name 「ユーザ名」くらいの理解で良さげ。cn=user001 とか。ActiveDirectory でよく使う印象
  • 「WordPress プラグイン設定」 において、情報として LDAP Server や Username を登録した。ここでやっていたのは、「WordPress がどの LDAP サーバーを参照するか = IP 情報の設定」と、「バインド用のユーザを誰にするかの登録」の 2 つ。
    • 以下記事を参考にすると、「バインドとは、LDAP サービスへログインすること」。

  • つまりここでの設定は以下のイメージ。LDAP サーバと、バインドするユーザ(ここでは Manager)の特定を行った。

fig-010.png

  • 続いて Search Base の登録を行ったが、これについては「どの箇所にいるユーザについて、LDAP 認証を適用するか」の設定と考えると良い。今回は以下のように、ou=department001 配下のユーザに LDAP を使えるようにした。

fig-011.png

終わりに

  • はじめて LDAP に触れた時はワケがわからなかったが、解説で述べたような「LDAP サーバとバインドユーザ特定する → LDAP 認証の対象とするユーザ探しに行く」という流れを掴めればだいぶ設定やりやすくなると思う。
  • 次は LDAP サーバーを Azure Active Directory に変えて検証したい。
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?