経緯
SalesforceへAPIアクセスするための認証方式として 「OAuth 2.0 ユーザ名パスワードフロー」を使用しており、最近(2023年7月)作成したDE組織で従来の手順で接続アプリケーション作成、認証しようとしたところ、エラーとなってしまいました。
結論としては、Summer '23のリリース以降はデフォルトでOAuth 2.0 ユーザ名パスワードフローがブロック、つまり利用できないように変更になっていることが原因でした。
確認と対処
エラーになる状態
新規DE組織を作成し、接続アプリケーションを作成、下記curlコマンドでエラーを確認できます。
curl https://login.salesforce.com/services/oauth2/token \
-d 'grant_type=password' \
-d 'username=username' \
-d 'password=password' \
-d 'client_id=3MV....' \
-d 'client_secret=98ABCDEF....'
{"error":"invalid_grant","error_description":"authentication failure"}
設定→ユーザ→ログイン履歴を確認すると「ユーザ名-パスワードフローが無効になっています」と記録されています。
設定を変更
設定→OAuth および OpenID Connect 設定を開き、[OAuth ユーザ名パスワードフローを許可] をオンに変更します。
再度確認
最初にエラーになったcurlコマンドを実行すると成功しました。
{"access_token":"00D....!.......","instance_url":"https://xxx-dev-ed.develop.my.salesforce.com","id":"https://login.salesforce.com/id/00D.../005...","token_type":"Bearer","issued_at":"1690...","signature":"...."}
まとめ
下記のリリースページに記載の通りでしたが、チェックしておらず解決するために少し時間を使ってしまいました。
新しい組織でデフォルトでブロックされる OAuth 2.0 ユーザ名パスワードフロー
また、ユーザ名パスワードフローは非推奨と読み取れそうです。
本ポスト内容は暫定対応とし、別の方法へ移行を検討したほうが良さそうです。