【仕事メモ】OpenAM (ver13) とOffice365のSAML連携（２） OpenAM構築～AD連携(データストア)

# 概要
今回は再びLinuxでOpenAMを構築し、データストアにADを指定する構成にしたいと考えています。

## OpenAMの構築～前提作業～
まずは前回掲載した記事を参考にしてOpenAMをインストールしていきます。

<【仕事メモ】OpenAM (ver13) 超簡単インストール方法>
https://qiita.com/Blue2012/items/df9a790a73b72dd3724c

__※すごく基本的な部分になるので、私以外はあたりまえだろってなるかもしれませんが…上記の記事で記載している手順において重大な注意点として、ホスト名はインターネットからも名前解決可能なドメイン名に設定するようにしてください。でないと、外部のWebサービスとSAML連携する際にエンドポイントが見つからずにSAMLの認証連携がエラーとなります__

というわけで改めて、改訂した手順を記載していきます。

まずは前回と同様ですが、前提作業として以下の作業を完了させます。

１．SELinuxの無効化
２．Tomcatフォルダのパーミッション変更
３．ホスト名の設定

ここまでは前回通りなので実行するコマンド等は以前、掲載した記事を参照してください。

ではここからは一応、前回のおさらいも行いつつという形で記事を掲載していきたいと思います。

## OpenAMの構築～インストール作業～
前回の記事で記載した通り、ForgeRock社からダウンロードしたOpenAMのwarファイルをtomcatの所定フォルダにコピーして、
ファイルのパーミッションをtomcat:tomcatに変更し、サービスを起動させてhttp:～:8080でアクセスすると以下のページが表示されます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/4dbf4ea9-7d89-9b21-bde7-79da520cbd6e.png)

↑のページは最初にインストールした際には表示されなかったんだけどなぁ…
と思ってサーバを調べてみるとtomcatのパーミッション設定に誤りがありました。
前回、自分が掲載していた記事のコマンドが「chown -R tomcat.tomcat」となっておりましたorz
正解は「chown -R tomcat:tomcat」です。記事も修正しております…

というわけで取り直して以下のコマンドを実行して、再度tomcatのサービスを起動しなおします。
※サービスの再起動は必要ないかもしれないですが、気持ち悪いので念のため再起動しておこうかなと…

```bash:tomcatフォルダパーミッション修正&サービス再起動
chown -R tomcat:tomcat /usr/share/tomcat
systemctl restart tomcat
```

ちなみにページには「設定は可能で」と記載されているのでそのままウィザードを進めることも可能なのですが、
画面下のほうに表示されている一文が不気味であるため、tomcatのサービスを再起動します。

```:不気味な一文
ただし、Webコンテナが再起動された場合は、設定にアクセスできなくなります。
```

っておい、再起動してもでんのかい！汗
まぁ、フォルダのアクセス権もすべて確認してtomcat:tomcatになっていることは確認済みですので、
少し不安は残りますがウィザードを先に進めていくことにします。
というわけで「新しい設定の作成」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/6dbcbf32-830d-ee1f-1356-5a870fba019a.png)

そして、この時点でも少し感じるのですが、ページが日本語で表示されています。
前回の作業時は英語で表示されたのですが、どうやらブラウザの言語設定に応じて、動的に表示言語が変わる仕組みのようです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/38e0f47d-5117-1804-331a-dc85fffbc7fd.png)

お決まりの規約同意書が表示されますので一番下の「I accept the license agreement」にチェックを入れ「Continue」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/37db2ec3-06d8-e9da-f973-12fbe09cb0c2.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/296f7246-e2a1-a471-7295-2d8d72191984.png)

管理者ユーザーアカウントのパスワードを設定します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/d310f5c1-f23f-4069-d04b-03278daf5a31.png)

さぁ、ここが問題(のように見えるんですが)なんですが、例の書き込み権限がありませんとかなんとかが表示されますが、
気にせずにそのまま「次へ」をクリックします。※問題にはすでに対処を行っていますので。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/58800a6d-acef-c793-12e3-531969e5a1ed.png)

