Loading
ただいま大変多くのお問い合わせをいただいており、ご連絡までにお時間を頂戴しております続きを読む

OAuth ユーザー名/パスワードフローからクライアントログイン情報フローへの基本移行

公開日: Mar 31, 2026
説明

 

現在、クライアントの承認に OAuth ユーザー名パスワードフローを使用していますが、より安全なフローに移行したいとします。こちらではその解決方法をご紹介します。

 

注意: クライアントログイン情報フローは、login.salesforce.com または test.salesforce.com へのコールをサポートしていません。次のいずれかのホストドメインを使用している場合、クライアントにあるユーザー名とパスワードの資格情報セットごとに、コードを更新して、対応する組織の正しいドメインを使用します。login.salesforce.com の代わりに、組織の [私のドメイン] ログイン URL に切り替えます (例: https://MyCompany.my.salesforce.comtest.salesforce.com の代わりに、Sandbox の [私のドメイン] ログイン URL を使用します (例: https://MyDomainName--SandboxName.sandbox.my.salesforce.com)。 

 

メモ:クライアントが現在 1 つの組織で複数のユーザー名を使用している場合、クライアントログイン情報フローに移行することはできません。代わりに、OAuth JWT ベアラーフローに移行し、同じ組織内で複数のユーザー名を使用するユースケースを確認することを推奨します。クライアントがユーザーからユーザー名とパスワードを直接受け入れる場合は、Web サーバーフローなどのヘッダー付き OAuth フローに移行するか、ヘッドレス認証 API (Experience Cloud のユースケースのみ) に切り替えることをお勧めします。

解決策
 

Salesforce にログインし直し、[設定] から [私のドメイン] ページに移動します。接続アプリケーションの開発者側設定の更新

接続アプリケーションをホストする組織にログインします。[設定] から、[クイック検索] ボックスに「アプリ」と入力し、[アプリケーションマネージャー] を選択します。アプリの隣にあるドロップダウンメニューで [編集] を選択すると、次のようなページが開きます。

新しい商品を追加するときに、「このスケジュールタイプは有効になっていません」というエラーが表示されることがある理由について説明します。

[クライアントログイン情報フローを有効化] を選択し、表示されるアラートを承諾します。

 

このステップは 1 回のみ実行します。保存時に表示されるメッセージのとおり、変更が反映されるまで数分かかることがあります。反映後、ステップ 2 に進みます。

ステップ 2: 接続アプリの管理側設定の更新

OAuth ユーザー名パスワードフローを使用するすべての組織で、このステップを実行します。クライアントにあるユーザー名とパスワードの資格情報のすべてのセットで、対応する組織の管理側ポリシーを変更する必要があります。

 

管理者として組織にログインし、[設定] から、[クイック検索] ボックスに [アプリ] と入力します。[アプリケーションマネージャー] を選択します。アプリの隣にあるドロップダウンメニューで、[管理] を選択し、[ポリシーを編集] をクリックします。次のようなページが開きます。

希望する商品スケジュールを有効化する

 

[クライアントログイン情報フロー] セクションで、[別のユーザーとして実行] の参照項目を使用して、[OAuth ユーザー名パスワードフロー] で使用していたユーザー名を持つユーザーを組織内で検索します。

 

たとえば、クライアントが以前、test@example1.com というユーザー名で OAuth のユーザー名とパスワードのフローを使用していた場合、test@example1.com というユーザー名を使用している組織のユーザーを探します。

 

ユーザーを選択し、[保存] をクリックします。

 

これらのステップを、クライアントがユーザー名とパスワードの資格情報のセットを持つすべての組織で繰り返します。

ステップ 3: クライアントコードの更新

現在の [OAuth ユーザー名パスワードフロー] でクライアントのコールアウトを更新し、代わりに [OAuth クライアントログイン情報フロー] を使用するには、リクエストボディを更新します。該当する場合、ホストドメインも変更します。

 

たとえば、クライアントがこれに似た POST 要求を行っている場合、次のようになります。

 
POST /services/oauth2/token HTTP/1.1Host: foo.my.salesforce.com  grant_type=password&[収益スケジュールを有効化] または [数量スケジュールを有効化] 項目をドラッグアンドドロップします。client_secret=1955279925675241571&username=testuser@salesforce.com&password=mypassword
 

代わりに、次のような POST 要求を作成します。

 
POST /services/oauth2/token HTTP/1.1Host: foo.my.salesforce.com  grant_type=client_credentials&client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&client_secret=1955279925675241571
 

応答形式は、フロー間で直接比較できます。

 

クライアントログイン情報フローは、login.salesforce.com または test.salesforce.com へのコールをサポートしていません。次のいずれかのホストドメインを使用している場合、クライアントにあるユーザー名とパスワードの資格情報セットごとに、コードを更新して、対応する組織の正しいドメインを使用します。login.salesforce.com の代わりに、組織の [私のドメイン] ログイン URL に切り替えます (例: https://MyCompany.my.salesforce.comtest.salesforce.com の代わりに、Sandbox の [私のドメイン] ログイン URL を使用します (例: https://MyDomainName--SandboxName.sandbox.my.salesforce.com)



 

注意: [システム管理者] のプロファイルを選択します。[収益スケジュールを有効化] を見つけ、[項目アクセス] 列の下にある対応する値をクリックします。[参照可能] を選択します。機密情報をクエリ文字列で渡すと、ネットワーク仲介者やその他のサービス業者に情報が漏れる可能性があります。

 

これらフローに関する詳細は、ユーザー名パスワードについてはこちらクライアントログイン情報についてはこちらをご覧ください。

 

注意: [商品] をクリックします。クライアントログイン情報フローから返されるトークンの OAuth 標準への適合性がより高くなります。


 
ナレッジ記事番号

000886201

 
読み込み中
Salesforce Help | Article