WindowsデスクトップSSOを使ってみる

# はじめに
OpenAMのWindowsデスクトップSSO認証モジュールを使ってみる記事です。
ゴールは"WindowsへのログインとOpenAMへのログインをシングルサインオンにする"です。Windowsにログインした後、ブラウザでOpenAMにアクセスしたときに（ログイン画面が表示されずに）OpenAMのログイン後の画面が表示されれば目的達成です。
※ 自分の環境内でのみ動作確認をした記事なので、必要のない手順や間違いがある可能性アリです。ご指摘いただければ修正したいと思います、、、。

# 実行環境
* OSSTech版OpenAM13
* Windows Server 2016
* Windows 10

|サーバー|IPアドレス|FQDN|
|----|----|----|
|OpenAM|192.168.122.10|oam.example.co.jp|
|Windows Server|192.168.122.11|WIN-3B7CBHJCHCO.example.co.jp|
|Windows|192.168.122.12|DESKTOP-NMVJB78.example.co.jp|

# それぞれのサーバーですべきこと
* Windows Server
 * Active Directoryのインストールと設定
 * Active Directoryのユーザーの作成
 * 名前解決の設定
 * keytabファイルの作成
* OpenAM
 * データストアにActive Directoryを追加
 * 名前解決の設定
 * WindowsデスクトップSSO認証モジュールの設定
* Windows
 * DNSの設定
 * ドメインの設定
 * Internet Explorerの設定
 * 名前解決の設定
 * 動作確認

# 設定方法
## Windows Server
### Active Directoryのインストールと設定
1. Windows Serverを起動し、管理者ユーザでログインします
![win-server01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/28568fd1-2cd0-c61e-7854-a11900731ef3.png)
2. サーバーマネージャーの「役割と機能の追加」をクリックします
![win-server02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/47964892-36df-c944-af4f-34372e469fa3.png)
3. 「役割と機能の追加ウィザード」で以下のように設定します

    3.1 [開始する前に]：[次へ]をクリックします
![win-server03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/a79e48a9-3a91-1415-ab1b-831cee0d5157.png)
    3.2 [インストールの種類]：「役割ベースまたは機能ベースのインストール」を選択し、[次へ]をクリックします
![win-server04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/cfe7bcce-262a-1b66-499d-a689c93d667f.png)
    3.3 [サーバの選択]：「サーバープールからサーバーを選択」を選択し、[サーバープール]からWindows Serverのサーバーを選択して[次へ]をクリックします
![win-server05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/082a8a40-771c-1acb-d0b1-6ff985ccea76.png)
    3.4 [サーバーの役割]：「Active Directoryドメインサービス」にチェックを入れ、[次へ]をクリックします
![win-server06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/ce200da7-f40f-9c76-2247-a1f44a51447a.png)
    3.5 [機能の追加]をクリックします
![win-server07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/c5a66796-a541-9ca5-3991-06f845adbfa1.png)
    3.6 [機能] / [AD DS]：[次へ]をクリックします
![win-server08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/752415f2-7fc4-ff55-a467-885617e387c3.png)
![win-server09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/a67c5b72-7e3f-9a9d-da77-80b3c3705526.png)
    3.7 [確認]：「必要に応じて対象サーバーを自動的に再起動する」にチェックを入れ、[インストール]をクリックします
![win-server10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/3687dfd2-2b9d-141d-ae0d-3d5388ce48ef.png)
    3.8 [結果]：[閉じる]をクリックします
![win-server11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/7dd5d4ef-1df1-9fb2-3bc2-19b470a2b9f3.png)
4. 「役割と機能の追加ウィザード」を閉じたらサーバーマネージャーの通知をクリックし、「このサーバーをドメインコントローラーに昇格する」をクリックします
![win-server12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/0f546597-86f1-c3eb-a23b-93854fb8666a.png)
5. 「Active Directoryドメインサービス構成ウィザード」では以下のように設定します
    5.1 [配置構成]：「新しいフォレストを追加する」を選択し、「ルートドメイン名」にActive Directoryのドメインを入力し、[次へ]をクリックします