そうすると、また、前回と違うパターンのや～つが表示されます。
ポート番号に-1とか絶対おかしいです(笑)

というわけで前回の記事を参考にしつつ、ポート番号を設定しなおします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/937716f4-d4bc-8dd1-5739-94774bd3c3b7.png)

で謎がもう一つなんですが、「4444」ポートが使用中という表示がでてきて先に進めなくなる事象が発生しました。
netstatコマンドを実行しても使用している形跡は見られませんし、全く謎な状態です。
とりあえず、適当に競合しないポート「4447」を見つけたのでそちらで設定します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/3fd0d416-b33c-b9a5-1e6c-0e0cba4eed8e.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/1bdd04a5-9eb9-4d5d-96ae-9b2e639143cd.png)

データストアの設定は後ほど行うため、とりあえず「OpenAMのユーザーデータストア」を選択し、インストールを完了させます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/065d6cef-66ed-f9ff-25ba-a7dedeaa2628.png)

今回、構築するOpenAMはシングル構成ですので、前回同様にここも「いいえ」を選択して「次へ」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/24355829-1e1f-924d-8aec-d480c6760724.png)

先ほど管理者に設定したパスワードとは異なる値でポリシーエージェントユーザーのパスワードを設定します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/1bdd5966-dd06-a5e3-9635-df8a0e7ae06b.png)

最後に概要が表示されるので特に問題はないので「設定の作成」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/62a5cc40-4a19-a422-6d42-4c04057f6214.png)

…で、上記の設定でインストールを実行したんですけど、インストールはいつまで経っても完了しなかったため、
新規でインスタンスを立て直して、外部の名前解決ではなく、hostsファイルでアクセスできるように設定を変更したところ、無事にインストールが完了しました。
※要注意な点として外部での名前解決を有効にした状態でサフィックスの作成が行われるとEC2インスタンスで構築していた場合、「ConnectError」なるものが発生します…
正直言って原因不明なのですが、一つ可能性として考えられることは、これは外部の名前解決でアクセスされるため、インストーラがEC2のグローバルIPアドレスにて接続しようとすることに起因していたと考えられます。
私が設定ストアの設定にて既定値である「localhost」の値を接続先に指定していたため、「localhost」のIPアドレスとEC2のグローバルIPアドレスに紐付きがなかったため、そのようなことが発生したのではないかと推測します。

<img width="820" alt="スクリーンショット 2018-08-26 17.23.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/138274/281d14d5-4f7d-da30-44a5-e0c67cc63c26.png">

まぁ、なんだかんだで苦戦してしまったのですが、インストールは完了です。

## OpenAMとADとのデータストア連携
では、ADをOpenAMのデータストアとして設定する手順を記載します。
まずはトップ画面から「TOP LEVEL REALM」を選択して、「DataStores」を選択します。
すると↓の画面が表示されるので「新規」を選択します。

<img width="902" alt="スクリーンショット 2018-08-26 17.44.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/138274/6439d0ea-1db0-49b2-4830-220449457c62.png">

新規のデータストアタイプに「ActiveDirectory」を指定し、「名前」には任意の名称を入力して、「次へ」を選択します。
__※画像ではポートが50389となっていますが検証では389を指定しました。__

<img width="463" alt="スクリーンショット 2018-08-26 17.54.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/138274/9cc3262d-8f92-8f6f-5428-5762a9943af4.png">

例のごとく、数多くの設定項目が並ぶ画面が表示されるのですが、一つ一つ見ていきましょうか。
まずは接続先ホストの指定が表示されているので連携先となるADサーバを指定します。

<img width="655" alt="スクリーンショット 2018-08-26 17.56.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/138274/6d5b7ba6-dcea-255e-2e4c-aa2dfb1615c2.png">

