Auth0をサービス プロバイダーおよびIDプロバイダーとして使用したSAML SSOのテスト

Auth0をサービス プロバイダー(SP)と IDプロバイダー(IdP)の両方として構成して、SAML シングルサインオン(SSO)接続をテストできます。

プロトコル - SAML SPとしてのAuth0とIdPの図

Auth0は、SAML 1.1またはSAML 2.0を使用したSAML構成でSPとしてのAuth0の使用のみをサポートしますが、SAML 2.0を使用したSAML構成ではIdPとしてAuth0を使用できます。

Auth0を使用してSAML SSOを通じてユーザー認証を行うテスト用の簡単なサンプルアプリケーションをセットアップできます。このアプリケーションでは、1つのテナントをSAML SP、もう1つのテナントをSAML IdPとして使用します。1つのテナントに対して2つのフェデレーションを構成します。

IdPテナントの作成

SAML IdPとして機能するセカンダリAuth0テナントがまだない場合は、作成する必要があります。

  1. [Auth0 Dashboard]に移動し、テナント名を選択して[Create Tenant(テナントの作成)]を選択します。

    Dashboardのテナントのドロップダウンメニューにあるテナントの作成

  2. [Domain(ドメイン)]を入力し、[Region(リージョン)]を選択して、[Create(作成)]をクリックします。

IdPテナントの構成

セカンダリテナントをIdPとして構成し、SPテナントを表すアプリケーションを登録します。

  1. IdPテナントに切り替えます。テナントメニューを開き、[Switch Tenant(テナントの切り替え)]を選択して、IdPテナントを選択します。

  2. [Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動して、[Create Application(アプリケーションの作成)]を選択します。

  3. アプリケーションの名前(my-auth0-idpなど)を入力し、アプリケーションのタイプとして[Regular Web Application(通常のWebアプリケーション)]を選択して、[Create(作成)]を選択します。

  4. [Settings(設定)]ページの下までに移動し、[Show Advanced Settings(詳細設定を表示)]を選択します。

  5. [Certificates(証明書)]ビューに切り替え、[Download Certificate(証明書のダウンロード)]を選択し、[PEM]を選択します。証明書がダウンロードされます。この証明書は、SPテナントを構成するときに使用します。

  6. [Endpoints(エンドポイント)] ビューに切り替えて、[SAML Protocol(SAML プロトコル)]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(作成)]を選択します。

    設定 説明
    Connection Name(接続名) SAML-Auth0-IDPなどの名前を入力します。
    Sign In URL(サインインURL) 上でコピーしたSAMLプロトコルのURLの値を入力します。
    Sign Out URL(サインアウトURL) 上のサインインURLと同じURLを入力します。
    X509 Signing Certificate(X509署名証明書) 赤の**[UPLOAD CERTIFICATE...(証明書のアップロード)]**ボタンをクリックし、上でダウンロードした.pemファイルを選択します。

  5. [Setup(セットアップ)]ビューに切り替えて、テナントに関連付けられているメタデータを表示します。URLをコピーして保存します。

  6. 新しいブラウザータブを開き、前にコピーしたURLに移動します。(Auth0 Docsサイトにログインしている場合は、設定に正しい値が事前に入力されます。)

    1. [Entity ID(エンティティID)]を見つけ、その内容をコピーして保存します。次のようになります。urn:auth0:{yourTenant}:{yourConnectionName}.{yourConnectionName}を、IdP テナント用に作成した接続の名前に置き換えます。

    2. メタデータを見つけて、提供されているURLをコピーして保存します。次のようになります。https://{yourDomain}/samlp/metadata?connection={yourConnectionName}.{yourConnectionName}を、IdP テナント用に作成した接続の名前に置き換えます。

    3. 以前にコピーしたURLに移動して、SP テナント内のこの接続のメタデータを表示します。または、ブラウザーからメタデータファイルを保存するように求められる場合があります。

    4. AssertionConsumerServiceで始まる行を見つけて、[Location(場所)] フィールドの値をコピーして保存します。これは次の形式のURLになります。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(SAML2 Webアプリ)]を選択してそのオプションを表示し、[Application Callback(アプリケーションコールバック)URL]を見つけます。以前にコピーした AssertionConsumerServiceURL を貼り付けます。

  5. [Settings(設定)]コードブロックで、[audience(オーディエンス)]ユーザーキーを見つけてコメントを解除し、行の末尾のコンマを削除して、元の値(urn:foo)を前にコピーした[Entity ID(エンティティID値)](サービスプロバイダーテナントを構成したときに手順4で作成した接続名を含む)に置き換えます。新しい行は次のようになります。「オーディエンス」:「urn:auth0:{yourTenant}:{yourConnectionName}」

  6. [Enabled(有効)]を選択します。

IdPのテスト

  1. 同じウィンドウで上にスクロールし、Debug[(デバッグ)] を選択します。ログイン画面が表示されます。

  2. 上で作成したテストユーザーの資格情報を使用してログインします。構成が正しい場合は、「成功しました!」と、IdP に送信されるエンコードおよびデコードされたSAML応答が表示されます。

  3. デコードされた SAML 応答を確認し、<saml:Audience>を見つけて、前の画面で入力した[Entity ID(エンティティ ID)] と一致していることを確認します。

  4. [Close this window(このウィンドウを閉じる)]を選択します。

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

