# SSO のトラブルシューティング
SSO の設定時に発生する可能性のある一般的なエラーの解決方法についてご紹介します。
アカウントで SSO を設定する際は、SSO の設定を保存する前にテストすると、SSO 設定の誤りやユーザーのロックアウトを防ぐことができます。テストウィザードでエラーが検出された場合は、このガイドを使用してエラーを理解し、解決してください。
| エラー | 説明 | 解決策 |
| ----------------------- | --------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| SAML リクエストの有効期限が切れています | SAML リクエストに、無効になったタイムスタンプが含まれていました。通常は、ユーザーが最近認証されたことを確認するために、SAML リクエストに時間制限が設けられています。 | 再度サインインを試みて、ID プロバイダーから新しい SAML アサーションを生成します。 |
| SAML レスポンスが無効です | ID プロバイダー (IdP) から受信した SAML レスポンスが想定される形式に従っていないか、正しくない情報が含まれています。 | [SAML Tracer](https://chromewebstore.google.com/detail/saml-tracer/mpdajninpobndbfcldcmbpnnbhibjmch?hl=en) (Chrome 用) などのツールを使用して、SAML レスポンスを確認します。 |
| カード発行会社 ID が無効です | SAML レスポンスのカード発行会社 ID (エンティティ ID とも呼ばれる) が、 Stripe で設定されているカード発行会社 ID と一致しません。 | ID プロバイダーにログインして、導入設定に移動します。Stripe アプリのカード発行会社 ID と、Stripe で設定したカード発行会社 ID が一致していることを確認します。 |
| ID プロバイダーの URL が無効です | ユーザーを ID プロバイダーのログイン画面にリダイレクトするために Stripe で設定されている ID プロバイダーの URL が正しくないか、到達できません。 | アイデンティティープロバイダーにログインして、導入設定に移動します。Stripe アプリのアイデンティティープロバイダーの URL が、Stripe の設定と一致していることを確認します。 |
| ID プロバイダーの証明書が無効です | ID プロバイダーによって提供された証明書が無効であるか、信頼できません。 | 正しい ID プロバイダーの証明書を使用していることを確認します。多くの場合、最新の証明書は、ID プロバイダーのダッシュボードのセキュリティー設定にあります。証明書が変更された場合は、新しい証明書をダウンロードして、SSO 設定の既存の証明書を置き換えてください。 |
| ユーザーが確認済みのドメインに属していません | 認証を行おうとしているユーザーは、許可されたドメインに属していません。 | ユーザーのメールアドレスに関連付けられたドメインを確認します。ユーザーにアクセス権を付与する必要がある場合は、ID プロバイダーでユーザーのアカウント設定を確認します。ユーザーのメールアドレスが、SSO に使用できるドメインと一致していることを確認します。変更する必要がある場合は、ID プロバイダーでユーザーのアカウントを更新します。 |
| ユーザーの役割が見つかりませんでした | SAML レスポンスで、ユーザーの役割が見つかりませんでした。 | アイデンティティプロバイダーを設定し、ユーザーロールのアサーションが送信されることを確認します。ユーザーに関連付けられている役割を IdP で確認し、それらが適切に割り当てられていることを確認してください。割り当て可能な役割のリストとその設定方法については、[ユーザーロール](https://docs.stripe.com/get-started/account/teams/roles.md)をご覧ください。 |
| iD プロバイダーから役割の割り当てが無効です | SAML レスポンスの役割のアサーションが見つからないか、無効です。 | アイデンティティプロバイダーを設定し、必要な役割のアサーションが送信されることを確認します。IdP の設定と役割の割り当てを確認します。役割のアサーションが不足している場合は、IdP のドキュメントまたは IdP サポートを参照して適切な設定を行ってください。 |
## その他の一般的なエラー
次の例は、発生する可能性のあるその他のエラーメッセージと、考えられる解決策です。
### アプリのエラーを設定する
アプリケーションを設定するときに、認証の問題を示すエラーメッセージが表示される場合があります。
```url
{"error":{"message":"Required field","param":"RelayState"}}
```
これは、サービスプロバイダー開始の認証をサポートしていないアイデンティティプロバイダーから認証を開始しようとしていることを示している可能性があります。Stripe は、IdP 開始のログインフローであっても、アイデンティティプロバイダーがサービスプロバイダー開始の認証をサポートすることを要求しています。この問題は、アイデンティティプロバイダーが認証リクエストからの `RelayState` パラメーターをアサーションと共に正しく返していない場合にも発生する可能性があります。
### サインインエラー
Stripe にサインインすると、次のエラーメッセージが表示される場合があります。
```
SAML. Error: Invalid signature type
```
このエラーは、SAML レスポンスが正しいアルゴリズムで署名されていないことを示します。署名アルゴリズムは `RSA-SHA256`、ダイジェストアルゴリズムは `SHA256` である必要があります。`SHA-256` は業界標準のハッシュアルゴリズムであるため、Stripe はセキュリティ上の理由からこれらの標準を適用しています。以前の標準である `SHA-1` は安全とは見なされなくなりました。`SHA-256` を使用するようにシステムを設定するためのガイダンスについては、ID プロバイダーのドキュメントを参照してください。
### UI ログインエラー
設定後に UI を使用して SSO でログインできない場合は、ドメインが検証されていない可能性があります。メールに使用する正確なドメインが[シングルサインオン (SSO)](https://dashboard.stripe.com/settings/security/sso)ページで確認済みになっていることを確認してください。
アイデンティティープロバイダーの設定が異なる複数のアカウントで同じドメインを検証している場合、使用するアイデンティティープロバイダーを Stripe で特定できません。この場合は、検証済みのドメインを含む次の URL を使用して、SSO でアカウントに直接サインインしてください。この URL には、対象のドメインと認証を受けるアカウントが含まれます。URL の末尾にあるアカウントトークンを変更すると、別のアカウントで認証を受けることになります。
```
https://dashboard.stripe.com/login/saml_direct/domain/{{YOUR_DOMAIN}}/merchant/{{STRIPE_ACCOUNT_ID}}
```
SSO で管理されていない別のアカウントがあり、そのアカウントのメールアドレスが検証済みでない場合は、そのメールアドレスを確認してからもう一度お試しください。
### 役割不足エラー
SSO を設定してからサインインしようとしたときに、役割が必要であることを示すエラーが発生した場合は、ID プロバイダーからの SAML アサーションでユーザーの役割を受け取っていないことを表します。Stripe に送信するアサーションに次の属性が含まれていることを確認してください。
```xml
role_id
```
アサーションにこの属性がすでに含まれている場合は、有効な `role_id` を送信していることを確認してください。
### CSRF トークンエラー
CSRF トークンエラーが発生した場合は、アイデンティティープロバイダーで URL が正しく設定されていることを確認してください。ドキュメントに記載されているように、**SSO URL** と **オーディエンス URI** または **エンティティー ID** に細心の注意を払い、アイデンティティープロバイダーの設定で正確に入力したことを確認してください。
### ダッシュボードから締め出される
Stripe ダッシュボードから締め出されているチームメンバーが 1 人だけの場合、たいていは ID プロバイダー内の設定が正しくないことを示しています。通常、問題の原因は、SAML 認証リクエストに、チームメンバーがアクセスする必要のある各 Stripe アカウントの役割が含まれていないことです。チームメンバーは、ID プロバイダーの管理者に問い合わせて、設定が正しいことを確認する必要があります。
すべてのチームメンバーが Stripe ダッシュボードから締め出されている場合は、SSO 設定が正しくないか、ID プロバイダーの問題 (サービス停止など) が原因である可能性があります。その場合は、アカウント代表者が [Stripe サポート](https://support.stripe.com/contact)に連絡する必要があります。本人確認後、アカウントの SSO 設定を `Required` から `Optional` に変更し、ID プロバイダーの管理者がサインインして設定を修正できるようにします。
## SSO の制限事項
Stripe は以下の SSO 機能をサポートしていません。
- **SAML におけるユーザーの削除**: SAML の制限のため、IdP でユーザーのアクセス許可が取り消されても Stripe には通知されません。Stripe によってアクセス権が取り消されるのは、現在のセッションが期限切れになった後にユーザーが SSO で再度ログインしようとしたときです。すぐにアクセスを取り消す必要がある場合は、[チーム設定](https://dashboard.stripe.com/settings/team)でユーザーを削除するか、SCIM ユーザープロビジョニングを有効にします。
- **モバイルアプリ認証**: Stripe モバイルアプリによる SSO はサポートされていません。
- **SSO セッションの長さを設定する**: SSO セッションの長さは 12 時間に設定されており、変更できません。
- **IdP によるネイティブなログイン開始**: Stripe では、アイデンティティープロバイダーが開始するログインを機能させるには、代行業者が開始する認証が必要です。SAML プロトコルのセキュリティ上の懸念があるため、IdP によるネイティブなログイン開始はサポートされていません。たとえば、中間者攻撃は SAML アサーションを傍受し、後でそれを再生してアカウントへの不正アクセスを取得する可能性があります。チームメンバーが IdP を使用してサインインしようとすると、Stripe はリクエストを代行業者が開始するログインとして扱い、期待どおりにチームメンバーを認証します。
次の SSO 機能が制限付きでサポートされています:
- **ジャストインタイムのアカウント作成**: チームメンバーがアイデンティティプロバイダーに追加された場合、Stripe はそのチームメンバーのジャストインタイム作成を処理します。つまり、チームメンバーが SSO を使用して Stripe ダッシュボードにサインインした際に、既存の Stripe アカウントを持っていない場合、Stripe がアカウントを作成します。チームメンバーのダッシュボードの役割を変更した場合、Stripe はそのチームメンバーが次回サインインしたときに役割を更新します。
## SSO でサポートされている機能
Stripe は以下の SSO 機能をサポートしています。
- **チームメンバーに別の役割を付与する**: サインイン時に、ID プロバイダーは AttributeStatement で正しいチームメンバーの役割を送信する必要があります。実際の例については、Okta の [動的なチームメンバーの役割をグループにマッピングする](https://docs.stripe.com/get-started/account/sso/okta.md#assign-stripe-roles)を参照してください。
- **1 つの SAML アサーションを使用して複数のアカウントにサインインする**: アクセスを設定するすべてのアカウント ID が含まれている複数の役割属性を持つアサーションを ID プロバイダーから Stripe に送信します。以下に例を挙げます。
```xml
role_id
role_id
```
- **SSO を無効にする**: [シングルサインオン (SSO)](https://dashboard.stripe.com/settings/security/sso) ページでアカウントの **実行モード** を **オフ** にすると、SSO を無効にできます。これにより、SAML のみを使用してチームにアクセスできるユーザーから、アクセス権が削除されます。これにはパスワードを設定していないユーザーも含まれます。
- **別の IdP に移行する**: 別の IdP に移行するには、[シングルサインオン (SSO)](https://dashboard.stripe.com/settings/security/sso) ページから SSO 設定を更新します。SSO 設定を更新するときは、まずアカウントの **適用モード** を **オプション** に設定します。
そうすることで、問題が発生した場合でも、メールアドレスとパスワードを使用して Stripe ダッシュボードにサインインできます。テストアカウントをお持ちの場合は、まずテストアカウントの SSO 設定を更新し、新しい設定を検証してから、他のアカウントを更新してください。