SAML 2.0 および OAuth 2.0 アプリケーションへのシングルサインオンアクセス - AWS IAM Identity Center

SAML 2.0 および OAuth 2.0 アプリケーションへのシングルサインオンアクセス

IAM アイデンティティセンターでは、SAML 2.0 アプリケーションまたは OAuth 2.0 アプリケーションへのシングルサインオンアクセスをユーザーに提供できます。以下のトピックでは、SAML 2.0 と OAuth 2.0 の大まかな概観を説明します。

トピック

SAML 2.0

SAML 2.0 は、SAML 認証機関 (ID プロバイダーまたは IdP) と SAML 2.0 コンシューマー (サービスプロバイダーまたは SP) との間でユーザーに関する情報を渡す SAML アサーションを安全に交換するための業界標準です。IAM Identity Center は、この情報を使用して、AWS アクセスポータル内でアプリケーションの使用が許可されているユーザーに、フェデレーションシングルサインオンアクセスを提供します。

OAuth 2.0

OAuth 2.0 は、アプリケーションがパスワードを共有せずにユーザーデータに安全にアクセスして共有できるようにするプロトコルです。この機能により、アプリケーションによるリソースへのアクセスを、安全かつ標準化された方法でユーザーに許可できます。アクセスは、さまざまな OAuth 2.0 付与フローによって容易になります。

