組織にインストールされていないSalesforceの接続アプリケーションを使うときの注意点
こんにちは!
株式会社Phone AppliのSalesforceプロダクトチームの小林です。
Salesforceプラットフォーム上でサービスやアプリを作っていると、様々な疑問や課題にぶつかります。
今回は、Salesforceと外部システムを繋げるために欠かせない「接続アプリケーション」についてぶち当たった壁について書いていきます。
弊社でも、接続アプリケーションを使って、外部サーバやアプリと連携したシステムを開発しています。
その中で、PhoneAppli for Salesforceのパッケージに含まれていない(パッケージ環境には作成している)接続アプリケーションを利用していることで、接続アプリケーションのポリシー設定が反映されない問題が浮上しました。
今回は、組織にインストールされていない接続アプリケーションを使う際の注意点についてまとめていきます。
接続アプリケーションとは?
まず接続アプリケーションとは何か見ていきましょう。
Salesforceのヘルプには以下のような記載があります。
接続アプリケーションは、API や標準プロトコル (SAML、OAuth、OpenID Connect など) を使用して、外部アプリケーションを Salesforce に統合できるようにするフレームワークです。
接続アプリケーションではこうしたプロトコルを使用して、外部アプリケーションの認証、承認、シングルサインオン (SSO) の提供を行います。
Salesforce に統合された外部アプリケーションは、カスタマーサクセスプラットフォームをはじめとするプラットフォームやデバイス、SaaS サブスクリプションで実行できます。
たとえば、あなたが Salesforce モバイルアプリケーションにログインして Salesforce 組織のデータを参照している場合も、接続アプリケーションを使用しています。
はい、わかりづらいですね〜!
要するに、外部システムがSalesforce組織と通信したりするときに必要な認証機能を提供してくれています。
Salesforceはセキュリティの設定などが組織ごとに柔軟にできます。
基本的に外部からのアクセスは禁止されているのですが、接続アプリケーションを利用することでアクセスを可能にします。
例えば、組織やプロファイルでIP制限をかけていたりすると、社内ネットワークに絞ったアクセスにすることができます。
それはそれで便利なのですが、その制限のせいでモバイルのネットワーク(docomo、au、Softbankとかの回線)からは組織の情報にアクセスできなくなります。
すると、外出の多いセールスメンバーがSalesforceの取引先の情報を確認したいと思っても、スマートフォンなどからアクセスすることができなくなります。
そこで登場するのが接続アプリケーションというわけです。
接続アプリケーションを利用することで、「このアプリケーション(接続アプリケーションで認証済)からアクセスするときは特別にIP制限を無視していいよ!」という設定をすることができます。
例えば、Salesforceが提供しているアプリ(※以下のアイコンのアプリ)からはモバイルのネットワークを使っていてもアクセスできない、ということが起こったことはないですよね?
これは、Salesforceの各組織にデフォルトでインストールされている接続アプリケーション(「Salesforce for iOS」「Salesforce for Android」という接続アプリケーションが組織にインストールされています)を利用して認証しているからなのです。
組織にインストールされていない接続アプリケーションを使うときの注意点
この接続アプリケーションですが、実は組織にインストールされていないアプリケーションでも、定義されている「コンシューマ鍵」「コンシューマの秘密」を知っていれば利用することができます。
どういうことかというと、弊社の本番環境で作成した接続アプリケーションを今これを読んでくださっているあなたの組織でも定義された情報を知りさえすれば、利用することができるということです。
この仕組みがあることによって、自社製品や個人的に作ったアプリケーションの認証に自分の組織で定義した接続アプリケーションを使っても、どこの組織のユーザでも使えるということになります。
一見、便利に見える仕組みなのですが、ここに1つ落とし穴があります。
それは、組織にインストールされていない接続アプリケーションを使うと、ポリシーの設定が反映されないということです。
ポリシーの設定の中には、接続アプリケーションの説明の中で触れたIP制限の緩和についての設定もあります。
このポリシーが反映されないことによって、組織でIP制限をかけていた場合に、IP制限が適用されてしまい、認証することができなくなってしまいます。
先ほどの例だと、弊社で作った接続アプリケーションを使った認証をあなたが利用中の組織でできなくなるということです。
弊社のAppExchangeにリリースしているアプリであるPhoneAppli for Salesforceと連携しているiOSアプリPAONE(着信表示、名刺登録ができるアプリ)は、パッケージ環境で作成した接続アプリケーションを使って認証機能を実装していました。
そのため、IP制限をかけている組織のお客様が認証をしようとすると、IP制限に引っ掛かり、認証できない、という事象が発生してしまったのです。
これから接続アプリケーションを使って認証機能を実装しようとしている方は、同じミスをしないようにお気をつけください…!
Salesforceはかなり奥が深いプラットフォームなので、まだまだ知らないことがたくさんありますが、これからも日々学んでいけたらと思います。
それでは、最後まで読んでくださって、ありがとうございました!