![win-server13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/15e9e8a3-6388-ddff-79d4-8717820afb0b.png)
    5.2 [ドメインコントローラーオプション]：「パスワード」と「パスワードの確認入力」にパスワードを入力します
![win-server14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/4fa9a375-a528-2753-36e9-f538ff4cd68a.png)
    5.3 [DNSオプション]：[次へ]をクリックします
![win-server15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/c933bb27-41f5-fd85-725e-8e6af32bbea1.png)
    5.4 [追加オプション]：「NetBIOSドメイン名」が自動で入力されますが、変更したい場合は変更し、[次へ]をクリックします
![win-server16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/cef0efe3-452f-4a09-ab66-798127175195.png)
    5.5 [パス] / [オプションの確認]：[次へ]をクリックします
![win-server17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/1ffabdb5-2e92-7dd1-e947-0110ffe69e38.png)
![win-server18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/2863503e-b670-b3be-1e28-e1e4cbac5e69.png)
    5.6 [前提条件のチェック]：[インストール]をクリックし、その後の画面で[閉じる]をクリックします
![win-server19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/a033a090-85b7-4ded-29d5-dcd14ce06487.png)
![win-server20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/2bd9f16e-a3de-c7f0-f477-d50c59b83002.png)
6. PCが自動で再起動されます

### ユーザーの作成
1. [スタート]から、「Active Directoryユーザとコンピューター
」を開きます
![win-server21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/ba1b0cfa-4388-16e4-be05-bf68f63a923c.png)
2. ドメイン上で右クリックし、「新規作成」から「ユーザー」をクリックします
![win-server22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/571db611-ba4b-e115-bb3a-5640309247df.png)
3. 一般ユーザーを作成します

    3.1 それぞれユーザー情報を入力し、[次へ]をクリックします
![win-server23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/433b10db-bbfb-ec2c-964f-928d20949016.png)
    3.2 パスワードを入力し、「パスワードを無期限にする」にチェックを入れ（任意）、[次へ]をクリックします
![win-server24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/e6f34f89-93cb-bafc-235f-d181cb3023a3.png)
    3.3 作成するユーザー情報を確認し、間違いがなければ[完了]をクリックします
![win-server25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/d063835d-dca4-c455-9425-1a2196e884c9.png)
4. 同様にOpenAM連携用のユーザーも作成します
![win-server26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/56f34611-abe8-3570-f3d9-7347802b52a8.png)
5. 作成したユーザーが`<ドメイン>/Users`フォルダ以下に作成されていなかった場合は移動します（確認画面で「作成先：<ドメイン>/Users」になっていなかった場合は移動する必要があります）

### 名前解決の設定
1. エクスプローラーを開き、`C:/Windows/System32/drivers/etc`ディレクトリ以下にある`hosts`ファイルを編集します
![win-server27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/48a261e4-e18e-a9a9-a9eb-08b7be308ce7.png)
2. `<OpenAMサーバーのIPアドレス>    <OpenAMサーバーのFQDN>`を追記します
![win-server28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/82a0927c-a227-6ef7-fd49-7a27bd3c46d5.png)
3. 上書き保存します

### keytabファイルの作成
1. [スタート]から、「Windowsシステムツール」以下にある「コマンドプロンプト」を開きます
![win-server29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/08c492dc-b99a-7515-8a65-71a430ca5055.png)
2. 以下のコマンドでkeytabファイルを作成します

    ```
C:\Users\Administrator> ktpass -out <出力するkeytabファイル名> 　　-princ HTTP/<OpenAMサーバーFQDN>@<大文字のドメイン> -mapuser <OpenAM連携用ユーザー> -pass <パスワード> -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL
    ```
    今回は以下のように実行します

    ```
C:\Users\Administrator> ktpass -out openam.keytab -princ HTTP/oam.example.co.jp@EXAMPLE.CO.JP -mapuser openam -pass 123Password -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL
    ```
