※注意※
ちょっとうまく動作しませんでしたので、途中までしかできていません。
時間取れたら更新します。すみません。
今日やること
タイトルだけじゃよくわからないですね。
今日は昨日やったソーシャルログインの応用で、OpenAM同士を連携させようと思います。
イメージは以下のような感じです。
昨日はソーシャルログインはあまりうちでは使わないなぁみたいなことを言ってました。ただ、ふと思い立ってこういうことが出来るのではないかなぁと思ったので、やってみようと思います。
グループ企業向けに公開するアプリ向けとかに使えそう。
会社B側のOpenAMをもう1つセットアップする
Advent Calendarの1日目を見ながら、以下のパラメータでセットアップしました。
- FQDN
- exiam.example.com
会社B側のOpenAMにユーザーを追加する
下記のユーザーを作ります。
key | value |
---|---|
ID | exiamuser |
名 | user |
姓 | exiam |
フルネーム | exiam user |
パスワード | password |
ユーザー状態 | アクティブ |
以下のような感じです。
会社B側をOpenID Providerにする
Advent Calendarの9日目を見ながら、セットアップしたOpenAMをOpenID Providerにします。
会社B側のOpenAMにクライアント登録する
Advent Calendarの10日目を見ながら以下のパラメータでクライアント登録をします。
key | value |
---|---|
client id | externalidentityprovider |
client secret | password |
redirect uri | https://iam.example.com:443/openam/oauth2c/OAuthProxy.jsp |
scope | openid email profile |
会社A側にソーシャルログインの設定をする
OpenAMの管理者アカウント(ユーザー名はamadmin
)でサインインします。
Dashboard => Social Authentication Configuration => Configura Other Authenticationをクリックします。
設定フォームが表示されるので、下記のパラメータで設定を行います。
key | value | desc |
---|---|---|
OpenID Discovery URL | https://exiam.example.com:443/openam/oauth2/.well-known/openid-configuration | 会社B側のIAMのDiscovery URL |
Provider Name | External IAM | ディスプレイネーム |
Image URL/Path | /openam/ZUI/images/logs/exiam.jpg | ログイン画面に表示するアイコン |
Client ID | externalidentityprovider | 会社B側に登録したclient id |
Client Secret | password | 会社B側に登録したclient secret |
Redirect URL | https://iam.example.com:443/openam/oauth2c/OAuthProxy.jsp | コールバックURL |
こんなかんじです。
確認
ここまで設定が完了すると、会社A側のIAMのサインイン画面に会社BのIAMでサインインみたいなリンクが表示されます。
良い感じに動いてそうですが、現状ではB社のリンクをクリックすると、B社のIAMのサインイン画面が表示されず、エラーとなってしまいます。
通常のOpenID Connectのフローが行われているのであれば、認証前なのでJWTはまだ発行されていないと思うんですが、JWTの署名が不正...?リクエストを追ってみないとわからないですね。
〆
今日は全然時間取れませんでした。すみません。
本件はちゃんとdebugして動かしたいと思います。また更新します。
ん~、なりゆきで書く内容を決めると大変ですね...。
明日は何しよう~?
ばい!