AWS とのシングルサインオンを試してみる – 準備編

はじめに

Office 365 や G Suite(旧Google Apps)、Salesforce などと同様に、
AWS も SAML を用いたシングルサインオンに対応していることを最近教わったので、試してみたいと思います。

SAMLに対応することで、自社の認証基盤を使ってAWSにログインすることができるようになります。
今回は自社の認証基盤の代わりに OpenAM というソフトウェアを使用します。

唐突に始めてしまいましたが、あまりこれらの言葉に耳馴染みのない方もいらっしゃると思うので、簡単にここまでの用語を説明した後、準備を整えていきます。

シングルサインオン

一度の認証で複数サービスを利用できるようにすることを指します。
一般的にSSOと略すことが多いです。

Facebook認証などでWebサービスを使った経験がある方は多いかと思いますが、
それもシングルサインオンの一種ですね。

認証が一度で済むため、ユーザの利便性を向上することができ、
管理する側も一元化することで運用コストを下げることができるようになります。

今回の例では、自社で用意したログインページ(OpenAMのログインページ)を経由して、AWSにログインすることになります。

SAML

一言で説明すると、XMLベースのメッセージを交換することで認証を連携するための規格です。
2002年にOASISによって策定と、ある程度歴史があり、前述の通り、Office 365 などの有名なサービスでも採用されています。

OpenAM

オープンソースのアクセス管理やID連携を提供するプラットフォームです。
元々は Sun Microsystems の OpenSSO という製品だったのですが、Oracleによる買収等の流れで、
現在はオープンソース化し、ForgeRock社が管理しています。

商用製品だったこともあり、品質の高さや、リッチな機能が特徴ですが、
エンタープライズ版はライセンス契約が必要となるため、本格的な導入を検討する際は注意が必要です。

目指すゴール

おおまかなイメージは以下の図のようになる予定です。

1. ユーザがAWSヘアクセスします。
2. AWSはあらかじめ設定しておいた情報から、自社の認証基盤へユーザを誘導します。
3. 自社の認証基盤がログインページを表示します。
4. 自社アカウントで認証に成功します。
5. 自社の認証基盤がSAML形式のメッセージで認証に成功した旨をAWSに伝えます。
6. 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にログインできるように設定していきたいと思います。

APN Consulting Partner
スーパーソフトウエアはAWSパートナーネットワーク(APN)のコンサルティングパートナーです。