Loading
ユーザーの識別およびアクセス権の管理
目次
絞り込み条件を選択

          結果がありません
          結果がありません
          検索のヒントをいくつかご紹介します

          キーワードの入力ミスがないか確認する。
          より一般的な検索語を使用する。
          絞り込み条件を減らして、検索範囲を広げる。

          Salesforce ヘルプ全体を検索
          Proof Key for Code Exchange (PKCE) 拡張

          Proof Key for Code Exchange (PKCE) 拡張

          OAuth および認証プロバイダー実装のセキュリティを強化するには、OAuth 2.0 Proof Key for Code Exchange (PKCE) 拡張を使用します。PKCE は、組織全体で要求することも、特定の接続アプリケーションで要求することも、サポートされる認証プロバイダーで自動的に有効化することもできます。

          必要なエディション

          使用可能なエディション: すべてのエディション

          OAuth 認証コードフローおよびその派生フロー中に PKCE 拡張機能を使用することで、フローを開始するクライアントとフローを完了するクライアントが一致するようになります。これらのフロー中にアプリケーションが Salesforce に認証コードを要求し、アクセストークンと交換します。従来どおり、アプリケーションは接続アプリケーションのコンシューマーの秘密を含めてトークン要求を保護できます。コンシューマーの秘密は、アプリケーションと Salesforce のみが知っている情報であるため、Salesforce トークンエンドポイントにアクセスするためのパスワードとして機能します。攻撃者が認証コードへのアクセス権を何らかの形で取得できたとしても、コンシューマーの秘密がない限り、その認証コードを使用してアクセストークンを取得することはできません。

          ただし、モバイルアプリケーションや単一ページアプリケーションなどの公開クライアントでは、コンシューマーの秘密の機密を保持できません。従来のクライアント-サーバーアーキテクチャを備えた非公開クライアントアプリケーションとは異なり、公開クライアントにはコンシューマーの秘密を保存できる非公開バックエンドはありません。公開クライアントがトークン要求でコンシューマーの秘密を送信すると、その秘密が漏洩するリスクがあります。そのため、公開クライアントのトークン要求にコンシューマーの秘密を含めることはお勧めしません。

          コンシューマーの秘密がないと、アプリケーションは、認証コードを傍受してアクセストークンと交換しようとする攻撃者に対して脆弱性になります。PKCE では、アプリケーションと Salesforce のみが理解できる一連のハッシュされたパラメーターを使用して、コンシューマーの秘密のギャップを埋めることができます。PKCE を実装するフロー中に、code_verifier パラメーターと呼ばれるランダムな文字列がアプリケーションによって作成されます。次に、この値が SHA-256 アルゴリズムでハッシュされます。このハッシュ値は code_challenge パラメータです。SHA-256 ハッシュの主要な概念は、一方向にのみ機能することです。SHA-256 アルゴリズムを実行すると、code_verifierからcode_challengeを取得できます。ただし、逆方向に実行してcode_challengeからcode_verifierを取得することはできません。

          一方向性関数という概念は、PKCE が機能する理由の重要な役割を果たします。アプリケーションは、認証コードの最初の要求を送信するときに、ハッシュされた code_challenge パラメーターを含めます。次に、アクセストークンを要求するときに、code_verifier パラメーターを含めます。これで Salesforce に両方のパラメーターが渡り、code_verifier 値で SHA-256 アルゴリズムを実行して code_challenge と比較できるようになります。値が一致する場合、同じアプリケーションで認証要求とトークン要求が送信されたことを Salesforce で確認できます。攻撃者が認証コードを持っていても、アプリケーションと Salesforce のみが知っている PKCE パラメーターがないため、アクセストークンと交換できません。

          公開クライアントでは常に PKCE を実装することをお勧めします。非公開クライアントの場合、PKCE を実装して、トークン要求にコンシューマーの秘密を含めることをお勧めします。

          Salesforce で認証コードフローのバリエーションを作成するときに code_challenge および code_verifier パラメーターを含めると、必要に応じて PKCE を実装できます。次のフローで PKCE がサポートされています。

          PKCE が適用されるように、次のセキュリティ対策を講じることをお勧めします。

          PKCE パラメーターの生成

          PKCE ジェネレーターエンドポイントを使用して、認証コードフローのバリエーションに実装できる code_challenge および code_verifier パラメーターをすばやく生成します。

          1. OAuth エンドポイントのクロスオリジンリソース共有 (CORS) を有効化します。これにより、/services/oauth2/pkce/generator エンドポイントの CORS が自動的に有効になります。
          2. code_challenge および code_verifier パラメータを生成するには、[私のドメイン] のログイン URL または Experience Cloud サイトの URL で HTTP GET 要求を /services/oauth2/pkce/generator エンドポイントに送信します。この要求には、ヘッダーまたは本文パラメーターを含めないでください。
            [私のドメイン] のログイン URL を使用する要求の例を次に示します。
            GET /services/oauth2/pkce/generator? HTTP 1.1
            Host: MyDomainName.my.site.salesforce.com
            Experience Cloud サイトの URL を使用する要求の例を次に示します。
            GET /services/oauth2/pkce/generator? HTTP 1.1
            Host: MyDomainName.my.site.com
            次の PKCE パラメーターが返されます。
            パラメーター説明
            code_challenge_method code_verifier から code_challenge を計算するために使用される方法。Salesforce は、SHA256 アルゴリズムを使用して code_verifier から code_challenge を計算する S256 メソッドを使用します。詳細は、「RFC 7636: Proof Key for Code Exchange by OAuth Public Clients (RFC 7636: OAuth 公開クライアントによるコード交換の証明鍵)」のセクション 4.2 を参照してください。
            code_challenge

            トークン要求で code_verifier 値の SHA256 ハッシュ値を指定します。値は、「RFC 4648: The Base16, Base32, and Base64 Data Encodings (RFC 4648: Base16、Base32、および Base64 データエンコード)」のセクション 5 で定義されているように Base-64 URL エンコードされます。

            認証フローを設定するときに、この値を認証要求に含めます。

            code_verifier

            code 値の推測を困難にするために、高エントロピーの 128 バイトのランダムなデータを指定します。このパラメーターを設定すると、認証コードの傍受攻撃を防ぐのに役立ちます。値は、「RFC 4648: The Base16, Base32, and Base64 Data Encodings (RFC 4648: Base16、Base32、および Base64 データエンコード)」のセクション 5 で定義されているように Base-64 URL エンコードされます。

            認証フローを設定するときに、この値をトークン要求に含めます。

            応答の例を次に示します。
            {
            “code_challenge_method”:“S256”
            “code_challenge”:“JB7nT*************”
            “code_verifier”:“GkLvw**************”
            }

          Web サーバーフローハイブリッド Web サーバーフロー、および認証コードとログイン情報フローのバリエーションを設定するときに、指示に従って code_challengecode_verifier パラメーターを要求に含めます。

           
          読み込み中
          Salesforce Help | Article