従来の指定ログイン情報について
従来の指定ログイン情報では、1 つの定義にコールアウトエンドポイントの URL と必要な認証パラメーターを指定します。従来の指定ログイン情報は廃止され、今後のリリースでサポートされなくなります。
必要なエディション
| 使用可能なインターフェース: Salesforce Classic (一部の組織で使用可能) および Lightning Experience の両方 |
| 使用可能なエディション: すべてのエディション |
認証済みのコールアウトの設定を簡略化するには、コールアウトエンドポイントとして従来の指定ログイン情報を指定します。代わりに、URL をコールアウトエンドポイントとして指定する場合は、その URL を組織のリモートサイト設定に登録し、認証を自分で処理する必要があります。たとえば、Apex コールアウトの場合、コードで認証を処理しますが、セキュリティが低下し、特に OAuth 実装では複雑になる可能性があります。
コールアウトで従来の指定ログイン情報をコールアウトエンドポイントとして指定するすべての認証が Salesforce によって管理されるため、これらを行う必要はありません。従来の指定ログイン情報で定義されたサイトについては、外部サイトへのコールアウトに必要なリモートサイト設定もスキップできます。
従来の指定ログイン情報は、次の種別のコールアウト定義でサポートされています。
- Apex コールアウト
- 次の外部データソース種別
- Salesforce Connect: OData 2.0
- Salesforce Connect: OData 4.0
- Salesforce Connect: カスタム (Apex Connector Framework で開発)
- Salesforce Connect: Amazon DynamoDB
- 外部サービス
従来の指定ログイン情報には、プライベート接続を介したコールアウトの転送に使用できる OutboundNetworkConnection 項目が含まれます。エンドポイント URL と認証をコールアウト定義から切り離すことで、従来の指定ログイン情報でコールアウトを簡単に管理できます。たとえば、エンドポイント URL が変更された場合も、従来の指定ログイン情報を更新するだけです。従来の指定ログイン情報を参照するすべてのコールアウトは、引き続き機能します。
複数の組織がある場合、各組織に同じ名前でエンドポイント URL が異なる従来の指定ログイン情報を作成できます。次に、これらの従来の指定ログイン情報の共有名を参照する 1 つのコールアウト定義をパッケージ化してすべての組織にリリースできます。たとえば、各組織の従来の指定ログイン情報に異なるエンドポイント URL を指定して、開発環境と本番環境の違いに対応することができます。Apex コールアウトでこれらの従来の指定ログイン情報の共有名が指定されている場合、コールアウトを定義する Apex クラスをパッケージ化して、プログラムで環境をチェックすることなく、すべての組織にリリースできます。
従来の指定ログイン情報の認証プロトコルには、基本的なパスワード認証である OAuth 2.0、JWT、JWT トークンの交換、および AWS 署名バージョン 4 が含まれます。 従来の各指定ログイン情報は、組織の指定ユーザーを使用するように設定することも、ユーザーごとの認証を使用するように設定することもできます。指定ユーザーでは同じログイン情報または認証設定を組織全体に適用しますが、ユーザーごとの認証では個々のユーザーレベルでアクセスコントロールを提供します。
コールアウト定義から従来の指定ログイン情報を参照するには、従来の指定ログイン情報 URL を使用します。従来の指定ログイン情報 URL にはスキーム callout:、従来の指定ログイン情報の名前、必要に応じて追加されたパスが含まれます。例: callout:My_Named_Credential/some_path。
クエリ文字列を従来の指定ログイン情報 URL に追加できます。従来の指定ログイン情報 URL とクエリ文字列の間の区切り文字として疑問符 (?) を使用します。例: callout:My_Named_Credential/some_path?format=json。
医療データやクレジットカードデータなどの機密情報を送信する場合は、認証済みの従来の指定ログイン情報が必要です。機密データ送信のセキュリティを強化するために、顧客が独自の証明書を提供することをお勧めします。
HttpRequest req = new HttpRequest();
req.setEndpoint('callout:My_Named_Credential/some_path');
req.setMethod('GET');
Http http = new Http();
HTTPResponse res = http.send(req);
System.debug(res.getBody());
参照される従来の指定ログイン情報では、エンドポイント URL と認証設定が指定されます。
パスワード認証ではなく OAuth を使用する場合、Apex コードに変更はありません。従来の指定ログイン情報の認証設定は異なります。これは組織で定義されている認証プロバイダーを参照するためです。
次に、従来の指定ログイン情報を使用しない Apex コードがどうなるかを見てみましょう。基本的なパスワード認証を使用していても、コードの認証処理はより複雑になっています。OAuth のコーディングはさらに複雑になるため、従来の指定ログイン情報には最適な使用事例です。
HttpRequest req = new HttpRequest();
req.setEndpoint('https://my_endpoint.example.com/some_path');
req.setMethod('GET');
// Because we didn't set the endpoint as a legacy named credential,
// our code has to specify:
// - The required username and password to access the endpoint
// - The header and header information
String username = 'myname';
String password = 'mypwd';
Blob headerValue = Blob.valueOf(username + ':' + password);
String authorizationHeader = 'BASIC ' +
EncodingUtil.base64Encode(headerValue);
req.setHeader('Authorization', authorizationHeader);
// Create a new http object to send the request object
// A response object is generated as a result of the request
Http http = new Http();
HTTPResponse res = http.send(req);
System.debug(res.getBody());
- 従来の指定ログイン情報の定義
コールアウトエンドポイントの URL と必要な認証パラメーターを 1 つの定義内に指定する、従来の指定ログイン情報を作成します。従来の指定ログイン情報をコールアウトエンドポイントとして指定することで、Salesforce ですべての認証を処理できます。従来の指定ログイン情報で定義されたサイトについては、外部サイトへのコールアウトに必要なリモートサイト設定もスキップできます。 - 従来の指定ログイン情報の認証設定へのアクセス権の付与
ユーザーごとの認証を使用する従来の指定ログイン情報の場合、権限セットとプロファイルを使用してアクセス権をユーザーに付与します。このようにすると、外部システムにアクセスするためのユーザーの認証設定を自分で設定および管理できるようになります。
