接続の確立
JDBC データソースの作成
Java アプリケーションから接続するJDBC データソースを作成できます。CData JDBC Driver for Salesforce に基づくJDBC データソースの作成は、3つの基本ステップで構成されます。
- ドライバーのJAR ファイルをクラスパスに追加します。JAR ファイルはインストールディレクトリの[lib]サブフォルダ内にあります。.lic ファイルはJAR ファイルと同じフォルダ内に配置される必要があることに注意してください。
- ドライバークラスを入力します。次に例を示します。
cdata.jdbc.salesforce.SalesforceDriver
- JDBC URL を入力します。次に例を示します。
jdbc:salesforce:AuthScheme=Basic;User=myUser;Password=myPassword;Security Token=myToken; or jdbc:cdata:salesforce:AuthScheme=Basic;User=myUser;Password=myPassword;Security Token=myToken;
上記の2つ目の形式は、同じURL 形式を使用しているドライバー間でアプリケーションに競合がある場合は、CData ドライバーを使用していることを確認するために常に使用できます。URL は "jdbc:salesforce:" または"jdbc:cdata:salesforce:" のいずれかから始まり、任意の接続プロパティの名前と値のペアをセミコロン区切りで入力します。
Salesforce への接続
デフォルトでは、本製品 は本番環境に接続します。Salesforce sandbox アカウントを使用するには、UseSandbox をtrue に設定し、User でsandbox ユーザーネームを指定してください。
Salesforce への認証
Salesforce は、ユーザー資格情報またはOAuth 標準による認証をサポートしています。
ユーザー資格情報
通常、ユーザー資格情報による認証では、セキュリティトークンを追加で使用する必要があります。セキュリティトークンは、Salesforce からのみ取得できます。セキュリティトークンを要求するには:- Salesforce.com の[私の設定]->[個人用]->[私のセキュリティトークンのリセット]を開きます。
- [セキュリティトークンのリセット]をクリックします。トークンがE メールで送られます。
- SecurityToken 接続プロパティでセキュリティトークンを入力するか、Password に追加します。
セキュリティトークンの使用を不要にするには:
- Salesforce にログインして、[設定]セクションの[クイック検索]ボックスにNetwork Access を入力します。
- IP アドレスを信頼できるIP アドレスのリストに追加します。
- AuthScheme:Basic。
- User:ユーザーのログインID。
- Password:ユーザーのパスワード。
- SecurityToken(オプション):Salesforce から取得したセキュリティトークン。
セキュリティトークンを使用せずに接続したい場合は、以下の手順でセキュリティトークンを無効にする必要があります。
- Salesforce にログインして、[設定]セクションの[クイック検索]ボックスにNetwork Access を入力します。
- IP アドレスを信頼できるIP アドレスのリストに追加します。
OAuth
Salesforce は埋め込みOAuth 認証情報を提供しており、デスクトップアプリケーション またはヘッドレスマシンからの接続を簡単にします。Web アプリケーションから接続するには、カスタムOAuth アプリケーションの作成 で説明するようにカスタムOAuth アプリケーションを作成する必要があります。すべての認証フローで、OAuth 経由で接続するにはAuthScheme をOAuth に設定する必要があります。
以下のサブセクションでは、利用可能なOAuth フローでのSalesforce への認証について詳しく説明します。 カスタムOAuth アプリケーションの作成についての情報と、すでに埋め込みOAuth 認証情報を持つ認証フローでもカスタムOAuth アプリケーションを作成したほうがよい場合の説明については、カスタムOAuth アプリケーションの作成 を参照してください。
Salesforce で利用可能な接続文字列プロパティの全リストは、Connection を参照してください。
デスクトップアプリケーション
CData は、デスクトップでの認証を簡略化する埋め込みOAuth アプリケーションを提供します。また、Salesforce コンソールで設定および登録するカスタムOAuth アプリケーションを介してデスクトップから認証することもできます。詳しくは、カスタムOAuth アプリケーションの作成 を参照してください。
接続する前に、次のプロパティを設定します。
- InitiateOAuth:GETANDREFRESH。InitiateOAuth を使えば、繰り返しOAuth の交換を行ったり、手動でOAuthAccessToken を設定する必要はなくなります。
- OAuthClientId(カスタムアプリケーションのみ):カスタムOAuth アプリケーションの登録時に割り当てられたクライアントID。
- OAuthClientSecret(カスタムアプリケーションのみ):カスタムOAuth アプリケーションの登録時に割り当てられたクライアントシークレット。
接続すると、本製品 はデフォルトブラウザでSalesforce のOAuth エンドポイントを開きます。ログインして、アプリケーションにアクセス許可を与えます。
以下のように本製品 がOAuth プロセスを完了します。
- コールバックURL からアクセストークンを取得します。
- 古いトークンの期限が切れたときは、新しいアクセストークンを取得します。
- OAuthSettingsLocation にOAuth 値を保存し、接続間で永続化します。
Web アプリケーション
Web 経由で認証する場合は、カスタムOAuth アプリケーションの作成 で説明するようにSalesforce にカスタムOAuth アプリケーションを作成および登録する必要があります。それから本製品 を使用してOAuth トークンの値を取得および管理します。このセクションでは、OAuth アクセストークンの取得方法、ドライバーにOAuth アクセストークンを自動的に更新させる方法、OAuth アクセストークンを手動で更新する方法について説明します。
OAuth アクセストークンの取得:
-
OAuthAccessToken を取得するには、次の接続プロパティを設定します。
- OAuthClientId:カスタムOAuth アプリケーション設定のクライアントId。
- OAuthClientSecret:カスタムOAuth アプリケーション設定のクライアントシークレット。
- ストアドプロシージャを呼び出し、OAuth 交換を完了します。
- GetOAuthAuthorizationUrl ストアドプロシージャを呼び出します。CallbackURL インプットをカスタムOAuth アプリケーション設定で指定したコールバックURL に設定します。必要に応じて、Scope パラメータを設定してカスタム権限をリクエストします。ストアドプロシージャがOAuth エンドポイントのURL を返します。
- ステップ1でストアドプロシージャが返したURL に移動します。ログインしてWeb アプリケーションを認可します。コールバックURL にリダイレクトされます。
- GetOAuthAccessToken ストアドプロシージャを呼び出します。AuthMode インプットをWEB に設定します。Verifier インプットを、コールバックURL のクエリ文字列のcode パラメータに設定します。必要に応じて、Scope パラメータを設定してカスタム権限をリクエストします。
アクセストークンとリフレッシュトークンの取得後、データに接続し、OAuth アクセストークンを自動または手動でリフレッシュすることが可能です。
OAuth アクセストークンの自動リフレッシュ
本製品 がOAuth アクセストークンを自動的にリフレッシュするようにするには、最初のデータ接続で次のパラメータを設定します。
- InitiateOAuth:REFRESH。
- OAuthClientId:カスタムOAuth アプリケーション設定のクライアントId。
- OAuthClientSecret:カスタムOAuth アプリケーション設定のクライアントシークレット。
- OAuthAccessToken:GetOAuthAccessToken によって返されたアクセストークン。
- OAuthRefreshToken:GetOAuthAccessToken によって返されたリフレッシュトークン。
- OAuthSettingsLocation:本製品 がOAuth トークン値を保存する場所。これは接続間で維持されます。
OAuth アクセストークンの手動リフレッシュ:
データ接続時に手動でOAuth アクセストークンをリフレッシュするために必要な値は、OAuth リフレッシュトークンのみです。
はじめに、RefreshOAuthAccessToken ストアドプロシージャを使用し、GetOAuthAccessToken によって返されたExpiresIn パラメータ値が経過した後に手動でOAuthAccessToken をリフレッシュします。
次に、以下のプロパティを設定します。
- OAuthClientId:カスタムOAuth アプリケーション設定のクライアントId。
- OAuthClientSecret:カスタムOAuth アプリケーション設定のクライアントシークレット。
ここでRefreshOAuthAccessToken を呼び出し、OAuthRefreshToken にGetOAuthAccessToken によって返されたOAuth リフレッシュトークンを指定します。新しいトークンが取得できたら、OAuthAccessToken プロパティにRefreshOAuthAccessToken によって返された値を設定します。これで新規接続が開かれます。
最後に、OAuth リフレッシュトークンを保存してOAuth アクセストークンの有効期限が切れた後に手動でリフレッシュできるようにします。
ヘッドレスマシン
ヘッドレスマシンのユーザーアカウントでOAuth を使用するようにドライバーを設定するには、インターネットブラウザに対応した別の端末で認証する必要があります。次のいずれかを実行します。
- オプション1:OAuthVerifier 値を取得します(後述の「Verifier code を取得および交換」参照)。
- オプション2:ブラウザに対応したマシンに本製品 をインストールし、通常のブラウザベースのフローで認証後にOAuth 認証値を転送します(後述の「OAuth 設定を転送」参照)。
オプション1:Verifier code を取得および交換
Verifier code を取得するには、OAuth Authorization URL で認証する必要があります。
インターネットブラウザに対応したマシンから認証してOAuthVerifier 接続プロパティを取得する方法は次のとおりです。
- 以下のオプションから選択します。
- 埋め込みOAuth 認証情報を使用する場合は、Salesforce OAuth endpoint をクリックし、ブラウザでエンドポイントを開きます。
- カスタムOAuth アプリケーションを使用するには、以下のプロパティを設定し、認証URL を作成します。
- InitiateOAuth:OFF。
- OAuthClientId:カスタムOAuth アプリケーションの登録時に割り当てられたクライアントId。
- OAuthClientSecret:カスタムOAuth アプリケーションの登録時に割り当てられたクライアントシークレット。
- ログインして、本製品 にアクセス許可を与えます。すると、verifier code を含むコールバックURL にリダイレクトされます。
- verifier code の値を保存します。後ほどこれをOAuthVerifier 接続プロパティに設定します。
ヘッドレスマシンでは、次の接続プロパティを設定してOAuth 認証値を取得します。
- InitiateOAuth:REFRESH。
- OAuthVerifier:verifier code。
- OAuthSettingsLocation:暗号化されたOAuth 認証値を指定された場所に永続化。
- OAuthClientId(カスタムアプリケーションのみ):カスタムOAuth アプリケーション設定のクライアントId。
- OAuthClientSecret(カスタムアプリケーションのみ):カスタムOAuth アプリケーション設定のクライアントシークレット。
OAuth 設定ファイルが生成されたら、次の接続プロパティをリセットします。
- InitiateOAuth:REFRESH。
- OAuthSettingsLocation:暗号化されたOAuth 認証値が保存される場所。アクセストークンの自動リフレッシュを有効にするために、この場所が本製品 に読み書きのアクセス許可を与えることを確認してください。
- OAuthClientId(カスタムアプリケーションのみ):カスタムOAuth アプリケーションの登録時に割り当てられたクライアントId。
- OAuthClientSecret(カスタムアプリケーションのみ):カスタムOAuth アプリケーションの登録時に割り当てられたクライアントシークレット。
オプション2:OAuth 設定を転送
ヘッドレスマシンでの接続に先立ち、インターネットブラウザに対応したデバイスでドライバーとの接続をインストールし、作成する必要があります。上述の「デスクトップアプリケーション」の説明に従って、接続プロパティを設定します。
「デスクトップアプリケーション」の手順を完了すると、生成された認証値は、OAuthSettingsLocation で指定された場所に暗号化されて書き込まれます。デフォルトのファイル名はOAuthSettings.txt です。
接続テストに成功したら、OAuth 設定ファイルをヘッドレスマシンにコピーします。
ヘッドレスマシンでは、次のプロパティを設定します。
- InitiateOAuth:REFRESH。
- OAuthSettingsLocation:OAuth 設定ファイルの場所。アクセストークンの自動リフレッシュを有効にするために、この場所が本製品 に読み書きのアクセス許可を与えることを確認してください。
- OAuthClientId(カスタムアプリケーションのみ):カスタムOAuth アプリケーションの登録時に割り当てられたクライアントId。
- OAuthClientSecret(カスタムアプリケーションのみ):カスタムOAuth アプリケーションの登録時に割り当てられたクライアントシークレット。
OAuth パスワードグラント
次の手順に従いパスワードグラントオプションを設定します。- パスワードグラント種別で認証を行う場合は、AuthScheme をOAuthPassword に設定します。
- 上記のWeb またはデスクトップ認証セクションで指定されたすべてのプロパティを設定します。
- User とPassword をログイン資格情報に設定し、必要に応じてSecurityToken も設定します。
Note:セッションの設定 -> ログイン時のIP アドレスとセッションをロックするを有効にしている場合、本製品 の使用中にIP アドレスが変更されないことを確認してください。本製品 使用中にIP が変更された場合、Salesforce から"INVALID_SESSION_ID" エラーが返され、本製品 はデータを取得できなくなります。このエラーが表示された場合は、Salesforce 管理者にこの設定を無効にするよう依頼するか、本製品 を使用するインスタンスに固定IP を必ず設定してください。その後、接続をリセットして本製品 を使い続けます。
OAuthJWT 証明書
AuthScheme をOAuthJWT に設定します。
OAuthJWT
OAuthJWT コンシューマーキーを取得するには:
- Salesforce.com にログインします。
- [設定]で[クイック検索]ボックスにApps を入力し、リンクをクリックしてアプリを作成します。表示されたページの接続アプリケーションセクションで、新規をクリックします。
- ユーザーがアプリケーションにログイン認証をする際に表示されるアプリケーション名を入力します。連絡先E メールアドレスも入力します。
- OAuth 設定の有効化をクリックし、コールバックURL ボックスに値を入力します。この値は必要に応じて接続アプリケーションを作成する場合にのみ設定します。この種類の認証には、実際には必要ありません。
Callback URL は次の形式になります:
http://localhost:8019/src/oauthCallback.rst
- デジタル署名を使用を有効にします。
- 証明書をアップロードします。
- アプリがユーザーに要求するアクセス許可の範囲を選択します。
- アプリケーション名をクリックしてアプリケーションの情報ページを開きます。OAuth コンシューマーキーが表示されます。
OAuth アプリケーション作成後、次の接続プロパティを設定します。
- AuthScheme:OAuthJWT。
- InitiateOAuth:GETANDREFRESH。
- OAuthJWTCert:JWT 証明書のストア。
- OAuthJWTCertType:OAuthJWTCert で指定された証明書ストアの種類。
- OAuthJWTCertPassword:JWT 証明書ストアのパスワード。
- OAuthJWTIssuer:OAuth クライアントID。
- OAuthJWTSubject:OAuth 接続アプリケーションで設定した許可されたユーザープロファイルのユーザー名(E メールアドレス)。
Note: このフローではリフレッシュトークンは発行されません。
AzureAD
AuthScheme をAzureAD に設定します。 AzureAD に接続するには、次の接続プロパティを使用します。
- SSOExchangeUrl:ID プロバイダーのSalesforce OAuth 2.0トークンエンドポイント。これは、Salesforce のアカウント設定で[管理者設定]->[セキュリティのコントロール]->[シングルサインオン設定]に移動し、目的の組織を選択することで確認できます。
この構成には、2つのAAD アプリケーションが必要であることに注意してください:シングルサインオンに使用される"Salesforce" アプリケーションと、"Salesforce" アプリケーションに対するuser_impersonation 権限を持つ別の"コネクタ" アプリケーションです。 OAuth 接続プロパティも指定する必要があります。
- OAuthClientId:アプリ登録の概要セクションにリストされている、コネクタアプリケーションのアプリケーションId。
- OAuthClientSecret:コネクタアプリケーションのクライアントシークレット値。新しいクライアントシークレットを作成すると、Azure AD にこれが表示されます。
以下のSSOProperties を使用して、AzureAD へ認証します。
- Resource:アプリ登録の概要セクションにリストされている、Salesforce アプリケーションのアプリケーションId URI。ほとんどの場合、これはカスタムSalesforce ドメインのURL です。
- AzureTenant:アプリケーションが登録されているAzure AD テナントのId。
以下は接続文字列の例です。
AuthScheme=AzureAD;InitiateOAuth=GETANDREFRESH;OAuthClientId=3ea1c786-d527-4399-8c3b-2e3696ae4b48;OauthClientSecret=xxx;SSOProperties='Resource=https://example.my.salesforce.com;AzureTenant=6ee709df-9de0-4cdf-10e6b7a51d95';
Okta
AuthScheme をOkta に設定します。Okta に接続するには、次の接続プロパティを使用します。
- User:Okta ユーザー。
- Password:Okta ユーザーのパスワード。
- SSOLoginURL:SSO プロバイダーのログインURL。
- SSOExchangeUrl:ID プロバイダーのSalesforce OAuth 2.0トークンエンドポイント。これは、Salesforce のアカウント設定で[管理者設定]->[セキュリティのコントロール]->[シングルサインオン設定]に移動し、目的の組織を選択することで確認できます。
- APIToken(オプション):顧客がOkta org から作成したAPI Token。Okta クライアントリクエストコンテキストをオーバーライドする、信頼されたアプリケーションまたはプロキシ経由でユーザーを認証する場合には、これを使用する必要があります。
- MFAType(オプション):MFA フローを設定した場合のみ必須。現時点では、次のタイプのみをサポートしています:OktaVerify、Email、およびSMS。
- MFAPassCode(オプション):MFA フローを設定した場合のみ必須。 空 / 無効に設定されている場合、ドライバーは最初にMFA チャレンジを発行し、設定されたMFA タイプに基づいてプラットフォームがデバイスまたはE メールでワンタイムパスワードを送信するようにトリガーします。 取得したワンタイムパスワードの値をMFAPassCode 接続プロパティに渡す別の接続を再発行する必要があります。
以下は接続文字列の例です。
AuthScheme=PingFederate;User=PingFederateUserName;Password=PingFederatePassword;URL='http://sharepointserver/mysite';
OneLogin
AuthScheme をOneLogin に設定します。OneLogin に接続するには、次の接続プロパティを使用します。
- User:OneLogin ユーザー。
- Password:OneLogin ユーザーのパスワード。
- SSOExchangeUrl:ID プロバイダーのSalesforce OAuth 2.0トークンエンドポイント。これは、Salesforce のアカウント設定で[管理者設定]->[セキュリティのコントロール]->[シングルサインオン設定]に移動し、目的の組織を選択することで確認できます。
- OAuthClientId:OAuthClientId。まだ入手していない場合、Developers -> API Credentials -> Credential -> ClientId に移動して確認します。
- OAuthClientSecret:OAuthClientSecret。まだ入手していない場合、Developers -> API Credentials -> Credential -> ClientSecret に移動して確認します。
- Subdomain:SSO アプリにアクセスするOneLogin ユーザーのサブドメイン。例えば、OneLogin URL がsplinkly.onelogin.com の場合、サブドメインの値はsplinkly です。
- AppId:SSO アプリのID。
- Region(オプション):OneLogin アカウントで使用しているリージョン。OneLogin API は複数のリージョンで動作し、このプロパティは正しいドメインを見つけるために使用されます。有効な値はUS(デフォルト)およびEU です。
以下は接続文字列の例です。
AuthScheme=OneLogin;User=OneLoginUserName;Password=OneLoginPassword;SSOProperties='OAuthClientID=3fc8394584f153ce3b7924d9cd4f686443a52b;OAuthClientSecret=ca9257fd5cc3277abb5818cea28c06fe9b3b285d73d06;Subdomain=OneLoginSubDomain;AppId=1433920';
PingFederate
AuthScheme をPingFederate に設定します。次の接続プロパティを設定する必要があります。
- User:PingFederate ユーザー。
- Password:PingFederate ユーザーのパスワード。
- SSOLoginURL:SSO プロバイダーのログインURL。
- SSOExchangeUrl: ID プロバイダーのSalesforce OAuth 2.0トークンエンドポイント。これは、Salesforce のアカウント設定で[管理者設定]->[セキュリティのコントロール]->[シングルサインオン設定]に移動し、目的の組織を選択することで確認できます。
- AuthScheme(オプション):IdP エンドポイントに使われる認可スキーム。有効な値はNone またはBasic です。
- SSLClientCert
- SSLClientCertType
- SSLClientCertSubject
- SSLClientCertPassword
AuthScheme=PingFederate;User=pingFederateUser;Password=pingFederatePassword;SSOLoginURL='https://<authority>/idp/sts.wst';SSOExchangeUrl='https://domain.my.salesforce.com/services/oauth2/token?so=00D3000006JDF';
ADFS
AuthScheme をADFS に設定し、次のプロパティを設定します。
- User:ADFS ユーザー。
- Password:ADFS ユーザーのパスワード。
- SSOLoginURL:SSO プロバイダーのログインURL。
- SSOExchangeUrl:ID プロバイダーのSalesforce OAuth 2.0トークンエンドポイント。これは、Salesforce のアカウント設定で[管理者設定]->[セキュリティのコントロール]->[シングルサインオン設定]に移動し、目的の組織を選択することで確認できます。
ADFS へ認証するには、以下のSSOProperties が必要です。
- RelyingParty:Salesforce のADFS サーバー上のRelying Party Identifier の値。
AuthScheme=ADFS;User=username;Password=password;SSOLoginURL='https://sts.company.com';SSOProperties='RelyingParty=https://saml.salesforce.com';
ADFS 統合
ADFS 統合フローでは、現在ログインしているWindows ユーザーの資格情報で接続します。 ADFS 統合フローを使用するには、User およびPassword を指定せず、それ以外の設定は上記のADFS ガイドと同じ手順を実行してください。