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 アクセスポータル内でアプリケーションの使用が許可されているユーザーに、フェデレーションシングルサインオンアクセスを提供します。
注記
IAM アイデンティティセンターは、SAML アプリケーションからの受信 SAML 認証リクエストの署名の検証をサポートしていません。
OAuth 2.0
OAuth 2.0 は、アプリケーションがパスワードを共有せずにユーザーデータに安全にアクセスして共有できるようにするプロトコルです。この機能により、アプリケーションによるリソースへのアクセスを、安全かつ標準化された方法でユーザーに許可できます。アクセスは、さまざまな OAuth 2.0 付与フローによって容易になります。
IAM アイデンティティセンターを使用すると、パブリッククライアントで実行されるアプリケーションは、ユーザーに代わってプログラムで AWS アカウントおよびサービスにアクセスするための一時的な認証情報を取得できます。パブリッククライアントは通常、ローカルでアプリケーションを実行するのに使用されるデスクトップ、ノートパソコン、またはその他のモバイルデバイスです。パブリッククライアントで実行される AWS アプリケーションの例としては、AWS Command Line Interface (AWS CLI)、AWS Toolkit、および AWS Software Development Kits (SDK) などがあります。これらのアプリケーションが認証情報を取得できるように、IAM アイデンティティセンターは次の OAuth 2.0 フローの一部をサポートしています。
注記
これらの許可タイプは、この機能をサポートする AWS のサービスでのみ使用できます。これらのサービスは、すべての AWS リージョンでこの許可タイプをサポートしていない場合があります。リージョンごとの違いについては、AWS のサービスの関連ドキュメントを参照してください。
OpenID Connect (OIDC) は、OAuth 2.0 フレームワークに基づく認証プロトコルです。OIDC は、認証に OAuth 2.0 を使用する方法を指定します。IAM アイデンティティセンター OIDC サービス API を介してアプリケーションは OAuth 2.0 クライアントを登録し、これらのフローのいずれかを使用して IAM アイデンティティセンターで保護された API へのアクセス許可を提供するアクセストークンを取得します。アプリケーションは、目的の API ユーザーを宣言するためのアクセススコープを指定します。IAM アイデンティティセンター管理者として ID ソースを設定した後、アプリケーションのエンドユーザーがまだサインインプロセスを完了していない場合は、サインインプロセスを完了する必要があります。その後、エンドユーザーは、アプリケーションが API コールを行うことに同意する必要があります。これらの API コールは、ユーザー自身の権限を使用して行われます。これに対して IAM アイデンティティセンターは、ユーザーが同意したアクセススコープを含むアクセストークンをアプリケーションに返します。
OAuth 2.0 許可フローの使用
OAuth 2.0 許可フローは、フローをサポートする AWS マネージドアプリケーションでのみ使用できます。OAuth 2.0 フローを使用するには、お使いの IAM アイデンティティセンターインスタンスと使用する AWS マネージドアプリケーション (サポートされている必要があります) を、単一の AWS リージョンにデプロイする必要があります。AWS マネージドアプリケーションのリージョンごとの可用性と、使用する IAM アイデンティティセンターのインスタンスについては、AWS のサービスのドキュメントを参照してください。
OAuth 2.0 フローを使用するアプリケーションを使用するには、エンドユーザーがアプリケーションの接続先 URL を入力してお使いの IAM アイデンティティセンターインスタンスに登録する必要があります。アプリケーションによっては、管理者が IAM アイデンティティセンターインスタンスの AWS アクセスポータル URL または発行者 URL をユーザーに提供する必要があります。これらの 2 つの設定は、IAM アイデンティティセンターコンソール
アプリケーションにサインインして同意するエンドユーザーエクスペリエンスの詳細は、そのアプリケーションが PKCE を使用した認可コード付与 と デバイス認可付与 のいずれを使用しているかどうかによって異なります。
PKCE を使用した認可コード付与
このフローは、ブラウザを持つデバイスで実行されるアプリケーションによって使用されます。
-
ブラウザウィンドウが開きます。
-
ユーザーがまだ認証されていない場合、ブラウザはユーザーをリダイレクトして認証完了を促します。
-
認証後、次の項目を表示した同意画面がユーザーに対して表示されます。
-
アプリケーションの名前
-
アプリケーションが使用のための同意を求めるアクセス範囲
-
-
ユーザーは同意プロセスをキャンセルすることができます。同意すると、アプリケーションはそのユーザーの持つアクセス許可に基づいてアクセス処理を進めます。
デバイス認可付与
このフローは、ブラウザの有無にかかわらず、デバイスで実行されるアプリケーションで使用できます。アプリケーションがフローを開始すると、アプリケーションは、フローの後半でユーザーが確認する必要がある URL とユーザーコードを表示します。フローを開始するアプリケーションがユーザーが同意したデバイスとは異なるデバイスで実行されている場合に備えて、このユーザーコードが必要となります。このコードにより、ユーザーが他のデバイスで開始したフローに同意していることを保証します。
注記
device.sso. を使用するクライアントがある場合は、コード交換 (PKCE) の証明キーを使用するように認可フローを更新する必要があります。IAM アイデンティティセンターでの MFA の詳細については、「AWS Command Line Interface ユーザーガイド」の「AWS CLI を使用した多要素認証」を参照してください。region.amazonaws.com
-
ブラウザを持つデバイスからフローが開始されると、ブラウザウィンドウが開きます。フローがブラウザを持たないデバイスで開始された場合、ユーザーは別のデバイスでブラウザを開き、アプリケーションが提示した URL に移動する必要があります。
-
いずれの場合も、ユーザーが認証されていない場合、ブラウザはユーザーをリダイレクトして認証完了を促します。
-
認証後、次の項目を表示した同意画面がユーザーに対して表示されます。
-
アプリケーションの名前
-
アプリケーションが使用のための同意を求めるアクセス範囲
-
アプリケーションがユーザーに提示したユーザーコード
-
-
ユーザーは同意プロセスをキャンセルすることができます。同意すると、アプリケーションはそのユーザーの持つアクセス許可に基づいてアクセス処理を進めます。
アクセススコープ
スコープは、OAuth 2.0 フローを介してアクセスできるサービスへのアクセスを定義します。スコープは、リソースサーバーとも呼ばれるサービスが、アクションやサービスリソースに関連する権限をグループ化する方法であり、OAuth 2.0 クライアントがリクエストできる操作を大まかに指定します。OAuth 2.0 クライアントが IAM アイデンティティセンター OIDC サービスに登録すると、クライアントは意図されるアクションを宣言するスコープを指定します。これに対してユーザーは同意する必要があります。
OAuth 2.0 クライアントは、「OAuth 2.0 (RFC6749)」のセクション 3.3scope 値を使用して、アクセストークンにリクエストされるアクセス権限を指定します。クライアントがアクセストークンをリクエストする際には、最大 25 件のスコープを指定できます。PKCE またはデバイス認可付与フローで認証コード付与中にユーザーが同意すると、IAM アイデンティティセンターは返されるアクセストークンにスコープをエンコードします。
AWS は、サポートされている AWS のサービスについて IAM アイデンティティセンターにスコープを追加します。次の表に、パブリッククライアントを登録する際に IAM アイデンティティセンター OIDC サービスがサポートするスコープを示します。
パブリッククライアントの登録時に IAM Identity Center OIDC サービスがサポートするアクセススコープ
| 範囲 | 説明 | がサポートするサービス |
|---|---|---|
sso:account:access |
IAM Identity Center が管理するアカウントとアクセス権限セットにアクセスします。 | IAM アイデンティティセンター |
codewhisperer:analysis |
Amazon Q Developer コード分析へのアクセスを有効にします。 | AWS ビルダー ID と IAM アイデンティティセンター |
codewhisperer:completions |
Amazon Q インラインコードの提案へのアクセスを有効にします。 | AWS ビルダー ID と IAM アイデンティティセンター |
codewhisperer:conversations |
Amazon Q チャットへのアクセスを有効にします。 | AWS ビルダー ID と IAM アイデンティティセンター |
codewhisperer:taskassist |
Amazon Q Developer Agent for Software Development へのアクセスを有効にします。 | AWS ビルダー ID と IAM アイデンティティセンター |
codewhisperer:transformations |
Amazon Q Developer Agent for Code Transformation へのアクセスを有効にします。 | AWS ビルダー ID と IAM アイデンティティセンター |
codecatalyst:read_write |
Amazon CodeCatalyst リソースの読み取りと書き込みが可能なため、既存のすべてのリソースにアクセスできます。 | AWS ビルダー ID と IAM アイデンティティセンター |
verified_access:application:connect |
の有効化AWS Verified Access | AWS Verified Access |
redshift:connect |
Amazon Redshift に接続する | Amazon Redshift |
datazone:domain:access |
DataZone ドメイン実行ロールにアクセスする | Amazon DataZone |
nosqlworkbench:datamodeladviser |
データモデルの作成と読み取り | NoSQL Workbench |
transform:read_write |
コード変換のために AWS 変換エージェントへのアクセスを有効にする | AWS Transform |