作成したSAML接続をテストするための簡単なアプリケーションを作成します。

  1. SPテナントに切り替えます。テナントメニューを開き、[Switch Tenant(テナントの切り替え)]を選択して、SPテナントを選択します。

  2. [Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動して、[Create Application(アプリケーションの作成)]を選択します。

  3. アプリケーション名を入力し、アプリケーション タイプとして[Regular Web Application(通常のWebアプリケーション)] を選択してから、[Create(作成)]を選択します。

  4. [Domain(ドメイン)][Client ID(クライアントID)]の値をコピーして保存します。

  5. [Allowed Callback URL(許可されているコールバックURL)]フィールドを見つけて、http://jwt.ioと入力します。これは、認証後にユーザーがリダイレクトされる許可されたコールバックURLのリストです。ここに入力するURLは、次の手順で作成するHTMLコード内のコールバックURLと一致する必要があります。通常は、アプリケーションのURLを入力しますが、この例を簡単にするために、テストユーザーはAuth0 JWTオンラインツールに送信されます。このツールは、認証シーケンスの最後に返されるJSON Webトークン (JWT) に関する情報を提供します。

  6. [Save Changes(変更の保存)]を選択します。

  7. [(接続)] ビューに切り替えて、[Enterprise(エンタープライズ)]セクションで作成したSAML接続を見つけて有効にします。

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

SPテナントとIdPテナント間のSAML構成が機能していることを確認するためにテストします。

  1. [Dashboard]>[Authentication(認証)]>[Enterprise(エンタープライズ)]に移動し、[SAML]を選択します。

  2. 作成した SAML 接続を見つけて、[Try(試す)] 矢印アイコンを選択します。この接続のテスト中にログインしたことがあるので、「成功しました!」画面に直接送信されます。ログイン画面が表示されたら、テストユーザーの資格情報を使用してログインします。

構成が正しくセットアップされている場合は、「成功しました!」と表示され、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: YOUR_AUTH0_DOMAIN,
          clientID: YOUR_CLIENT_ID,
          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>

    Was this helpful?

    /

  2. また、[audience(オーディエンス)]をアプリケーションの適切な値に置き換えることもできますが、このテストの目的では、プレースホルダーで十分です。[audience(オーディエンス)]パラメーターを指定する場合は、Auth0で構成した既存のAPIの識別子と一致することを確認してください。

  3. HTMLファイルを、ブラウザーからアクセスできる場所に保存します。

アプリケーションをテスト

SPテナントで作成したAuth0 SAML接続を使用してIdPテナントに対してSSO認証を実行するサンプルHTMLアプリケーションをテストします。

  1. 上記で作成したHTMLファイルをブラウザーで開きます。ログイン ボタンが表示されます。

  2. [Login(ログイン)]をクリックします。1つのオプションがあるロックウィジェットが表示されます。アプリケーションに対して他の接続が有効になっている場合は、画面が異なる場合があります。電子メールアドレスの入力を求められた場合は、入力した電子メールアドレスが、最初のテナントのアプリケーションの [Settings(設定)] ビューで入力したドメインと同じドメイン名であることを確認します。

  3. 青いボタンをクリックします。このボタンには、samlまたは [ACCESS(アクセス)]と表示されている場合があります。資格情報の入力を求められるか、すぐにコールバックURLにリダイレクトされるかは、アクティブなセッションがまだあるかどうかによって異なります。

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

  • テストの前に、毎回ブラウザーの履歴とクッキーを消去します。そうしないと、ブラウザーがHTMLページの最新バージョンを取得できないか、実行に影響する古いクッキーが残っている可能性があります。

  • インタラクションのHTTPトレースをキャプチャします。多くのツールは、分析のためにブラウザーからHTTPトラフィックをキャプチャします。

    • インターネットで「HTTP トレース」を検索して、ツールを見つけてインストールします。

    • ログインシーケンスを最初から最後までキャプチャし、トレースを分析します。GETのシーケンスを追跡して、予想されるシーケンスのどこまで取得したかを確認します。元のサイトからSPテナント、次にIdPテナントへのリダイレクト、ログインする必要がある場合は資格情報のPOST、コールバックURLまたは SP テナントへのリダイレクト、そしてアプリケーションで指定されたコールバックURLへのリダイレクトが表示されます。

  • ブラウザーでクッキーとJavaScriptが有効になっていることを確認してください。

  • HTML ファイルで指定されたコールバックURLが、アプリケーションの[Allowed Callback URLs(許可されたコールバック URL)]フィールドにもリストされていることを確認します。これを行うには、[Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動し、アプリケーションの名前を選択して、[Allowed Callback URLs(許可されたコールバック URL)]を見つけます。

  • http://samltool.ioツールを使用してSAMLアサーションをデコードします。

もっと詳しく