3. コマンドを実行したディレクトリ以下にkeytabファイルが作成されたことを確認します

    ```
C:\Users\Administrator> dir
...(省略)...
2019/12/13 23:10          77  openam.keytab
...(省略)...
    ```
4. keytabファイルをOpenAMサーバーにコピーしておきます

## OpenAM
### OpenAMのデータストアにActive Directoryを追加する
1. OpenAMサーバーに名前解決の設定を行います
    `/etc/hosts`ファイルに`<Windows Server IPアドレス>        <Windows Server FQDN>`を追記します

    ```
# vim /etc/hosts
    ```
![oam01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/88798122-4221-89fd-8c89-50d531192592.png)

2. OpenAMサーバーで以下のコマンドを実行し、パーミッションと所有者を変更します

    ```
# mkdir private
# mv openam.keytab private
# chown -R root:tomcat private
# chmod 750 private
# chmod 640 private/openam.keytab
    ```
    ※ keytabファイルを入れるディレクトリを`private`、keytabファイル名を`openam.keytab`とした場合です
3. ブラウザでOpenAM管理コンソールにアクセスし、新規データストアからActive Directoryを選択します
4. 以下のように設定します
    ※ 自分の環境に合わせて読み替えてください
    ※ デフォルト値は省略します

    | 設定項目 | 設定内容 |
    | -----   | ----- |
    |LDAPサーバー|WIN-3B7CBHJCHCO.example.co.jp:389|
    |LDAPバインドDN|CN=Administrator,CN=Users,dc=example,dc=co,dc=jp|
    |LDAPバインドパスワード|123Password|
    |LDAP組織DN|dc=example,dc=co,dc=jp|
    |LDAPユーザー検索属性|sAMAccountName|
    |LDAPピープルコンテナネーミング属性|（削除）|
    |LDAPピープルコンテナ値|（削除）|
5. 設定を保存します
6. 「対象」にActive Directoryのユーザーが追加されていることを確認します

### WindowsデスクトップSSO認証モジュールの設定
1. OpenAM管理コンソールを開き、WindowsデスクトップSSO認証モジュールを追加します
2. 今回は以下のように設定します
    ※ デフォルト値は除きます

    | 設定項目 | 設定内容 |
    | ------ | ------ |
    |サービス主体|HTTP/oam.example.co.jp@EXAMPLE.CO.JP|
    |Template JSP for NTLM|（空欄）|
    |Keytabファイル名|`/opt/private/openam.keytab`|
    |Kerberosレルム|EXAMPLE.CO.JP|
    |Kerberosサーバー名|WIN-3B7CBHJCHCO.example.co.jp|
3. 設定を保存します
4. 認証連鎖にWindowsデスクトップSSOを追加し、「必須」を選択します
5. 組織認証設定に、作成した認証連鎖を選択し、保存します

## Windows
### Windows 10の起動
1. [接続方法を選択する]：「ローカルのActive Directoryドメインに参加する」を選択します
![win01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/b9fbe0eb-14e2-32d8-5153-e142e187b867.png)
2. アカウントを適当に作成し、ログインします

### DNSの設定
1. [スタート]から、「設定」を開きます
![win02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/4c112092-914a-0acb-dfbc-75a3c1dbcef5.png)
2. 「ネットワークとインターネット」を開きます
![win03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/264cf147-47a2-453e-bf35-8cc5df9b011c.png)
3. [イーサネット]タブの「アダプターのオプションを変更する」を開きます
![win04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/8f87fa47-9085-cd65-c87b-0c2b155aca1b.png)
4. 「イーサネット」を選択し、[プロパティ]を開きます
![win05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/41f8ce07-b21c-1d0c-3410-9f683467e3d7.png)
![win06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/11838c6e-1680-dd22-b216-3f43a992b24f.png)
5. 「インターネットプロトコルバージョン4」を選択し、[プロパティ]を開きます
![win07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/5c6ff4b7-b54a-e21e-b6db-f7804c65740c.png)
6. 「次のDNSサーバーのアドレスを使う」を選択し、「優先DNSサーバー」にWindows ServerのIPアドレスを入力し、[OK]をクリックします
![win08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/267f2e9d-e186-4037-ff7e-1dbbfd8c0c46.png)

