Azure Active Directoryを使ったAEMのSAML認証(Tech Blog)
はじめに
SSO(シングルサインオン) はユーザーが様々なアプリケーションやクラウドサービスなどで都度ログインすることなく、複数アプリケーションを横断して認証を行うことができる仕組みで、新しい常識となりつつあります。
SAML は企業でSSOを実装する最も安全な方法の一つとして世界的に受け入れられており、Active DirectoryやOKTAといったソリューションと連携してSSO認証の仕組みとして利用することができます。
AEMとSAMLについての概要
Adobe Experience ManagerはSAML認証に対応しており、その機能が標準で実装されています。ユーザー作成だけでなく、必要に応じて「フェデレーションメタデータURL」から受信したユーザーの詳細情報を元に、スタッフを関連した権限グループに割り当てると言ったことができます。
Adobeのソリューション:
AEM 6.2~6.5
インストール:
AEM 6.2~6.5が稼働するAuthor/Publish両方のサーバーにJDK 1.8が必要です。
前提条件(Microsoft Azure側):
Azure AD 識別子(エンティティ ID)、SAML署名証明書、ログインURL、フェデレーションメタデータ URL ※全てこの記事の中で取得します。
前提条件(AEM側):
TLS1.1以上を使用して、AEMでHTTPSを有効にする。
その他:
今回の説明ではデモサイト「We Retail」を使って、SAML認証を実装します。
想定される動作
- ユーザーがAEMで公開されているwebサイト「We-Retail」にアクセスする。
- AEMがユーザーを確認してSAML認証要求を作成し、Azure ADにリダイレクトする。
- Azure ADがユーザーを認証し、SAML認証応答を作成する。
- 認証応答と共にAEMにリダイレクトされ、AEMがSAML認証応答を検証してユーザーのサインインを許可。
- Webサイトが表示される。
https://www.youtube.com/embed/L2rILPK76Pg?feature=oembed
エンタープライズ アプリケーションの作成
Azure Portalに移動します。ホーム画面に表示された「Azure Active Directoryの管理」にある「表示」ボタンをクリックします。
メニューから「エンタープライズアプリケーション」を選択すると、アプリケーションの一覧画面が表示されます。
上部にある「新しいアプリケーション」をクリックして、今回のアプリケーションを登録します。
Azure ADシングルサインオンの設定
次にAzure Portalで Azure AD シングルサインオンを有効にします。先程、作成したアプリケーション「Adobe Experience Manager Demo」のページから、「プロパティ」→「Getting Started」→「2. シングルサインオン」の設定を選択します。
「シングル サインオン方式の選択」画面で、「SAML」を選択すると、「SAMLによるシングル サインオンのセットアップページ」が表示されます。
①基本的なSAMLの構成
「編集」をクリックし、以下の様に設定を行ったら「保存」をクリックします。
- 識別子(エンティティID) Azure ADとAEM サーバーの間で定義するユニークな値。
ここでは分かりやすくホスト名とパスを入力します。例.https:/localhost:4502/content/we-retail/
設定値は後で使うのでメモしておきます。 - Reply URL 次のパターンを使用して URL を入力します。
https://[公開ホスト名]:[ポート番号]/[パス]/saml_login
②ユーザー属性とクレーム 設定なし
③SAML署名証明書
証明書(Base64)とフェデレーションメタデータXMLをダウンロードし、ファイルをコンピュータに保存します。
④Adobe Experience Manager Demoのセットアップ 表示されているログインURLをメモしておきます。
ユーザーとグループの追加
次に左ペインの「ユーザーとグループ」を選択し、「ユーザーとグループの追加」をクリックします。
キーストアの初期化(未実施の場合)
ここからはAEM側の設定です。Authentication Service ユーザーの設定画面に移動し、「キーストアを作成」ボタンをクリックしてストアを初期化します。
SAML署名証明書をAEMにインストールする
AEM 6.4~6.5 Author/Publishの場合:
グローバルトラストストアの設定画面に移動します。
- 「証明書をCERファイルから追加」をクリックし、Azure Portalで取得した証明書をアップロードします。
- 「証明書をユーザーにマップ」の欄が空になっていることを確認して「送信」をクリックします。
- エイリアスの値をコピーします。これは後のステップで使用するのでメモしておきます。
AEM 6.2~6.3 Author/Publishの場合:
- Touch UIで管理者ユーザーを開きます。まだ、作成されていない場合はトラストストアで「TrustStoreを作成」をクリックします。
- トラストストアの設定画面に移動します。
- 「証明書を CER ファイルから追加」をクリックし、Azure Portalで取得した証明書をアップロードします。「証明書をユーザーにマップする」のチェックボックスが無効になっていることを確認して下さい。
SAML認証ハンドラーの設定
ここでは、Microsoft Azure ADから取得した情報と、証明書のエイリアスを使用して「SAML認証ハンドラー」の設定を行います。Config Managerから「Adobe Granite SAML 2.0 Authentication Handler」に移動し、以下のプロパティを設定します。
- Paths:今回の投稿ではデモサイト「We Retail」を使用しているので、このパスを値として設定します。
/content/we-retail および /content/we-retail/ - IDP URL:Azure ADシングルサインオンの設定の「Adobe Experience Manager Demoのセットアップ」セクションで取得したログインURLを入力します。
- IDP Certificate Alias:グローバルトラストストアの設定で証明書をアップロードした際に取得したエイリアスを入力します。
- Service Provider Entity ID:Azure ADシングルサインオンの設定の「基本的なSAMLの構成」セクションで設定した識別子(エンティティID)を入力します。
- Password of Key Store:キーストアの初期化の手順で設定したパスワードを入力します。
- User ID attribute:ユーザー作成やAEMへのログインに使用するユーザー属性を指定します。属性として利用可能なユーザー属性はAzure ADで取得したフェデレーションメタデータXMLを開くと確認ができます(このデモではnameidentifierを指定します。)
- Auto create CRX Users:チェックを入れた状態にしておくと、上記で指定したUser ID属性を使ってAEMにユーザーが作成されます。
- Add to Groups:チェックを入れると、次の「Default Groups」プロパティに指定されたグループに作成/ログインしたユーザーが追加することができます。
- Default Groups:作成/ログインしたユーザーが追加されるグループ名です。
- NameIDPolicy Format:次の値を入力して下さい :
urnnamesSAML:2.0transient
- Synchronized attributes(オプション):AEM内のユーザープロパティとフェデレーションメタデータURLで利用可能なメタデータ属性をマッピングしてCRXに保存できます。
- Logout URL(オプション):Handle Logoutと組み合わせて、ログアウト時にリダイレクトするURLが指定できます(補足:AEMはSAML 2.0に対応しているので、Logout URLに「Adobe Experience Manager Demoのセットアップ」セクションに表示されるログアウトURLを設定するとエラーになります。Azureの画面にリダイレクトしたい場合は、ログインURLの値を設定します。)。
Apache Sling リファラーフィルター
ここでは、Apache の「Sling Referrer Filter」の設定を行います。Config Managerから「Apache Sling Referrer Filter」に移動し、以下のプロパティを設定します。
- Allow empty チェックを有効にして空のリファラーヘッダーを許可します。
- Allow Hosts 許可ホストとして「microsoftonline.com」を登録します。
- Allow Regex Hosts 許可ホストとして「microsoftonline.com」を登録します。
CRXへのMixinタイプの追加
ここではSAML認証ハンドラーが動作するように、AEM のコンテンツノードにMixinタイプのプロパティを追加します。通常、Mixinタイプは高度な機能(バージョン管理、アクセス制御、参照、ロックなど)をノードに追加するために使用される機能です。
今回はデモサイト「We Retail」を使っているので、/content/we-retailに移動して、トップメニューの「Mixins」をクリックします。次のMixinプロパティを追加します。
- rep:AccessControllable
- cq:ReplicationStatus
- granite:AuthenticationRequired
「OK」をクリックしてダイアログを閉じたら、CRXDEのトップメニューにある「すべて保存」をクリックします。
これで/content/we-retail の下にあるリンクを開いてテストすることができるようになりました。実際に、次のURLを開いてみましょう。
なお、対象ユーザーのグループが事前に設定されていない場合、ページは404エラーの応答ページが開きます。これはユーザーがログインに成功したことを意味しますが、実際の利用にあたってはサイトにアクセスする権限が必要です。グループレベルで権限を設定してください。ユーザーがログインしているかどうかはCRXDEに入ってユーザー名を参照することで確認できます。
この記事は2020年6月に公開された SAML Authentication in AEM Using Microsoft Azure Active Directory を抄訳したものです。