LDAPバインドユーザーのDNとユーザーのパスワードを入力して、組織のDN（ドメインのDN）を指定します。
次にLDAP接続モードの指定や、接続に際してのオプション設定がつら〜と並びますがそのまま既定値とします。

<img width="830" alt="スクリーンショット 2018-08-26 18.08.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/138274/78f15627-d44d-1579-7b97-fcffb309257b.png">

次にプラグインの指定ですが、これもそのまま既定値を使用します。

<img width="679" alt="スクリーンショット 2018-08-26 18.09.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/138274/90c38416-b8e8-1c32-870e-24f7cbc1e088.png">

そして、ここは変更点になるのですが、「LDAPユーザー検索属性」は「SamAccountName」にします。
後の設定はいじらず既定値のままにします。

<img width="621" alt="スクリーンショット 2018-08-26 18.16.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/138274/09e5c089-dbef-bab2-e1b7-4fd30f89614b.png">

<img width="593" alt="スクリーンショット 2018-08-26 18.17.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/138274/d50055e5-ab0c-296c-11ed-b7b3a43c2ce8.png">

認証ネーミング属性もやはり「SamAccountName」に指定します。

<img width="446" alt="スクリーンショット 2018-08-26 18.18.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/138274/2b101b9b-c4c8-2d38-c1f7-8d474c3e9655.png">

続く、グループ設定は全て既定値のままにします。

<img width="631" alt="スクリーンショット 2018-08-26 18.19.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/138274/7e7fb4f4-e77f-5d01-3e71-5ebea99066ee.png">

そして、接続検索ベースDNは検索対象となるルートのDNを指定し、あとの設定は全て既定値のままにします。

<img width="683" alt="スクリーンショット 2018-08-26 18.20.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/138274/1923df11-c08a-2956-a449-a5bc53d5e64c.png">

全ての設定値を指定し終えたら、「完了時にスキーマを読み込み」にチェックを入れて、「終了」を選択します。

<img width="222" alt="スクリーンショット 2018-08-26 18.21.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/138274/1e8296e0-2603-8f01-e6e8-4ffb625e0a47.png">

ここで通信エラー等含め何も起きなければ、データストアのメニュー画面に戻り、先ほど設定したADのデータストアがタイプ「ActiveDirectory」として一覧上に表示されます。
__※表示されているということは連携がうまくいったことを意味し、エラーが発生する場合はそもそも設定画面でエラーが表示されます。__

<img width="896" alt="スクリーンショット 2018-08-26 18.23.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/138274/507910e0-cc07-11d2-2882-cb1544953b49.png">

ではここで連携されたことを確認するためにADで作成したユーザーがOpenAMに連携されることを確認します。
AD上で新規にユーザーを作成します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/a0b1956a-c5c3-f8cd-d9ee-4a8892af9c26.png)

<img width="509" alt="スクリーンショット 2018-08-26 18.37.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/138274/7a009459-1a33-af29-6da2-6ec2388bfcba.png">

AD上ではユーザーが作成されました。
ではOpenAM上のユーザー情報を更新して見ます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/9db2c17d-c81c-9679-77a3-3158290ecf0b.png)

設定項目から「対象」を選択して、登録されているアカウントの一覧を確認するとテストでADから作成したユーザーである「Test００１」が表示されることを確認できます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/86064363-a030-7a1c-8db7-1b06ad439c94.png)

次にOpenAMの管理コンソールへADユーザーでログインできることを確認して見ます。
ログイン画面を開いて、AD上で設定した「Test001」のパスワード情報を利用して、ログインできることを確認します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/b796b0f8-4a15-1c82-d5e4-89105a3eda1d.png)

ログインできました。これでOpenAMとADおよびAADCまでのデータストア連携が完了したことになります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/138274/4edf644b-a4fa-3318-9bab-68931a94b6d6.png)

## 次回予告
ここまででOpenAMとADおよびAADCの連携が完了したので、次は実際にSAML連携を再度、実施していきます。