はじめに
Office365やG Suite(旧Google Apps)、Salesforce などと同様に、AWSもSAMLを用いたシングルサインオンに対応していることを最近教わったので試してみたいと思います。
SAMLに対応することで、自社の認証基盤を使ってAWSにログインすることができるようになります。
今回は自社の認証基盤の代わりにOpenAMというソフトウェアを使用します。
さて、唐突に始めてしまいましたが、あまりこれらの言葉に耳馴染みのない方もいらっしゃると思います。
簡単にここまでの用語を解説した後、準備を整えていきます。
シングルサインオンとは
一度の認証で複数のサービスを利用できるようにすることを指します。
一般的にSSOと略すことが多いです。
FacebookなどのSNS認証でWebサービスを使った経験がある方は多いかと思いますが、それもシングルサインオンの一種ですね。
認証が一度で済むため、ユーザの利便性を向上することができ、管理する側も一元化することで運用コストを下げることができます。
今回の例では、自社で用意したログインページ(OpenAMのログインページ)を経由して、AWSにログインすることになります。
SAMLとは
一言で説明すると、XMLベースのメッセージを交換することで認証を連携するための規格です。
2002年にOASISによって策定と、ある程度の歴史があり、前述の通りOffice365などの有名なサービスでも採用されています。
OpenAMとは
オープンソースのアクセス管理やID連携を提供するプラットフォームです。
元々はSun MicrosystemsのOpenSSOという製品だったのですが、Oracleによる買収等の流れにより、現在はオープンソース化しForgeRock社が管理しています。
商用製品だったこともあり、品質の高さやリッチな機能が特徴ですが、エンタープライズ版はライセンス契約が必要となるため、本格的な導入を検討する際は注意が必要です。
目指すゴール
おおまかなイメージは以下の図のようになる予定です。
- ユーザがAWSヘアクセスします
- AWSはあらかじめ設定しておいた情報から、自社の認証基盤へユーザを誘導します
- 自社の認証基盤がログインページを表示します
- 自社アカウントで認証に成功します
- 自社の認証基盤がSAML形式のメッセージで認証に成功した旨をAWSに伝えます
- AWSがログイン済みのページを返します
このような内容を目指していきたいと思います。
OpenAM の導入
それでは早速OpenAMを準備していきましょう。
コミュニティ版はGithubにソースコードが公開されているのですが、評価版もあるので今回はそちらを使用します。
なお、前提として、Java7以降、Tomcat7以降の環境があるものとします。
ForgeRock社のサイトから最新版をダウンロードしてきます。
https://www.forgerock.com/platform/access-management/
ダウンロードしたzipを解凍したディレクトリに、
「AM-eval-5.0.0.war」
というファイルがありますので、これをTomcatのwebapps以下にコピーします。
※以降、5.0.0を基準に進めるので、バージョンが違う場合は読み替えてください
Tomcat を起動すると展開されるので、
http://localhost:8080/AM-eval-5.0.0
にアクセスすると…
このような画面が表示されます。
ひとまずデフォルト設定で進めましょう。
初期設定は簡単です。
デフォルトで作られる2つのユーザーのパスワードを決めましょう。
入力したら「設定の作成」をクリックします。
すると自動の初期設定が始まるので、少し待ちます。
以上でインストールは完了です。
実際に管理者でログインしてみましょう。
ログインするとレルムの一覧が表示されます。レルムは設定を分けるための概念のようです。
今回はOpenAMが本題ではないので、細かいことは気にしないようにしましょう。
デフォルトで用意されている「Top Level Realm」を選択します。
色々な項目がありますね。
自分は以前少し触ったことがあるのですが、当時とだいぶ変わっているので戸惑っています。
果たしてうまくいくのか若干の不安はありますが、何はともあれ準備は整いました。
次回以降、実際にOpenAMの認証でAWSにログインできるように設定していきたいと思います。