14
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OSSTechAdvent Calendar 2019

Day 13

OpenAM 14 SAML IdP(認証基盤)構築 10分間クッキング

Last updated at Posted at 2020-01-14

SAML IdPの構築

ほとんど全てのクラウドサービスで外部認証用として使われているSAML(サムル)プロトコル。
OpenAMではウィザード形式で設定でき、非常に短時間で正確にSAML認証サーバー(IdP)の認証基盤を構築できます。

前提条件としてOpenAM 14の環境構築が終わっている必要があります。
環境構築手順は前の記事OpenAM 14を最速で構築する10分間クッキングにありますので参考にしてください。
OpenAMのSAML認証基盤の構築完了までだいたい10分です。

※パスワードレス認証の設定も試したい場合はOpenAM 14のパスワードレス設定10分間クッキングを参考にしてください。

今回構築するイメージ

今回構築する構成はOpenAMをSAML IdPとし、G-SuiteをSPとするSAMLによるSSO環境です。
openam-saml.png

OpenAM SAML認証基盤構築とサービス登録(SSO先追加)の流れ

通常[1]と[2]の作業は1回で良いです。[3]はサービス登録毎に行います。
1.SAMLアサーション署名用の鍵ペアの生成
2.OpenAMにSAML IdPを構築
3.クラウドサービス毎にSAML連携設定を追加(今回はG-Suite)

1. SAMLアサーション署名用鍵ペアの設定

OpenAM初期設定後に自動生成されているtest鍵ペアは、全OpenAMサーバー共通なので、絶対に運用に使わないで下さい。
もちろんテスト用途だけならOKですが、どうせならコマンドライン一行なので独自に鍵ペア生成して使いましょう。

CNとか、validity(有効期限)だけ要件にあわせて変更してます。
OpenAMのインストールされた環境で以下のコマンドを実行します。

# keytool -genkeypair \
 -keyalg rsa \
 -alias openam14-idp \
 -dname "CN=openam14.example.com,O=Example,ST=Tokyo,C=JP" \
 -keypass changeit \
 -keystore /usr/share/tomcat/openam/openam/keystore.jceks \
 -storetype JCEKS \
 -storepass changeit \
 -validity 365 \
 -keysize 2048

OpenAM管理者URLから amadmin でログインします。
https://openam14.example.com/openam?service=adminconsoleservice

w1.png

デプロイメントからサーバーを選びます。
key2.png

登録されているサーバー(今回は1台のみ)を選択します。
key3.png

前の工程で生成した鍵ペアのエイリアスを署名鍵として設定します。
左メニューから セキュリティ を選び、キーストア タブを選びます。
証明書エイリアス鍵🔒マーク を押し、継承設定を解除後、
証明書エイリアスに先程実行したコマンドの -alias に指定した値 [openam14-idp] を入力し、変更の保存 を押します。
keystore.png
署名鍵設定は以上です。

2.SAML IdP構築

次にOpenAM上にSAML IdPを構築します。
[最上位のレルム] を選択します。
w2.png

レルムの概要画面で SAMLv2プロバイダの作成 を選択します。
idp2.png

次の画面で ホストアイデンティティプロバイダの作成 を選択します。
idp3.png

名前 は自動的に入っています。これが Entity ID となります。任意に変更できますが、URLをベースとした値にして置いた方が安全です。
署名鍵はプルダウンから先程設定した openam14-idp を選びます。
idp4.png

トラストサークル はIdPとSPが共通で所属するイメージとなります。
任意の名前を入力し、右上の設定を押します。
idp5.png

一瞬でこの画面になると思いますが、この画面で既にIdP構築は完了しています。
右下の 終了 ボタンを押せば最初のレルム内の画面にもどります。

引き続きG-SuiteのSP設定を追加する場合は終了を押さずに Google Apps(旧G-Suite名)を設定する を選びます。
idp6.png

ここまででIdP構築は完了です。

SAML SPとしてクラウドサービスの G-Suite を追加する。

先程の画面で Google Apps(旧G-Suite名)を設定する を選ばなかった場合は、レルムのトップ画面 Google Appsの設定 からG-Suiteの設定が可能です。
idp111.png

G-Suiteで設定しているドメイン名を入力し追加、右上の作成を押します。
idp7.png

一瞬でこの画面になりますので、了解を押します。
idp8.png

この画面が出ればOpenAM側にはSAML SPとしてG-Suiteが追加されました。
つづいて、この画面に表示されている情報を元にG-Suite側の設定をします。
SAML署名用の証明書ををエクスポートする代わりにダウンロードして、G-Suite側へアップロードします。
idp9.png

OpenSSOCert.txtファイルを任意の場所へ保存します。
idp10.png

G-Suiteの管理者画面へログインします。
ブラウザの別のタブ、又は別ウィンドウで開き、コピーペーストしやすい状況で作業して下さい。
Admin画面の セキュリティ アイコンをクリックします。
sp1.png

セキュリティ画面を下へスクロールします。
sp2.png

サードパーティのIDプロバイダを使用したシングルサインオン(SSO)の設定 を選びます。
sp3.png

サードパーティのIDプロバイダを使用したシングルサインオン(SSO)の設定 画面の サードパーティのIDプロバイダでSSOを設定する にチェックを入れます。
ログインページURL および ログアウトページURL OpenAM画面に表示されていた、サインインページのURLサインアウトページのURL をコピーペーストします。
※ログインページURLは実質的にSAMLのエンドポイントです。ログイン画面のURLではありません。
sp4.png

次に ドメイン固有の発行元を利用 にチェックを入れ、パスワード変更用URL に 同じくOpenAM画面に表示されていた、パスワード変更のURLを入力し、一旦 保存を押した後、証明書の更新 を選びます。※入力の途中で証明書の更新を選ぶと入力した欄が空欄になってしまうので、一旦保存しています。
sp5.png

先程ダウンロードしたOpenSSOCert.txtをアップロードします。
アップロードが終わりましたら、右下の保存を押します。
G-Suite側の設定もこれで完了です。
sp6.png

G-Suite側の設定が完了し、OpenAM側の画面に出ている情報も不要なので終了を押します。
sp7.png
以上で、全ての設定は完了です。10分に収まりましたでしょうか。

G-Suiteと接続テスト

G-SuiteのURL [例]https://mail.google.com/a/設定したドメイン名 に接続します。
SAMLリクエストと共にOpenAM IdPへリダイレクトされます。
FirefoxのSAML-tracerアドオンで見ると以下のようなSAMLリクエストが確認できます。
一部マスクしてしまっていますが、Issuerに入っているのがSAML SPのEntityIDです。
samlreq.png

OpenAMに既にログイン済みでない場合は、ログイン画面が表示されます。
既にOpenAMにログイン済みでセッションがある場合はログイン画面は表示されず次のSAMLレスポンスとなります。
login0.png

認証成功後は SAMLレスポンス と共にGoogleへ戻ります。
SAML-tracerで確認すると、以下のようなSAMLレスポンスが応答されています。
署名が含まれています。
Issuerに入っているのがSAML IdPのEntityIDです。
samlres.png

無事Gmailの画面が表示されたらSAMLによるSSO完了です。
login2.png

14
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?