### ドメインの設定
1. [スタート]の検索枠に「ドメイン」と入力して「ドメインに参加」を探して開きます
![win09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/4799e18e-c9c6-4b75-38a0-13f787e6052e.png)
2. [コンピューター名]タブの「コンピューター名を変更したりドメインに参加したりするには[変更]をクリックしてください。」の隣の[変更]をクリックします
![win10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/0604894f-533c-9c99-0a77-4cca7caeaf43.png)
3. 「所属するグループ」の「ドメイン」を選択し、Windows Serverのドメインを入力し、[OK]をクリックします
![win11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/d2988a07-4042-5114-e262-43d0cd2374ae.png)
4. Windows Serverの管理者のID「Administrator」とパスワードを入力し、[OK]をクリックします
![win12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/88016374-7d8c-fee3-b942-6d930d42d334.png)
5. 以下の画面では[OK] / [今すぐ再起動する]をクリックし、PCを再起動させます
![win13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/57ce9462-db33-0038-8621-cd45fd905a64.png)
![win14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/7c62dc3d-d917-8d01-4ad4-05afc967aef0.png)
![win15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/2e9d10c1-a83e-7e87-ae56-24534f2fedb2.png)

### OpenAMをローカルイントラネットに追加
1. Internet Explorerを起動し、設定から「インターネットオプション」を開きます
2. [セキュリティ]タブの「ローカルイントラネット」を選択し、[サイト]をクリックします
![win16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/70834fc2-15fe-1bb1-261e-bb464eae3d84.png)
3. [詳細設定]を開きます
![win17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/da656369-9a3d-3d6c-a75e-f04a11c337d4.png)
4. 「このWebサイトをゾーンに追加する」にOpenAMのURLを入力し、[追加]をクリックします

    「Webサイト」に追加されているか確認し、[閉じる]をクリックします
![win18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/54ed4c7c-57de-1699-0f16-e2908c093cfd.png)
5. [詳細設定]タブの「統合Windows認証を使用する」にチェックを入れます
![win19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/cb267056-1180-b237-ed54-5716b6542924.png)
6. 「統合Windows認証を使用する」の設定を変更した場合にはPCを再起動します

### 名前解決の設定
1. [スタート]の「メモ帳」の上で右クリックし、「管理者として実行」を選択します
![win20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/8244bcfb-9506-1f4a-049f-c8cf4e539448.png)
2. 管理者でログインし、[はい]をクリックしてPCに変更を加えます
![win21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/eea12d76-c331-7567-ce55-1f16d20f1f67.png)
3. メモ帳から`C:/Windows/System32/drivers/etc/hosts`ファイルを開き、先ほどと同様にOpenAMサーバーのIPアドレスとFQDNを追加します

## 動作確認
1. Active Directoryに登録した一般ユーザーでWindowsにログインします
![win22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/417615bd-8c17-2ab8-b8c0-696c24dcfe69.png)
2. Internet Explorerで`http://oam.example.co.jp:8080/openam`にアクセスします

    OpenAMログイン後の画面が表示されることを確認します
![win23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545977/e83caaf2-f9a0-bbe3-30b5-f0cdcc0092da.png)

## おわりに
以上でこの記事はおわりです。その他いろいろ解説などいれるべき、、、なのですが長すぎるので今回はやってみただけの記事にさせてください。。。