メインコンテンツへスキップ
Auth0 は、サービスプロバイダー (SP) と (IdP) の両方として設定でき、 (SSO) 接続をテストできます。
Auth0 を SAML SP および IdP として使用するプロトコル図
Auth0 は、SAML 1.1 または SAML 2.0 を使用する SAML 構成でのみ、SP として利用できます。一方、IdP として利用できるのは、SAML 2.0 を使用する SAML 構成のみです。 テスト用に、1 つのテナントを SAML SP、別のテナントを SAML IdP として使用し、SAML SSO 経由で Auth0 がユーザーを認証するシンプルなサンプルアプリケーションを設定できます。1 つのテナントに対して 2 つのフェデレーションを設定します。

IdPテナントを作成

SAML IdP として使用するセカンダリの Auth0 テナントがまだない場合は、新しく作成する必要があります。
  1. Auth0 Dashboard に移動し、テナント名を選択してから、Create Tenant を選択します。
    Dashboard Tenant Drop-Down Menu Create Tenant
  2. ドメイン を入力し、リージョン を選択して、Create をクリックします。

IdP テナントを設定する

セカンダリ テナントを IdP として設定し、SP テナントを表すアプリケーションを登録します。
  1. IdP テナントに切り替えます。テナント メニューを開き、Switch Tenant を選択してから、IdP テナントを選択します。
  2. Dashboard > Applications > Applications に移動し、Create Application を選択します。
  3. アプリケーションの名前 (my-auth0-idp など) を入力し、アプリケーションの種類として Regular Web Application を選択してから、Create を選択します。
  4. Settings ページの最下部に移動し、Show Advanced Settings を選択します。
  5. Certificates ビューに切り替え、Download Certificate を選択してから PEM を選択します。証明書がダウンロードされます。この証明書は、SP テナントを設定する際に使用します。
  6. Endpoints ビューに切り替え、SAML Protocol URL を見つけてその内容をコピーします。この URL は、SP テナントを設定する際に使用します。

SAML シーケンスをテストするためのユーザーを作成する

  1. Dashboard > User Management > Users に移動し、Create User を選択します。
  2. テストユーザーのメールアドレスを入力します。ドメイン名は、次に設定するサービスプロバイダーのテナントのメールドメインと一致している必要があります。たとえば、ユーザーが john.doe@exampleco.com の場合、メールドメインには exampleco.com を入力します。
  3. テストユーザーのパスワードを入力します。
  4. Connection にはデフォルト値を使用します。
  5. Create を選択します。

サービスプロバイダーのテナントを設定する

SAML プロトコルを使用して SSO を行うため、IdP テナントと通信できるように SP テナントを設定します。
  1. SP テナントに切り替えます。テナントメニューを開き、Switch Tenant を選択してから、SP テナントを選択します。
  2. Dashboard > Authentication > Enterprise に移動し、SAML を選択します。
  3. Create Connection を選択します。
  4. 以下の情報を入力し、Create を選択します。
設定説明
接続名SAML-Auth0-IDP など、任意の名前を入力します。
Sign In URL上でコピーした SAML Protocol URL の値を入力します。
Sign Out URL上記の Sign In URL と同じ URL を入力します。
X509 Signing Certificate赤い UPLOAD CERTIFICATE… ボタンをクリックし、上でダウンロードした .pem ファイルを選択します。
  1. Setup ビューに切り替えると、テナントに関連付けられたメタデータを確認できます。URL をコピーして保存します。
  2. 新しいブラウザータブを開き、先ほどコピーした URL に移動します。 (Auth0 Docs サイトにログインしている場合は、設定に正しい値があらかじめ入力されます。)
    1. Entity ID を見つけて、その内容をコピーして保存します。形式は urn:auth0:{yourTenant}:{yourConnectionName} のようになります。{yourConnectionName} は、IdP テナント用に作成した接続の名前に置き換えます。
    2. Metadata を見つけて、表示されている URL をコピーして保存します。形式は https://{yourDomain}/samlp/metadata?connection={yourConnectionName} のようになります。{yourConnectionName} は、IdP テナント用に作成した接続の名前に置き換えます。
    3. 先ほどコピーした URL に移動して、SP テナント内のこの接続のメタデータを表示します。ブラウザーによっては、メタデータファイルの保存を求められる場合もあります。
    4. AssertionConsumerService で始まる行を見つけて、Location フィールドの値をコピーして保存します。形式は https://{yourDomain}/login/callback?connection={yourConnectionName} のようになります。これは、IdP テナントから送信される SAML アサーションを受信する SP テナント上の URL です。次のセクションでは、この URL を IdP テナントに指定して、SAML アサーションの送信先を認識できるようにします。