IAM Identity Center を使用すると、パブリッククライアントで実行されるアプリケーションは、ユーザーに代わってプログラムで AWS アカウントおよびサービスにアクセスするための一時的な認証情報を取得できます。パブリッククライアントは通常、ローカルでアプリケーションを実行するのに使用されるデスクトップ、ノートパソコン、またはその他のモバイルデバイスです。パブリッククライアントで実行される AWS アプリケーションの例としては、AWS Command Line Interface (AWS CLI)、AWS Toolkit、および AWS Software Development Kits (SDK) などがあります。これらのアプリケーションが認証情報を取得できるように、IAM Identity Center は次の OAuth 2.0 フローの一部をサポートしています。

  • コード交換用検証キー (PKCE) を使用した認証コードの付与 (RFC 6749 および RFC 7636

  • デバイス認可付与 (RFC 8628)

注記

これらの許可タイプは、この機能をサポートする AWS のサービスでのみ使用できます。これらのサービスは、すべての AWS リージョンでこの許可タイプをサポートしていない場合があります。リージョンごとの違いについては、AWS のサービスの関連ドキュメントを参照してください。

OpenID Connect (OIDC) は、OAuth 2.0 フレームワークに基づく認証プロトコルです。OIDC は、認証に OAuth 2.0 を使用する方法を指定します。IAM Identity Center OIDC サービス API を介してアプリケーションは OAuth 2.0 クライアントを登録し、これらのフローのいずれかを使用して IAM Identity Center で保護された API へのアクセス許可を提供するアクセストークンを取得します。アプリケーションは、目的の API ユーザーを宣言するためのアクセススコープを指定します。IAM Identity Center 管理者として ID ソースを設定した後、アプリケーションのエンドユーザーがまだサインインプロセスを完了していない場合は、サインインプロセスを完了する必要があります。その後、エンドユーザーは、アプリケーションが API コールを行うことに同意する必要があります。これらの API コールは、ユーザー自身の権限を使用して行われます。これに対して IAM Identity Center は、ユーザーが同意したアクセススコープを含むアクセストークンをアプリケーションに返します。

OAuth 2.0 許可フローの使用

OAuth 2.0 許可フローは、フローをサポートする AWS マネージドアプリケーションでのみ使用できます。OAuth 2.0 フローを使用するには、お使いの IAM Identity Center インスタンスと使用する AWS マネージドアプリケーション (サポートされている必要があります) を、単一の AWS リージョンにデプロイする必要があります。AWS マネージドアプリケーションのリージョンごとの可用性と、使用する IAM Identity Center のインスタンスについては、AWS のサービスのドキュメントを参照してください。

OAuth 2.0 フローを使用するアプリケーションを使用するには、エンドユーザーがアプリケーションの接続先 URL を入力してお使いの IAM Identity Center インスタンスに登録する必要があります。アプリケーションによっては、管理者が IAM Identity Center インスタンスの AWS アクセスポータル URL または発行者 URL をユーザーに提供する必要があります。これらの 2 つの設定は、IAM Identity Center コンソール[設定] ページで確認できます。クライアントアプリケーションの設定の詳細については、そのアプリケーションのドキュメントを参照してください。

アプリケーションにサインインして同意するエンドユーザーエクスペリエンスの詳細は、そのアプリケーションが PKCE を使用した認可コード付与デバイス認可付与 のいずれを使用しているかどうかによって異なります。

PKCE を使用した認可コード付与

このフローは、ブラウザを持つデバイスで実行されるアプリケーションによって使用されます。

  1. ブラウザウィンドウが開きます。

  2. ユーザーがまだ認証されていない場合、ブラウザはユーザーをリダイレクトして認証完了を促します。

  3. 認証後、次の項目を表示した同意画面がユーザーに対して表示されます。

    • アプリケーションの名前

    • アプリケーションが使用のための同意を求めるアクセス範囲

  4. ユーザーは同意プロセスをキャンセルすることができます。同意すると、アプリケーションはそのユーザーの持つアクセス許可に基づいてアクセス処理を進めます。

デバイス認可付与

このフローは、ブラウザの有無にかかわらず、デバイスで実行されるアプリケーションで使用できます。アプリケーションがフローを開始すると、アプリケーションは、フローの後半でユーザーが確認する必要がある URL とユーザーコードを表示します。フローを開始するアプリケーションがユーザーが同意したデバイスとは異なるデバイスで実行されている場合に備えて、このユーザーコードが必要となります。このコードにより、ユーザーが他のデバイスで開始したフローに同意していることを保証します。

  1. ブラウザを持つデバイスからフローが開始されると、ブラウザウィンドウが開きます。フローがブラウザを持たないデバイスで開始された場合、ユーザーは別のデバイスでブラウザを開き、アプリケーションが提示した URL に移動する必要があります。

  2. いずれの場合も、ユーザーが認証されていない場合、ブラウザはユーザーをリダイレクトして認証完了を促します。

  3. 認証後、次の項目を表示した同意画面がユーザーに対して表示されます。

    • アプリケーションの名前

    • アプリケーションが使用のための同意を求めるアクセス範囲

    • アプリケーションがユーザーに提示したユーザーコード

  4. ユーザーは同意プロセスをキャンセルすることができます。同意すると、アプリケーションはそのユーザーの持つアクセス許可に基づいてアクセス処理を進めます。

アクセススコープ

スコープは、OAuth 2.0 フローを介してアクセスできるサービスへのアクセスを定義します。スコープは、リソースサーバーとも呼ばれるサービスが、アクションやサービスリソースに関連する権限をグループ化する方法であり、OAuth 2.0 クライアントがリクエストできる操作を大まかに指定します。OAuth 2.0 クライアントが IAM Identity Center OIDC サービスに登録すると、クライアントは意図されるアクションを宣言するスコープを指定します。これに対してユーザーは同意する必要があります。

OAuth 2.0 クライアントは、「OAuth 2.0 (RFC6749)」のセクション 3.3 で定義されている scope 値を使用して、アクセストークンにリクエストされるアクセス権限を指定します。クライアントがアクセストークンをリクエストする際には、最大 25 件のスコープを指定できます。PKCE またはデバイス認可付与フローで認証コード付与中にユーザーが同意すると、IAM Identity Center は返されるアクセストークンにスコープをエンコードします。

AWS は、サポートされている AWS のサービスについて IAM Identity Center にスコープを追加します。次の表に、パブリッククライアントを登録する際に IAM Identity Center OIDC サービスがサポートするスコープを示します。

パブリッククライアントの登録時に IAM Identity Center OIDC サービスがサポートするアクセススコープ

スコープ 説明 がサポートするサービス
sso:account:access IAM Identity Center が管理するアカウントとアクセス権限セットにアクセスします。 IAM アイデンティティセンター
codewhisperer:analysis Amazon Q Developer コード分析へのアクセスを有効にします。 AWS ビルダー ID と IAM Identity Center
codewhisperer:completions Amazon Q インラインコードの提案へのアクセスを有効にします。 AWS ビルダー ID と IAM Identity Center
codewhisperer:conversations Amazon Q チャットへのアクセスを有効にします。 AWS ビルダー ID と IAM Identity Center
codewhisperer:taskassist Amazon Q Developer Agent for Software Development へのアクセスを有効にします。 AWS ビルダー ID と IAM Identity Center
codewhisperer:transformations Amazon Q Developer Agent for Code Transformation へのアクセスを有効にします。 AWS ビルダー ID と IAM Identity Center
codecatalyst:read_write Amazon CodeCatalyst リソースの読み取りと書き込みが可能なため、既存のすべてのリソースにアクセスできます。 AWS ビルダー ID と IAM Identity Center