こんにちは、イケメンエンジニアです。
大手通信業界でWebアプリケーションを開発している現役エンジニアとして、 企業向けシステムの認証基盤設計に関わることが多いのですが、 その中でも頻出なのが「ディレクトリ認証」です。
BtoB向けの案件や社内システム開発、副業案件でも 「LDAP連携できますか?」 「Active Directoryと統合できますか?」 という質問はよくあります。
今回は、 ディレクトリ認証の仕組みを、LDAP(Lightweight Directory Access Protocol)を例に詳しく解説します。
1. ディレクトリ認証とは?
ディレクトリ認証とは、 ユーザー情報を中央のディレクトリサーバーで一元管理し、そこに問い合わせて認証する方式です。
ローカル認証(アプリDBで管理)とは異なり、 ユーザー情報はアプリではなく“外部のディレクトリ”にあります。
イメージ
ユーザー ↓ アプリケーション ↓ ディレクトリサーバー(LDAP) ↓ 認証結果を返す
アプリは「本人確認」を自分でやらず、 ディレクトリに委任します。
2. LDAPとは?
LDAP(Lightweight Directory Access Protocol)とは、 ディレクトリサービスにアクセスするためのプロトコルです。
企業環境では、 Active Directory(AD)の内部でもLDAPが使われています。
LDAPの役割
- ユーザー検索
- パスワード照合
- グループ情報取得
- 組織情報取得
つまりLDAPは「ユーザー情報の電話帳」にアクセスする仕組みです。
3. LDAPのデータ構造(ここが重要)
LDAPは「階層構造」でデータを管理します。
例:ドメイン構造
dc=example,dc=com
├── ou=users
│ ├── uid=tanaka
│ ├── uid=suzuki
└── ou=groups
├── cn=admins
├── cn=sales
用語解説
- dc:Domain Component
- ou:Organizational Unit
- uid:User ID
- cn:Common Name
LDAPはこの「ツリー構造」でユーザーを管理します。
4. LDAP認証の具体的な処理フロー
Step1:ユーザーがログイン
ユーザーがID・パスワードを入力。
Step2:アプリがLDAPに接続
アプリはLDAPサーバーへ接続します。
ldap://ldap.example.com
Step3:ユーザー検索
IDを元にLDAPで検索。
(base=ou=users,dc=example,dc=com) (filter=(uid=tanaka))
Step4:Bind(バインド)
検索で取得したDN(Distinguished Name)と 入力されたパスワードで「bind」します。
bindが成功すれば認証成功。
ここがLDAP認証の核心です。
5. ローカル認証との違い
| 項目 | ローカル認証 | ディレクトリ認証 |
|---|---|---|
| ユーザー管理 | アプリDB | LDAPサーバー |
| SSO | 不可 | 可能(社内) |
| 組織連携 | 弱い | 強い |
6. ディレクトリ認証のメリット
- ユーザー管理の一元化
- 退職時のアカウント削除が容易
- グループ連携が可能
- 社内SSOと統合可能
企業向けシステムでは非常に強力です。
7. デメリットと注意点
- 構築・運用が重い
- インターネット公開用途には向かない
- ネットワーク依存
- 接続タイムアウト問題
SaaS向けでは、LDAP単体よりOIDCやSAML連携が主流です。
8. 実務での使われ方
ケース① 社内システム
社内ポータル、勤怠管理、VPNなど。
ケース② BtoB製品の企業連携
企業のActive Directoryと連携。
9. まとめ|ディレクトリ認証を理解すると設計力が上がる
ディレクトリ認証は、 「ユーザー管理の外部化」という発想です。
ローカル認証しか知らないエンジニアと、 LDAPやADを理解しているエンジニアでは、 BtoB案件での設計力に大きな差が出ます。
次回は、LDAPのセキュリティ設計(LDAPS・TLS・バインド方式)や、 AD連携の具体例をさらに深掘りします。


コメント