ALBには認証機能が備わっています。これを利用することで、簡単にシングルサインオン を実現できます。
選択可能な認証方式は2つです。
- Amazon Cognitoとの連携
- SAML連携などの企業ID連携や、FaceBook、GoogleなどのソーシャルIdPもCognitoのユーザプールを経由すれば可能
- OpenID Connect (OIDC) に準拠する ID プロバイダー (IdP) と直接連携
今回は2を利用して、AzureADと連携してみます。
AzureAD
1. アカウント作成
以下の無料アカウントを使ってAzureADを構築します。
2. アプリの登録
AzureADにはテナント単位でアプリを登録でき、これを介してOIDC連携が可能となります。
下記画面でアプリを登録します。
また、設定画面の「リダイレクトURL」は以下とします。
- https://{ALBのドメイン}/oauth2/idpresponse
3. シークレットの登録
シークレット情報を登録します。ALBのルール作成時に必要となるので値は控えておきます。
4. エンドポイントの確認
ALB
5. リスナー設定
3のエンドポイント情報を元にALBのリスナールール設定をします。
発行者、ユーザ情報エンドポイントは以下を参考にしてください。
https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration
6. 確認
ALBのドメインにアクセスしてみましょう。
MSサインイン画面が表示され、AzureADのテナントユーザでログインできるようになります。
ALBのバックエンドには何が渡されるのか?
HTTPヘッダー x-amzn-oidc*
にjwt形式でユーザクレームが渡され、検証および情報利用が可能になります。
以下を参考にしてください。
https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/listener-authenticate-users.html#user-claims-encoding
まとめ
ALBの認証機能を利用すると、お手軽にOIDCを利用したSSOが実現できます。
自前で実装する必要がなくなるので、活用してみてください。