IdP にサービスプロバイダーのメタデータを追加する

SP テナントに関する情報を IdP テナントに追加し、SAML 認証リクエストを受信して応答する方法を認識できるようにします。
  1. IdP テナントに切り替えます。テナントメニューを開き、Switch Tenant を選択してから、IdP テナントを選択します。
  2. Dashboard > Applications > Applications に移動し、先ほど作成した IdP アプリケーションの名前を選択します。
  3. Addons ビューに切り替えます。
  4. SAML2 Web App を選択してオプションを表示し、Application Callback URL を見つけます。先ほどコピーした AssertionConsumerService URL を貼り付けます。
  5. Settings コードブロックで audience キーを見つけてコメントを解除し、行末のカンマを削除して、元の値 (urn:foo) を先ほどコピーした Entity ID の値に置き換えます (サービスプロバイダー テナントの設定時に手順 4 で作成した接続名を含めます) 。 新しい行は次のようになります: “audience":"urn:auth0:{yourTenant}:{yourConnectionName}"”。
  6. Enable を選択します。

IdP をテストする

  1. 同じウィンドウで上にスクロールし、Debug を選択します。ログイン画面が表示されます。
  2. 上で作成したテストユーザーの認証情報を使用してログインします。設定が正しければ、「It works!」と、IdP に送信されるエンコード済みおよびデコード済みの SAML レスポンスが表示されます。
  3. デコード済みの SAML レスポンスを確認し、<saml:Audience> を見つけて、前の画面で入力した Entity ID と一致していることを確認します。
  4. Close this window を選択します。

SAML 接続をテストするアプリケーションを作成する

作成した SAML 接続をテストするため、シンプルなアプリケーションを作成します。
  1. SP テナントに切り替えます。テナントメニューを開き、Switch Tenant を選択してから、SP テナントを選択します。
  2. Dashboard > Applications > Applications に移動し、Create Application を選択します。
  3. アプリケーション名を入力し、アプリケーションタイプとして Regular Web Application を選択して、Create を選択します。
  4. ドメインClient ID の値をコピーして保存します。
  5. Allowed Callback URLs フィールドを見つけて、http://jwt.io を入力します。 これは、認証後にユーザーがリダイレクトされる許可済みコールバック URL の一覧です。ここに入力する URL は、次の手順で作成する HTML コード内のコールバック URL と一致している必要があります。通常はアプリケーションの URL を入力しますが、この例では簡単にするため、テストユーザーは Auth0 の JWT オンラインツールにリダイレクトされます。このツールでは、認証シーケンスの最後に返される JSON Web Token (JWT) に関する情報を確認できます。
  6. Save Changes を選択します。
  7. Connections ビューに切り替え、Enterprise セクションで作成した SAML 接続を見つけて有効にします。

サービスとIDプロバイダー間の接続をテストする

SPテナントとIdPテナント間のSAML設定が正しく機能することを確認します。
  1. Dashboard > Authentication > Enterprise に移動し、SAML を選択します。
  2. 作成したSAML接続を見つけて、Try の矢印アイコンを選択します。以前にこの接続のテストでログインしているため、直接「It works!」画面が表示されるはずです。ログイン画面が表示された場合は、テストユーザーの認証情報でログインしてください。
