翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Connect Customer を使用した SAML のトラブルシューティング
この記事では、Connect Customer で SAML を使用する際に発生する最も一般的な問題のトラブルシューティングと解決方法について説明します。
Okta、PingIdentify、Azure AD などの他の ID プロバイダーとの統合をトラブルシューティングする場合は、「Connect Customer SSO Setup Workshop
エラーメッセージ: アクセスが拒否されました。アカウントは認証されましたが、このアプリケーションには登録されていません。
これは何を意味するのでしょうか?
このエラーは、ユーザーが SAML を使用して AWS SAML ログインエンドポイントに正常に認証されたことを意味します。ただし、ユーザーは Connect Customer 内で一致/検出できませんでした。このメッセージは通常、以下のいずれかを示します。
-
Connect Customer のユーザー名が、ID
RoleSessionNameプロバイダーから返された SAML レスポンスで指定された SAML 属性と一致しません。 -
ユーザー が Connect Customer に存在しません。
-
ユーザーには、SSO を使用して 2 つの個別のプロファイルが割り当てられています。
解像度
次のステップを使用して、ID プロバイダーから返された SAML レスポンスで指定された RoleSessionName SAML 属性を確認し、Connect Customer のログイン名を取得して比較します。
-
エンドツーエンドのログインプロセスに対して HAR キャプチャ (HTTP AR チャイブ) を実行します。これにより、ブラウザ側からネットワークリクエストがキャプチャされます。HAR ファイルを任意のファイル名 (saml.har など) で保存します。
-
テキストエディタを使用して、HAR ファイル内で SAMLResponse を検索します。または、以下のコマンドを実行します。
$ grep -o "SAMLResponse=.*&" azuresaml.har | sed -E 's/SAMLResponse=(.*)&/\1/' > samlresponse.txt-
これにより、HAR ファイル内の SAMLresponse が検索され、samlresponse.txt ファイルに保存されます。
-
レスポンスは URL エンコードされ、コンテンツは Base64 エンコードされます。
-
-
URL レスポンスをデコードし、サードパーティーのツールまたは単純なスクリプトを使用して Base64 コンテンツをデコードします。例:
$ cat samlresponse.txt | python3 -c "import sys; from urllib.parse import unquote; print(unquote(sys.stdin.read()));" | base64 --decode > samlresponsedecoded.txtこのスクリプトは、単純な python コマンドを使用して、元の URL エンコード形式から SAMLResponse をデコードします。次に、Base64 からのレスポンスをデコードし、SAML レスポンスをプレーンテキスト形式で出力します。
-
デコードされた応答で、必要な属性を確認します。例えば、次の図は、
RoleSessionNameの確認方法を示しています。
-
前のステップで返されたユーザー名が Connect Customer インスタンスのユーザーとして存在するかどうかを確認します。
$ aws connect list-users --instance-id [INSTANCE_ID] | grep $username
-
最後の grep が結果を返さない場合は、ユーザーが Connect Customer インスタンスに存在しないか、別の大文字と小文字で作成されていることを意味します。
-
Connect Customer インスタンスに多数のユーザーがいる場合、ListUsers API コールからのレスポンスがページ分割される可能性があります。API から返された
NextTokenを使用して、残りのユーザーを取得します。詳細については、「ListUsers」を参照してください。
-
SAML レスポンスの例
以下は、サンプル SAML レスポンスからの図です。この場合、ID プロバイダー (IdP) は Azure Active Directory (Azure AD) です。
エラーメッセージ: アクセスが拒否されました。 AWS アカウント管理者にお問い合わせください。
これは何を意味するのでしょうか?
ユーザーが引き受けたロールは、SAML を使用して正常に認証されました。ただし、ロールには、Connect Customer の GetFederationToken API を呼び出すアクセス許可がありません。この呼び出しは、ユーザーが SAML を使用して Connect Customer インスタンスにログインできるようにするために必要です。
解像度
-
connect:GetFederationTokenのアクセス許可を持つポリシーを、エラーメッセージで見つかったロールにアタッチします。次に、サンプルポリシーを示します。 -
IAM コンソールを使用してポリシーをアタッチします。または、アタッチロールポリシー API を使用します。例えば、次のようにします。
$ aws iam attach-role-policy —role-name [ASSUMED_ROLE] —policy_arn [POLICY_WITH_GETFEDERATIONTOKEN]
エラーメッセージ: セッションが有効期限切れです
ログイン中に [セッションが有効期限切れです] メッセージが表示される場合は、ほとんどの場合、セッショントークンを更新するだけで解決できます。ID プロバイダーに移動して、ログインします。Connect Customer ページを更新します。引き続きこのメッセージが表示される場合は、IT チームにお問い合わせください。