
【OAuth2.0 JWT ベアラーフロー】SalesforceのAPIをPostmanからコールする ②準備編
はじめに
※ この記事は ①導入編 から続いています。
まず最初に、この記事の前提を2点記載します。
1.TRAILHEADのハンズオン組織など、読者様ご自身で利用可能な組織があること。
2.読者様がWindowsで作業されていること(Windows前提で記載します)。
次に注意点を記載いたします。この記事では、手軽に実行できることに重点を置いてますので、セキュリティ面での考慮等、必要な検討については読者様の責任で実施をお願いいたします。
それでは進めていきましょー!
1.opensslのインストール
自己署名証明書や秘密鍵を作成する為に、opensslというツールを利用します。Windows用のopensslを以下サイトから取得してください。
最新のv3.0.7をインストールしたいところですが、過去に脆弱性などが問題となりましたので(現時点では修正されているようです)、「Win64OpenSSL v1.1.1q Light」をダウンロードしてインストールすることをお勧めします。
※ 記載の内容は2023年1月時点のものです。
インストール後は、コマンドプロンプトで「openssl」とタイプして実行してみてください。 「Openssl>」という表示がでていればOKですが、表示されない場合はシステム環境変数のPathにopensslのbinフォルダのパスを追加してください。
2.自己署名証明書とそれに対応する秘密鍵の作成
以下のhelpページ記載の通りに自己署名証明書と秘密鍵を作成します。
Create a Private Key and Self-Signed Digital Certificate
手順は以下の①~⑥です。
①これから作成する鍵ファイルを保管する任意のパスのフォルダを作成します。
②コマンドプロンプトを立ち上げて、①で作成したフォルダに移動します(仮にパスがC:\tempだとします)
cd C:\temp
③以下のコマンドを実行します。
openssl genrsa -des3 -passout pass:SomePassword -out server.pass.key 2048
実行した結果として、server.pass.keyファイルが作成されます。 コマンドの中の「SomePassword」には、任意のパスワード文字列を設定してください。
④以下のコマンドを実行します。
openssl rsa -passin pass:SomePassword -in server.pass.key -out server.key
実行した結果として、server.keyファイルが作成されます。
⑤以下のコマンドを実行します。
openssl req -new -key server.key -out server.csr
Country Nameなど複数聞かれますので、読者様の所属する企業の情報を入力してください。 検証する為だけであれば適当に入力しても問題ないです。 実行した結果として、server.csrファイルが作成されます。
⑥以下のコマンドを実行します。
openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt
実行した結果としてserver.crtファイルが作成されます。 -daysオプションにある365は、有効期限を365日にするという意味になります。 有効期限を延ばす場合には調整してください。
これ以降で使うファイルは以下の2つです。
自己署名証明書:server.crt
秘密鍵:server.key
3.Salesforceで接続アプリケーションを作成
Salesforce組織にログインし、左メニュー「アプリケーションマネージャ」を開き、右側の「新規接続アプリケーション」ボタンをクリックしてください。

「新規接続アプリケーション」の入力画面で、必須項目を埋めていきます。
①接続アプリケーション名:任意の名称を入力してください。
②API参照名:任意の名称を入力してください。
③取引先責任者メール:Salesforceからの通知などが送信される宛先です。システム管理者ユーザ等を設定してください。

④OAuth 設定の有効化:チェックを入れてください。
⑤コールバック URL:使用しないので適当なURLを入れてください。
⑥デジタル署名を使用:チェックを入れてください。
⑦「ファイルを選択」ボタン:⑥にチェックを入れると表示されます。2で作成した自己署名証明書「server.crt」を選択してください。
⑧選択した OAuth 範囲:認可で与える権限を設定します。ここでは「APIを使用してユーザデータを管理(api)」「いつでも要求を実行(refresh_token, offline_access)」「フルアクセス(full)」を選択します。

ページ下部までスクロールして「保存」ボタンをクリックします。

「次へ」ボタンをクリックします。

「コンシューマの詳細を管理」ボタンをクリックします。

「コンシューマ鍵」はコピーしておいてください。③実行編の「2.JWT作成」②issの設定で使用します。

「Manage」ボタンを押してください。
※ 画面を閉じてしまった場合は、「設定」→左メニューの「アプリケーションマネージャ」の一覧から対象の接続アプリケーション右の▼から「Manage」を選んでください。

「ポリシーを編集」をクリックします。

「許可されているユーザ」で「管理者が承認したユーザは事前承認済み」を選択します。
アラートが表示されますが「OK」をクリックしてそのままページ下部の「保存」ボタンをクリックします。

ページ下部付近の「プロファイル」にある「プロファイルを管理する」ボタンをクリックし、遷移した先のページで、APIで認証させるユーザが所属するプロファイルを選択します。 ここでは「システム管理者」プロファイルを選択していますが、実際にはAPI実行用のプロファイルを作成するなど検討してください。

4.Postman使用の準備
Postmanの公式サイトでWindows用のアプリをダウンロードしてインストールします。
※ ブラウザ版のものもありますが、今回はアプリで実行します。読者様はお好みで選んでください。
以下の画面が開けていれば準備としてはOKです。

5.SalesforceでREST API作成
予め適当な取引先のレコードを作成します。

取引先の1レコードを取得するだけのREST APIを作成します。

@RestResource(urlMapping='/MyRestApi/*')
global with sharing class MyRestApi {
@HttpPost
global static Account doPost() {
RestRequest req = RestContext.request;
RestResponse res = RestContext.response;
Account acc = [SELECT Id, Name, AccountNumber, Site, NumberOfEmployees, AnnualRevenue FROM Account where Id = '※ 任意の取引先のSalesforce Idを設定する'];
return acc;
}
}
ここまでで準備が完了しましたので、いよいよ実行していきます!
もう少しだけお付き合いくださいませ。
※ ③実行編に続きます。
執筆者プロフィール:倉田 芳裕
SHIFTに入社したのは2021年10月。
開発経験15年以上(Salesforceに限れば3年以上)。
どちらかと言うと技術が好き。 圧倒的な量をこなすことは絶対的な強みに繋がると信じていて、Salesforceの組織を300以上触りたいと考えている。
仕事と関係ないところでは、諸事情によりオムライスやパスタなどを1万個以上作ったことがあり、料理の腕はセミプロ級程度はある(はず)。
最近のマイブームは、寝る直前にラノベ(リゼロ、86など)を読むこと。
チキン南蛮をこよなく愛しているが、食べた後の胃もたれが年々ひどくなっているのが悩み。
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/