Title: OpenLDAPとX.509クライアント認証でシングルサインオンするには

ここでは DocJp178: LDAP X.509 クライアント認証の設定 の設定手順を、次の環境を例により具体的に解説します。この設定を済ますことで、TeamPage にシングルサインオンできるようになります。



なお、OpenLDAP による LDAP サーバーの基本的な構築方法についてはここでは触れませんので、インターネットの資料や市販されている参考書などを参考にしてください。

シングルサインオンをするには、X.509 クライアント証明書が



...ことが必要です。

また、これら X.509 クライアント証明書の設定とは別に、TeamPage で DocJp178: LDAP X.509 クライアント認証の設定 が必要です。

以下、順を追って解説します。

注意 : ユーザー認証の設定を誤ると、誰も TeamPage にログインできなくなることがあり得ます。そのような事態を避けるため、作業前に必ずバックアップを取ってください。(参照 : FAQ10: TeamPage のバックアップの方法



ブラウザからクライアント証明書をエクスポートする



クライアント証明書のファイルがない場合、ブラウザからエクスポートしてください。ここでは Internet Explorer 9 を例に説明します。

Internet Explorer の、ツール > インターネット オプション >コンテンツ タブ の [証明書] ボタンをクリックし、「証明書」画面の [個人] タブを表示します。

注意 : ここに証明書が1つも表示されない場合は、この先の設定を完了させられませんので、作業を中止してください。(参照 : DocJp104: HTTPS X.509 クライアント認証の有効化

使用する証明書をクリックして選択し、[エクスポート] ボタンをクリックします。



「秘密キーのエクスポート」についての選択肢では、[いいえ、秘密キーをエクスポートしません] を選択して [次へ] をクリックします。



「エクスポート ファイルの形式」では、[DER encoded binary X.509 (.CER)] を選択し、[次へ] をクリックしてください。



エクスポートするファイルの名前を指定します。ここでは「jiro_private.cer」というファイル名で保存します。



エクスポートされたファイルの情報が表示されます。[完了] をクリックします。



ファイルが保存され、「正しくエクスポートされました。」というメッセージが表示されます。インターネットオプションを閉じてください。



CentOSにクライアント証明書をインストールする



上記でエクスポートした証明書ファイルを CentOS の適当なディレクトリに設置します。ここでは /etc/pki/tls/private に jiro_private.cer をコピーします。

注意 : OpenLDAP サーバーを稼働するユーザー(ユーザー「ldap」)が証明書ファイルにアクセスできることを確認してください。



WinSCPで証明書ファイルを転送

LDAPユーザーの認証にクライアント証明書を使うようにする



LDAP で管理されているユーザーの認証に、上記で設置した証明書ファイル (/etc/pki/tls/private/jiro_private.cer) を使うようにします。

ユーザー「jiro」に関する情報を次のように jiro.ldif ファイルに記述します。最後の「userCertificate」行で証明書ファイルをフルパスで指定します。

dn: uid=jiro,ou=People,dc=example,dc=jp
uid: jiro
mail: jiro@example.jp
sn: koyama
givenName: jiro
cn: jiro koyama
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
objectClass: strongAuthenticationUser
objectClass: pkiUser
userPassword: mypassword
shadowLastChange: 15356
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 515
gidNumber: 515
homeDirectory: /home/jiro
userCertificate;binary:< file:///etc/pki/tls/private/private.der.cer


このファイルを ldapadd コマンドで指定し、ユーザーアカウント「jiro」を LDAP サーバーに登録します。登録済みの場合は ldapmodify コマンドを使用し、既存のユーザー「jiro」の情報を書き換えます。

[root@centos ~]# ldapadd -x -D 'cn=Manager,dc=example,dc=jp' -W -f jiro.ldif
Enter LDAP Password: XXXXXXXX
adding new entry "uid=jiro,ou=People,dc=example,dc=jp"


正しく登録されたかどうかを ldapsearch コマンドで確認します。

[root@centos ~]# ldapsearch -x -D 'cn=Manager,dc=example,dc=jp' -W "uid=jiro"
Enter LDAP Password: 
# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: uid=jiro
# requesting: ALL
#

# jiro, People, example.jp
dn: uid=jiro,ou=People,dc=example,dc=jp
displayName: jiro
gecos: jiro
shadowExpire: -1
shadowFlag: 0
uid: jiro
mail: jiro@example.jp
sn: koyama
givenName: jiro
cn: jiro koyama
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
objectClass: strongAuthenticationUser
objectClass: pkiUser
userPassword:: bXlwYXNzd29yZA==
shadowLastChange: 15356
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 515
gidNumber: 515
homeDirectory: /home/jiro
userCertificate;binary:: MIIG7jCCBdagAwIBAgIQcRVmBUrkkSFN6...(以下略)


以上で CentOS 側の設定は完了です。続いて TeamPage 側の設定を行います。

TeamPageのセキュリティレベルを変更する



TeamPage の サーバーセットアップ | ネットワーク タブ | HTTP サーバー タブ の「セキュリティ レベル」で、次の設定を行います。



この2つの設定が完了すると、TeamPage とブラウザとの間の通信内容が HTTPS 暗号化され、なおかつ TeamPage にログインできるのはクライアント証明書がインストールされたブラウザからだけに制限されます。

セキュリティレベルの変更

TeamPageでLDAP設定をする



続いて、TeamPage のログイン認証を LDAP サーバーで行う設定をします。(参照 : DocJp166: LDAP 設定

一般的な設定



ユーザーディレクトリの設定画面で、今回は次のように設定しました。使用する環境に応じて書き換えてください。



x.509を選択

設定を済ませたら [保存] ボタンをクリックします。

ルックアップのテスト



[テスト] ボタンをクリックして「ユーザーディレクトリのテスト」画面を表示し、[ルックアップのテスト] ボタンをクリックして LDAP サーバーからユーザーを検索できるかどうかをテストします。検索されたユーザーをクリックして選択し、[詳細] をクリックすると、そのユーザーの詳細情報が表示されます。

ルックアップのテスト

ユーザー検索が失敗する場合(「該当なし」と表示される場合)は、LDAP サーバーへの問い合わせ書式に誤りがないか確認してください。

例えば、「LDAP スキーマ マッピング」の「フルネーム属性」では既定で「fullName」が使われますが、今回の例(上記の jiro.ldif)では、フルネーム属性として「cn」が使われています。そのため、LDAP サーバーへ「fullName」属性を問い合わせても該当ユーザーが見つかりません。

スキーママッピング

また、「LDAP 検索」欄の「電子メール補完検索」と「ユーザーのルックアップ検索」では、既定で「objectClass=Person」が使われますが、上記の jiro.ldif の objectClass には「Person」がありません。ここでは代わりに「inetOrgPerson」を指定します。同様に「fullName」も「cn」に変更します。

検索設定

ユーザーディレクトリの変更と移行(マイグレーション)



ユーザーのルックアップ(や、パスワード認証ユーザーのログイン)が成功することを確認したら、ユーザーディレクトリの変更とプリンシパルの移行 を行います。これは、「TeamPage 上の『jiro』というアカウントを、OpenLDAP サーバー上のユーザーアカウント『jiro』に紐付ける」という作業になります。

ユーザーディレクトリの選択画面の「ユーザー ディレクトリ」ドロップダウンから LDAP + X.509 のユーザーディレクトリ設定を選択し、[プリンシパルの移行 (トグル動作)] チェックボックスがオンになっていることを確認し、[次へ] をクリックします。

プリンシパルの移行

TeamPage ユーザー名に合致する LDAP ユーザーが LDAP サーバーから検索され、自動的に紐付けられて表示されます。紐付けに成功したユーザーの「新しいエンコーディング」欄は、黄色で表示されます。

自動的に紐付けできなかったユーザーは、赤い色で表示され、「新しいエンコーディング」欄に TeamPage のユーザーIDが表示されます。手動で紐付けをするには、「ユーザーのルックアップ」欄にユーザー名の一部を入力し、[ルックアップ] をクリックしてください。

ユーザー一覧

「新しいエンコーディング」欄に表示された、すべてのユーザー情報が正しいかどうかを確認し、[完了] ボタンをクリックします。

再起動の確認ダイアログが表示されるので、[OK] をクリックして続行します。



再起動完了後、TeamPage にアクセスすると、ブラウザは証明書の選択画面を表示します。証明書を選択し、[OK] ボタンをクリックすると(ここではユーザー「jiro」として)TeamPage にログインします。

証明書の選択



Attachments:
export-01.png
export-02.png
export-03.png
export-04.png
export-05.png
export-06.png
winscp-screenshot.png
ldap-config-01.png
ldap-config-02.png
ldap-config-03.png
tls-x509-config-01.png
ldap-x509-01.png
ldap_config_03.png
ldap_config_04.png
ldap_config_05.png
migration_01.png
migration_02.png
migration_03.png
migration_04.png
関連記事
Article: FAQ2154 (permalink)
Categories: :FAQ:LDAP, :FAQ:運用保守, :DocJp:FAQ
Date: 2012/03/22; 14時58分05秒 JST

Author Name: TeamPage サポート
Author ID: jpbo