[CentOS6][OpenAM10] WindowsDesktopSSO(統合Windows認証)


Create: 2014/03/22
LastUpdate: 2014/04/12
≪ メニューに戻る

[CentOS6][OpenAM10] ActiveDirectory認証」では、下図の環境(グレー部分)を構築し、ActiveDirectory認証を試しました。
ここでは、前述の環境を使って、ユーザ端末を EXAMPLEドメインに参加させ(下図の赤線部分)、WindowsDesktopSSOを試します。


ユーザ端末:192.168.1.91(exdt01.example.com)
OpenAMサーバ:192.168.1.92(exam01.example.com)
リバースプロキシサーバ:192.168.1.93(exig01.example.com)
WEBサーバ:192.168.1.94(www.example.com)
LDAPサーバ:192.168.1.95(exdj01.example.com)
ADサーバ:192.168.1.90(exad01.example.com)

今回も、OpenAMのサブレルム(test01)を変更していきます。
認証方式をActiveDirectory認証からWindowsDesktopSSOに変更するだけにして、ユーザ情報は、LDAPサーバから取得することにします。
EXAMPLEドメインにログオンしたWindows端末から「テスト用WEBサイト」にアクセスすると、OpenAM は Windowsにログオンしたユーザを使用して自動的に認証処理を行います。
なので、EXAMPLEドメインにログオンしたユーザは、OpenAMのログイン画面を見ることなく(ユーザとパスワード入力を要求されない)、「テスト用WEBサイト」に、アクセスできるようになります。

1.ActiveDirectoryサーバの設定変更


WindowsDesktopSSOでは、OpenAM と ActiveDirectoryがKerberos認証を行います。
そこで、その準備として、OpenAM用のサービスプリンシパル名(SPN)をActiveDirectoryに登録します。
SPN は、Windows ドメインのキー配布センター(KDC)の役割を担う Active Directory に登録されることが必要です。

1.1.ユーザ作成


まず、SPN登録用にActiveDirectory に新規ユーザの "openam" を作成します。
[サーバマネージャ] > [役割] > [Active Directory ドメインサービス] > [Active Directory ユーザとコンピュータ] > [example.com] > [Users] をクリックして、真ん中のフレームの余白部分を右クリックすると下図のメニューが表示されるので、[新規作成] > [ユーザ] を選択します。



[姓]、[名]、[ユーザログオン名]を入力して、[次へ]ボタンをクリックします。



[パスワード]を入力して、[ユーザはパスワードを変更できない]、[パスワードを無期限にする]をチェックして、[次へ]ボタンをクリックします。



[完了]ボタンをクリックすると、openam ユーザが作成されます。



ユーザ一覧の openam をダブルクリックすると、下図のプロパティ画面が表示されるので、[表示名]を openam にして、[OK]ボタンをクリックします。この表示名に入力した値は、ktpass コマンドを実行するときに使用します。



1.2.msDS-KeyVersionNumber の確認


まず、以下のようにコマンドを実行してユーザを確認します。この例では "o" で始まるユーザを一覧します。
dsquery user -name o*
下図は実行例です。上記で登録した openam ユーザが表示されています。



次に openam ユーザの msDS-KeyVersionNumber の値を確認します。以下のようにコマンドを実行します。
dsquery * "CN=openam,CN=Users,DC=example,DC=com" -attr msDS-KeyVersionNumber
下図は実行例です。msDS-KeyVersionNumberの値が "2" と表示されています。



1.3.keytab ファイルの作成


上記で収集した情報をもとに、openam ユーザに SPN を登録して keytab ファイルを作成します。
ktpass コマンドを以下の形式で実行します。
ktpass -out [ファイル名] -mapuser [ユーザの表示名] -pass [ユーザのパスワード]
 -princ [HTTP/FQDN@ADのKerberosドメイン領域]  ※FQDNはOpenAMサーバを指定 @以降は大文字で
 -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL
 -kvno [確認したmsDS-KeyVersionNumber + 1]
下図は実行例です。 実行後、openam.HTTP.keytab ファイルが作成されます。



2.OpenAMの設定変更

2.1.keytab ファイルの設置


上記1.3で作成した keytab ファイルを、OpenAMサーバに配置します。
今回は、 /usr/share/tomcat6/openam/openam ディレクトリにアップロードしました。



2.2.WindowsDesktopSSOの設定


OpenAMの管理画面でレルム(test01) の認証方式を WindowsDesktopSSO に変更します。
[OpenAM管理画面] > [アクセス制御] > [レルム(test01)] > [認証] タブをクリックすると下図の画面になるので、[モジュールインスタンス] > [新規]ボタンをクリックします。



