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

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テナントがまだない場合は、作成する必要があります。
[Auth0 Dashboard]に移動し、テナント名を選択して[Create Tenant(テナントの作成)]を選択します。
[Domain(ドメイン)]を入力し、[Region(リージョン)]を選択して、[Create(作成)]をクリックします。
IdPテナントの構成
セカンダリテナントをIdPとして構成し、SPテナントを表すアプリケーションを登録します。
IdPテナントに切り替えます。テナントメニューを開き、[Switch Tenant(テナントの切り替え)]を選択して、IdPテナントを選択します。
[Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動して、[Create Application(アプリケーションの作成)]を選択します。
アプリケーションの名前
(my-auth0-idpなど)
を入力し、アプリケーションのタイプとして[Regular Web Application(通常のWebアプリケーション)]を選択して、[Create(作成)]を選択します。[Settings(設定)]ページの下までに移動し、[Show Advanced Settings(詳細設定を表示)]を選択します。
[Certificates(証明書)]ビューに切り替え、[Download Certificate(証明書のダウンロード)]を選択し、[PEM]を選択します。証明書がダウンロードされます。この証明書は、SPテナントを構成するときに使用します。
[Endpoints(エンドポイント)] ビューに切り替えて、[SAML Protocol(SAML プロトコル)]URL を見つけて、その内容をコピーします。このURLは、SPテナントを構成するときに使用します。
SAMLシーケンスをテストするユーザーを作成
[Dashboard]>[User Management(ユーザー管理)]>[Users(ユーザー)]に移動し、[Create User(ユーザーの作成)]を選択します。
テストユーザーのメールアドレスを入力します。ドメイン名は、次に設定するサービス プロバイダー テナントのメール ドメインと一致する必要があります。たとえば、ユーザーが
john.doe@exampleco.com
の場合、メール ドメインにはexampleco.com
と入力する必要があります。テストユーザーのパスワードを入力します。
[Connection(接続)]にはデフォルト値を使用します。
[Create(作成)]を選択します。
サービス プロバイダー テナントの構成
SAMLプロトコルを使用してSSOのIdPテナントと通信するようにSPテナントを構成します。
SPテナントに切り替えます。テナントメニューを開き、[Switch Tenant(テナントの切り替え)]を選択して、SPテナントを選択します。
[Dashboard]>[Authentication(認証)]>[Enterprise(エンタープライズ)]に移動し、[SAML]を選択します。
[Create Connection(接続を作成する)]を選択します。
以下の情報を入力して、[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
ファイルを選択します。[Setup(セットアップ)]ビューに切り替えて、テナントに関連付けられているメタデータを表示します。URLをコピーして保存します。
新しいブラウザータブを開き、前にコピーしたURLに移動します。(Auth0 Docsサイトにログインしている場合は、設定に正しい値が事前に入力されます。)
[Entity ID(エンティティID)]を見つけ、その内容をコピーして保存します。次のようになります。
urn:auth0:{yourTenant}:{yourConnectionName}
.{yourConnectionName}
を、IdP テナント用に作成した接続の名前に置き換えます。メタデータを見つけて、提供されているURLをコピーして保存します。次のようになります。
https://{yourDomain}/samlp/metadata?connection={yourConnectionName}
.{yourConnectionName}
を、IdP テナント用に作成した接続の名前に置き換えます。以前にコピーしたURLに移動して、SP テナント内のこの接続のメタデータを表示します。または、ブラウザーからメタデータファイルを保存するように求められる場合があります。
AssertionConsumerServiceで始まる行を見つけて、[Location(場所)] フィールドの値をコピーして保存します。これは次の形式のURLになります。
https://{yourDomain}/login/callback?connection={yourConnectionName}
.これは、IdPテナントからSAMLアサーションを受信するSPテナント上のURLです。次のセクションでは、このURLを IdP テナントに提供して、SAMLアサーションの送信先を認識できるようにします。
サービス プロバイダー メタデータをIdPに追加
SPテナントに関する情報をIdPテナントに追加して、SAML認証要求の受信方法と応答方法を認識できるようにします。
IdPテナントに切り替えます。テナントメニューを開き、[Switch Tenant(テナントの切り替え)]を選択して、IdPテナントを選択します。
[Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動し、以前に作成したIdPアプリケーションの名前を選択して表示します。
[Addons(アドオン)]ビューに切り替えます。
[SAML2 Web App(SAML2 Webアプリ)]を選択してそのオプションを表示し、[Application Callback(アプリケーションコールバック)URL]を見つけます。以前にコピーした AssertionConsumerServiceURL を貼り付けます。
[Settings(設定)]コードブロックで、
[audience(オーディエンス)]
ユーザーキーを見つけてコメントを解除し、行の末尾のコンマを削除して、元の値(urn:foo
)を前にコピーした[Entity ID(エンティティID値)](サービスプロバイダーテナントを構成したときに手順4で作成した接続名を含む)に置き換えます。新しい行は次のようになります。「オーディエンス」:「urn:auth0:{yourTenant}:{yourConnectionName}」
。[Enabled(有効)]を選択します。
IdPのテスト
同じウィンドウで上にスクロールし、Debug[(デバッグ)] を選択します。ログイン画面が表示されます。
上で作成したテストユーザーの資格情報を使用してログインします。構成が正しい場合は、「成功しました!」と、IdP に送信されるエンコードおよびデコードされたSAML応答が表示されます。
デコードされた SAML 応答を確認し、
<saml:Audience>
を見つけて、前の画面で入力した[Entity ID(エンティティ ID)] と一致していることを確認します。[Close this window(このウィンドウを閉じる)]を選択します。
SAML接続をテストするためのアプリケーションの作成
作成したSAML接続をテストするための簡単なアプリケーションを作成します。
SPテナントに切り替えます。テナントメニューを開き、[Switch Tenant(テナントの切り替え)]を選択して、SPテナントを選択します。
[Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動して、[Create Application(アプリケーションの作成)]を選択します。
アプリケーション名を入力し、アプリケーション タイプとして[Regular Web Application(通常のWebアプリケーション)] を選択してから、[Create(作成)]を選択します。
[Domain(ドメイン)]と[Client ID(クライアントID)]の値をコピーして保存します。
[Allowed Callback URL(許可されているコールバックURL)]フィールドを見つけて、
http://jwt.io
と入力します。これは、認証後にユーザーがリダイレクトされる許可されたコールバックURLのリストです。ここに入力するURLは、次の手順で作成するHTMLコード内のコールバックURLと一致する必要があります。通常は、アプリケーションのURLを入力しますが、この例を簡単にするために、テストユーザーはAuth0 JWTオンラインツールに送信されます。このツールは、認証シーケンスの最後に返されるJSON Webトークン (JWT) に関する情報を提供します。[Save Changes(変更の保存)]を選択します。
[(接続)] ビューに切り替えて、[Enterprise(エンタープライズ)]セクションで作成したSAML接続を見つけて有効にします。
サービスとIDプロバイダー間の接続をテストします
SPテナントとIdPテナント間のSAML構成が機能していることを確認するためにテストします。
[Dashboard]>[Authentication(認証)]>[Enterprise(エンタープライズ)]に移動し、[SAML]を選択します。
作成した SAML 接続を見つけて、[Try(試す)] 矢印アイコンを選択します。この接続のテスト中にログインしたことがあるので、「成功しました!」画面に直接送信されます。ログイン画面が表示されたら、テストユーザーの資格情報を使用してログインします。
構成が正しくセットアップされている場合は、「成功しました!」と表示され、IdPテナントからAuth0テナントに送信されたSAML認証アサーションの内容がページに表示されます。
正しく構成されていない場合は、手順を再確認します。それでも問題が解決しない場合は、このドキュメントの最後にあるトラブルシューティングのセクションを参照してください。
テスト アプリケーション用のWebページを作成
SAMLログインシーケンスをトリガーするLockウィジェットを呼び出す簡単なWebページを作成します。
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?
/また、
[audience(オーディエンス)]
をアプリケーションの適切な値に置き換えることもできますが、このテストの目的では、プレースホルダーで十分です。[audience(オーディエンス)]
パラメーターを指定する場合は、Auth0で構成した既存のAPIの識別子と一致することを確認してください。HTMLファイルを、ブラウザーからアクセスできる場所に保存します。
アプリケーションをテスト
SPテナントで作成したAuth0 SAML接続を使用してIdPテナントに対してSSO認証を実行するサンプルHTMLアプリケーションをテストします。
上記で作成したHTMLファイルをブラウザーで開きます。ログイン ボタンが表示されます。
[Login(ログイン)]をクリックします。1つのオプションがあるロックウィジェットが表示されます。アプリケーションに対して他の接続が有効になっている場合は、画面が異なる場合があります。電子メールアドレスの入力を求められた場合は、入力した電子メールアドレスが、最初のテナントのアプリケーションの [Settings(設定)] ビューで入力したドメインと同じドメイン名であることを確認します。
青いボタンをクリックします。このボタンには、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アサーションをデコードします。