CData Software Blog

クラウド連携のCData Software の技術ブログです。

Salesforce で「私のドメイン」を設定した場合の SOAP API の影響について:CData Salesforce Driver

f:id:sugimomoto:20210625160245p:plain

こんにちは。CData Software Japanリードエンジニアの杉本です。

Salesforce Winter'21 のリリースノートで、「私のドメイン」の設定が必須になり、Winter'22までに既存の環境は全部設定してください、という記載がありました。

SALESFORCE WINTER '21 リリースノート / ドメイン: [私のドメイン] の必須化、URL の短縮

それに伴い、弊社にもこの「私のドメイン」を設定した場合、どんな影響があるの?という問い合わせがありましたので、今回はこの影響ポイントについて解説したいと思います。

www.cdata.com

私のドメインとは?

まず、「私のドメイン」とは何かについて簡単に解説したいと思います。

https://help.salesforce.com/articleView?id=sf.domain_name_overview.htm&type=5

これは以下のようにSalesforce のアプリケーションURLやログインURLで任意のドメインを指定することができる機能です。

・アプリケーションURLの例

f:id:sugimomoto:20210625154937p:plain

・ログインURLの例

f:id:sugimomoto:20210625154942p:plain

アプリケーションURLはデフォルトではap6などのインスタンスのリージョンの場所によって、「ap6.lightning.force.com」といったようなURLが利用されますが、これを環境ごとに任意の値に切り替えることができます。(もちろん他のユーザーがすでに利用しているものは設定できません)

https://help.salesforce.com/articleView?id=000314281&language=ja&mode=1&type=1

ログイン URLも通常であれば、以下のようなユーザー共通のログイン URLとなりますが、これを個別のものに切り替えることができますし、またこの共通URLからログインできなくすることもできます。

https://login.salesforce.com/?locale=jp

そういった点では、セキュリティ周り含めて大事な機能であると言えます。

設定方法は、「設定」→「私のドメイン」に移動して、以下のような画面で実施できます。

f:id:sugimomoto:20210625154949p:plain

影響内容

それではCData Salesforce Driverでの影響について解説したいと思います。

まず、既存のCData Driverが接続されているSalesforceの環境に対して、「私のドメイン」を設定したからといって、接続できなくなるということはありません。

ただし一点だけ例外がありますので、それは後述します。

※「私のドメイン」設定時に一時的にメンテナンス状態になるので、その場合はもちろん接続できないことが想定されます。

CData Driver の接続アプローチ解説

影響が無い理由ですが、これは CData Driverが「SOAP API」を利用しているという点、そしてSOAP APIのログイン後に接続するべきURLを自動的に特定しているという点があげられるためです。

まずSOAP API としての「Login URL」ですが、これは「私のドメイン」の制限対象外となっています。

CData Driverの内部的には「https://login.salesforce.com/services/Soap/c/50.0(バージョンは利用しているDriverのバージョンにより異なります)」にリクエストを送り、ログイン・SessionIdを取得しています。

「私のドメインの設定」では以下のように「https://login.salesforce.com/」からのログインを防止する機能が提供されていますが、ポップアップに表示されている通りSOAP APIは対象外となっています。

f:id:sugimomoto:20210625154956p:plain

また、Login処理を行った後にSOAP APIをリクエストするためのアプリケーションURLについても、Login後のレスポンスに含まれている「metadataServerUrl」「serverUrl」を用いてリクエストを行うので、利用している側は特にどのドメインを利用しているのか?については意識することがありません。

<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Body>
        <loginResponse>
            <result>
                <metadataServerUrl>
                    https://cdatajapantest-dev-ed.my.salesforce.com/services/Soap/m/50.0/00D28000001G8Ox
                </metadataServerUrl>
                <passwordExpired>
                    false
                </passwordExpired>
                <sandbox>
                    false
                </sandbox>
                <serverUrl>
                    https://cdatajapantest-dev-ed.my.salesforce.com/services/Soap/c/50.0/00D28000001G8Ox
                </serverUrl>
                <sessionId>
                    XXXXXX
                </sessionId>
                <userId>
                    XXXXXX
                </userId>
                <userInfo>
                    <!-- 割愛 -->
                </userInfo>
            </result>
        </loginResponse>
    </Body>
</Envelope>

こういった点から「私のドメイン」の設定がCData Driverでの接続に影響を及ぼすことが無いというのがイメージいただけるかと思います。

ちなみにSOAP APIの Login URLに関しては、以下のリファレンスにある通り「私のドメイン」が適用された Login URLを利用することも可能です。

https://help.salesforce.com/articleView?id=000327833&type=1&mode=1

ですので、もし自社のネットワークレベルで「https://login.salesforce.com/」を遮断する、といったことを行っている場合は、接続プロパティの「LoginUrl」を利用することで「私のドメイン」が適用されたLogin Urlを利用することも可能です。

LoginUrl=https://cdatajapantest-dev-ed.my.salesforce.com/services/Soap/c/50.0;

cdn.cdata.com

OAuth接続の注意点

ここまで述べたように、基本的にSOAP APIでの接続上は「私のドメイン」の影響は想定されません。

しかしながら、前述した例外事項の一つとして、OAuthを用いた接続を行ったケースが考えられます。

以下のようにCData Driverの接続設定で「OAuth」接続を行いますと、

f:id:sugimomoto:20210625155003p:plain

以下のようにブラウザが立ち上がり、ログインが求められますが、URLを見て分かる通り「私のドメイン」が適用されたログインURLにはなりません。

f:id:sugimomoto:20210625155009p:plain

そのため、もし私のドメインの設定の「https://login.salesforce.com/ からのログインを防止」する機能を有効化していた場合、ログインおよび認可のプロセスが踏めなくなるので注意しましょう。

f:id:sugimomoto:20210625155014p:plain

回避策は、単純ですが事前にブラウザを立ち上げて対象のアプリケーションURLでログインしておくことです。

これでOAuthのプロセスでブラウザが立ち上がった時にログイン処理が不要になるため、このボトルネックを回避することができます。

おわりに

もし気になる点があれば、テクニカルサポートまでお気軽にお問い合わせください。

https://www.cdata.com/jp/support/submit.aspx