[名前]を入力し、[タイプ]は、"WidnowsデスクトップSSO" をチェックして、[了解]ボタンをクリックします。



[認証]タブに戻って、[モジュールインスタンス] > [登録した "WindowsDesktopSSO"] をクリックします。



以下の値を入力して、[保存]ボタンをクリックします。
  • [サービス主体] ・・・ 上記1.3の"-princ" と同じ値
    HTTP/exam01.example.com@EXAMPLE.COM
  • [Keytabファイル名] ・・・ 上記2.1 のPATH
    /usr/share/tomcat6/openam/openam/openam.HTTP.keytab
  • [Kerberosレルム] ・・・ 上記1.3の"-princ" のドメイン名と同じ値
    EXAMPLE.COM
  • [Kerberosサーバ名] ・・・ ADサーバ
    192.168.1.90
  • [AuthenticationLevel] ・・・ 上記1.3の "-kvno" と同じ値



[認証]タブに戻って、[認証連鎖] > [SSO-1] をクリックします。



[インスタンス]のメニューで "WindowsDesktopSSO" を選択して、[保存]ボタンをクリックします。



最後に、[認証]タブの[保存]ボタンをクリックします。



設定が完了したら、念のため、OpenAM (tomcat)を再起動します。

3.テスト用ユーザの用意


EXAMPLEドメインにログインするためのテスト用ユーザをADサーバに作成します。
現在のOpenAMの設定では、LDAPサーバにユーザプロファイルがあることにしているので、
ADサーバに登録したユーザは、LDAPサーバにも登録する必要があります。
今回は、「ActiveDirectory認証」で使用した usrer01 が ADサーバとLDAPサーバに登録されているので、user01 をテスト用ユーザとして使用します。





4.ユーザ端末の設定変更


ユーザ端末が、EXAMPLEドメインのユーザでログインできるようにし、IEブラウザをWindowsDesktopSSO用に設定変更します。

4.1.EXAMPLEドメインに参加


ユーザ端末が EXAMPLEドメインを見つけられるようにするため、DNSにADサーバを指定します。



[システムプロパティ] > [コンピュータ名] > [変更]ボタンをクリックします。
[所属するグループ] の [ドメイン] をチェックし、"example.com" を入力して [OK]ボタンをクリックします。



下図のようにアカウントの入力を求められたら、ADサーバの "administrator" アカウントを入力して、[OK]ボタンをクリックします。



下図のメッセージが表示されたら、EXAMPLEドメインの参加に成功しています。
[OK]ボタンをクリックして、ユーザ端末を再起動します。



4.2.IEの設定変更


WindowsDesktopSSO用に IEブラウザの設定を変更します。
ユーザ端末にログインするユーザ名は、"EXAMPLE\user01" を使用します。
下図は、リモートデスクトップでログインする場合の例です。



IEの[インターネットオプション]を変更します。
[セキュリティ] > [ローカルイントラネット]の[WEBサイト]に、OpenAMサーバ(http://exam01.example.com)を登録します。



あとは、[詳細:タブで "統合Windows認証を使用する" がチェックされていることを確認します。
デフォルトの設定では、チェックされています。



5.動作確認


テスト用WEBサイトにアクセスする前に、WindowsDesktopSSO で、ちゃんと SSO できるかOpenAMで動作確認します。
ユーザ端末に "EXAMPLE\user01" でログインして、IEブラウザで以下のURLにアクセスします。
  • http://exam01.example.com:8080/openam/UI/Login?realm=test01
下図にようにOpenAMのログイン画面が表示されずに、user01 の画面が表示されたらOKです。



IEブラウザで、テスト用WEBサイトにアクセスします。
OpenAMのログイン画面が表示されずに、下図の画面が表示されらOKです。



ここで、テスト用WEBサイトが表示されない場合は、IEの ローカルイントラネットのサイトに "http://*.example.com" を登録して、example.com のサーバ全部をローカルイントラネットとして認識するようにしてみます。
ローカルイントラネットとして認識できないWEBサイトにアクセスすると、OpenAMが発行する認証Cookieのやり取りができずに、OpanAMとWEBサイトの間でリダイレクトがループします。
次に 「Basic認証ページ」にアクセスしてみると、下図のようにBASIC認証用のアカウントの入力を求められます。
WindowsDesktopSSOでは、OpenAMのログイン画面を使用しないので、OpenAMログイン画面で入力したパスワードを使用する代理認証はできないようです。



「フォーム認証ページ」にアクセスすると、下図のように成功します。
「フォーム認証ページ」の代理認証では、LDAPサーバのユーザプロファイルからパスワードを取得しているので、WindowsDesktopSSOでも問題ないようです。