設定が正しければ、「It works!」と表示され、ページにIdPテナントからAuth0テナントへ送信されたSAML認証アサーションの内容が表示されます。 正しく構成されていない場合は、手順を再確認してください。それでも問題が解決しない場合は、このドキュメントの末尾にあるトラブルシューティングのセクションを参照してください。

テストアプリケーション用の Web ページを作成する

SAML ログインシーケンスを開始する Lock ウィジェットを呼び出す、シンプルな Web ページを作成します。
  1. HTML ページを作成し、次の HTML コードと JavaScript コードを挿入します。{yourClientId}{yourDomain} は、先ほど登録したアプリケーションの実際の値に置き換えてください。 (それらの値を控えていない場合は、SP テナントの Application Settings で確認できます。)
    <!DOCTYPE html>
    <html lang="en">
    <body>
      <button type="button" onclick="login()">Log in</button>
      <script src="https://cdn.auth0.com/js/auth0/9.19.0/auth0.min.js"></script>
      <script>
        var auth0 = new auth0.WebAuth({
          domain: '{yourDomain}',
          clientID: '{yourClientId}',
          redirectUri: 'URL_TO_THIS_PAGE',
          responseType: 'token id_token',
          scope: 'openid email profile'
        })
    
        auth0.parseHash(function(err, data) {
          if (err) {
            console.log(err)
          }
    
          if (data) {
            console.log('Login successful!')
            console.log(data)
          }
        })
    
        window.login = function() {
          auth0.authorize()
        }
      </script>
    
    </body>
    </html>
    
  2. audience をアプリケーションに適した値に置き換えることもできますが、このテストではプレースホルダーのままで十分です。audience パラメータを指定する場合は、Auth0 で設定済みの既存 API の識別子と一致していることを確認してください。
  3. HTML ファイルを、ブラウザーからアクセスできる場所に保存します。

サンプルアプリケーションをテストする

SP テナントで作成した Auth0 の SAML 接続を使用するサンプル HTML アプリケーションをテストし、IdP テナントに対する SSO 認証を実行します。
  1. 上で作成した HTML ファイルをブラウザで開きます。ログインボタンが表示されるはずです。
  2. Login をクリックします。1 つの選択肢を含む Lock ウィジェットが表示されるはずです。アプリケーションで他の接続も有効になっている場合は、画面の表示が異なることがあります。メールアドレスの入力を求められた場合は、入力するメールアドレスのドメイン名が、最初のテナントのアプリケーションの Settings ビューで入力したドメインと同じであることを確認してください。
  3. saml または ACCESS と表示された青いボタンをクリックします。認証情報の入力を求められるか、すぐにコールバック URL にリダイレクトされるかは、アクティブなセッションがまだあるかどうかによって異なります。

テストシナリオのトラブルシューティング

  • テストを行う前に、毎回ブラウザーの履歴と Cookie を消去してください。そうしないと、ブラウザーが HTML ページの最新バージョンを読み込まなかったり、実行に影響する古い Cookie が残ったりする可能性があります。
  • やり取りの HTTP トレースを取得してください。多くのツールでは、分析用にブラウザーの HTTP トラフィックをキャプチャできます。
    • “HTTP Trace” で検索して、ツールを見つけてインストールしてください。
    • ログインシーケンスを最初から最後までキャプチャし、トレースを分析してください。想定どおりのシーケンスのどこまで進んでいるかを確認するには、一連の GET リクエストを追跡します。元のサイトから SP テナントにリダイレクトされ、次に IdP テナントにリダイレクトされ、ログインが必要な場合は認証情報の POST が行われ、その後コールバック URL または SP テナントにリダイレクトされ、最後にアプリケーションで指定した Callback URL にリダイレクトされるはずです。
  • ブラウザーで Cookie と JavaScript が有効になっていることを確認してください。
  • HTML ファイルで指定した Callback URL が、アプリケーションの Allowed Callback URLs フィールドにも含まれていることを確認してください。確認するには、Dashboard > Applications > Applications に移動し、アプリケーションの名前を選択して、Allowed Callback URLs を確認します。
  • http://samltool.io ツールを使用して SAML アサーションをデコードしてください。

詳細はこちら