Okta と AWS IAM Federation の「invalid SAML response」(無効な SAML レスポンス) エラーをトラブルシューティングするにはどうすればよいですか?

所要時間2分
0

Okta で AWS にログインすると、次のような無効な SAML エラーが表示されます。 「Your request included an invalid SAML response.To logout, click here」(リクエストには無効な SAML レスポンスが含まれていました。ログアウトするには、こちらをクリックしてください)。 このエラーのトラブルシューティング方法を教えてください。

簡単な説明

Okta で AWS Account Federation を使用すると、AWS へのログイン時に無効な SAML エラーが表示されることがあります。これは、SAML レスポンスのロール属性で情報が不足しているか、またはその属性について正しくない情報を指定した場合に発生する可能性があります。この属性の想定値は、次に示すように、AWS Identity and Access Management (IAM) ロールと SAML プロバイダーの 1 つ以上のコンマ区切りのペアです。

<Attribute Name="https://aws.amazon.com/SAML/Attributes/Role">
  <AttributeValue>arn:aws:iam::ACCOUNT_NUMBER:role/ROLE_NAME_1,arn:aws:iam::ACCOUNT_NUMBER:saml-provider/PROVIDER_NAME/AttributeValue>
  <AttributeValue>arn:aws:iam::ACCOUNT_NUMBER:role/ROLE_NAME_2,arn:aws:iam::ACCOUNT_NUMBER:saml-provider/PROVIDER_NAME</AttributeValue>
  <AttributeValue>arn:aws:iam::ACCOUNT_NUMBER:role/ROLE_NAME_3,arn:aws:iam::ACCOUNT_NUMBER:saml-provider/PROVIDER_NAME</AttributeValue>
</Attribute>

ブラウザから SAML レスポンスを確認するには、「トラブルシューティングのためにブラウザで SAML レスポンスを表示する方法」のステップに従います。

解決方法

Okta で [Use Group Mapping] (グループマッピングを使用) 設定を使用している場合は、「複数の AWS アカウントで Okta に接続する」のステップに従います。使用していない場合は、「単一の AWS アカウントで Okta に接続する」にアクセスします。 

複数の AWS アカウントで Okta に接続する

複数の AWS アカウントで Okta に接続する場合、Okta はグループベースのロールマッピングを使用します。これは、Okta が [Group Name] (グループ名) を使用して SSO の AWS アカウント ID と IAM ロール名を識別することを意味します。

: 情報を正確に取得するには、必ず [Group Filter] (グループフィルター) と [Role Value Pattern] (ロール値パターン) を Okta で正しく入力してください。

1.    Okta 管理コンソールにログインします。

2.    [Applications] (アプリケーション) を選択し、再度 [Applications] (アプリケーション) を選択します。

3.    [Sign On] (サインオン) を選択し、[Edit] (編集) を選択します。

4.    [Group Filter] (グループフィルター) は、[Okta Group name] (Okta グループ名) の AWS アカウント ID や IAM ロール名などの情報を取得するカスタムの正規表現です。詳細については、Okta の設定ドキュメントを参照してください。

設定ガイドには次の例が記載されています。

Group name: "aws#[account alias]#[role name]#[account #]" 
Group Filter: "^aws\#\S+\#(?{{role}}[\w\-]+)\#(?{{accountid}}\d+)$"

[Group Name] (グループ名) をカスタマイズする場合は、この例を拡張できます。次の [Group Name] (グループ名) と [Group Filter] (グループフィルター) の例を参照してください。

Group Name: [account alias]|[role name]|[account #] 
Group Filter: ^\S+\|(?{{role}}[a-zA-Z0-9+=.@\-_]+)\|(?{{accountid}}\d+)$
Group Name: aws_[account #]_[role name] 
Group Filter: ^aws\_(?{{accountid}}\d+)\_(?{{role}}[a-zA-Z0-9+=.@\-_]+)$

:

  • IAM ロール名には英数字と「+=,.@-_」の文字を使用できます。グループフィルターが原因でエラーが発生した場合は、[Role Name] (ロール名) の一部ではない区切り文字 (例: 「#」や「|」) の使用を検討してください。
  • IAM Federation を使用してログインする場合は、IAM ロール名に「,」を含めないでください。これは、以下に示す [Role Value Pattern] (ロール値パターン) では、SAML プロバイダーとロール名をカンマで区切っているためです。IAM Federation で使用する、名前にカンマを含まない新しい IAM ロールを作成します。

5.    [Role Value pattern] (ロール値パターン) には、IAM ロールと SAML プロバイダーの ARN をカンマで区切って含める必要があります。この例の [SAML Provider Name] (SAML プロバイダー名) を Okta インスタンスの [Provider name] (プロバイダー名) に置き換えます。この情報は、AWS IAM コンソールの [Identity providers] (アイデンティティプロバイダー) で確認できます。

arn:aws:iam::${accountid}:saml-provider/[SAML Provider Name],arn:aws:iam::${accountid}:role/${role}

注: [SAML Provider Name] (SAML プロバイダー名) は、すべての AWS アカウントについて同一である必要があります。

6.    [保存] を選択します。

7.    Okta から AWS へのユーザーログインをテストして、エラーが解決したかどうかを確認します。

単一の AWS アカウントで Okta に接続する

単一のアカウント設定の場合、Okta は [Role Value Pattern] (ロール値パターン) を自動的に設定します。単一アカウント統合について「Your request included an invalid SAML response.To logout, click here」(リクエストには無効な SAML レスポンスが含まれていました。ログアウトするには、こちらをクリックしてください) というエラーが表示されている場合は、Okta にサポートケースを送信して問題を調査してください。


関連情報

エラー: Your request included an invalid SAML response. to logout, click here

How to configure SAML 2.0 for AWS Account Federation

コメントはありません

関連するコンテンツ