接続の確立
コネクタ内で利用可能なオブジェクトは、"cdata.graphql" モジュールからアクセスできます。モジュールのオブジェクトを直接使用するには:
- モジュールを以下のようにインポートします。
import cdata.graphql as mod
- 接続を確立するには、以下のような適切な接続文字列を使用してコネクタオブジェクトからconnect() メソッドを呼び出します。
mod.connect("AuthScheme=OAuth;OAuthVersion=2.0;CallbackURL=http://localhost:33333;OauthClientId=MyOAuthClientId;OAuthClientSecret=MyOAuthClientSecret;OAuthAccessTokenURL=https://mysite.com/login/oauth/access_token;")
GraphQL への接続
接続するには以下を設定します。
- URL:GraphQL のURL を指定。例:https://api.example.com/graphql
- Location:GraphQL サービスのカスタム定義スキーマを含むファイルパスに設定。
GraphQL への認証
ドライバーは次の認証をサポートします。- Basic
- OAuth 1.0 & 2.0
- OAuthPKCE
- AWS Cognito クレデンシャル:
- AwsCognitoSrp
- AwsCognitoBasic
Basic
AuthScheme をBasic に設定。GraphQL のUser とPassword を指定する必要があります。
OAuth
すべてのOAuth フローでAuthScheme をOAuth に、OAuthVersion を1.0または2.0に設定する必要があります。以下のセクションは、すでに設定済みであることを前提として書かれています。デスクトップアプリケーション
次の接続プロパティを設定して、接続してください。- OAuthRequestTokenURL:OAuth 1.0 に必要です。これはアプリケーションがリクエストトークンをリクエストするURL です。
- OAuthAuthorizationURL:OAuth 1.0 および2.0 に必要です。これは、ユーザーがサービスにログインして、アプリケーションにアクセス許可を与えるURL です。OAuth 1.0 では、権限が与えられるとリクエストトークンが認可されます。
- OAuthAccessTokenURL:OAuth 1.0 および2.0 に必要です。これは、アクセストークンがリクエストされるURL です。OAuth 1.0 では、認可されたリクエストトークンはアクセストークンと交換されます。
- OAuthRefreshTokenURL:OAuth 2.0 に必要です。OAuth 2.0 では、古いトークンの期限が切れたときは、このURL でリフレッシュトークンを新しいアクセストークンと交換します。データソースによっては、アクセストークンと同じURL である場合がありますので、注意してください。
- OAuthClientId:アプリケーション設定のクライアントId に設定。これはコンシューマーキーとも呼ばれます。
- OAuthClientSecret:アプリケーション設定のクライアントシークレットに設定。これはコンシューマーシークレットとも呼ばれます。
- CallbackURL:http://localhost:33333 に設定。アプリケーション設定でリダイレクトURL を指定した場合には、一致している必要があります。
- InitiateOAuth:GETANDREFRESH に設定。InitiateOAuth を使って、OAuth 交換や、手動での接続文字列のアクセストークン設定の繰り返しを避けられます。
- コールバックURL からアクセストークンを取得し、リクエストを認証します。
- アクセストークンの期限が切れたときにはリフレッシュしてください。
- OAuthSettingsLocation でOAuth 値を保存します。これらの値は接続間で永続化されます。
Web アプリケーション
Web アプリケーションから接続する場合、または本製品 にブラウザウィンドウを開く権限がない場合は、提供されたストアドプロシージャを使用してOAuth トークン値を取得および管理します。
Note: ストアドプロシージャスキーマを拡張して、OAuth URL またはその他の接続文字列プロパティのデフォルトを設定できます。オペレーション を参照してください。
OAuth フローの設定
Web フローで認証するOAuth URL を指定します。
- OAuthRequestTokenURL:OAuth 1.0 に必要です。これはアプリケーションがリクエストトークンをリクエストするURL です。
- OAuthAuthorizationURL:OAuth 1.0 および2.0 に必要です。これは、ユーザーがサービスにログインして、アプリケーションにアクセス許可を与えるURL です。OAuth 1.0 では、権限が与えられるとリクエストトークンが認可されます。
- OAuthAccessTokenURL:OAuth 1.0 および2.0 に必要です。これは、アクセストークンがリクエストされるURL です。OAuth 1.0 では、認可されたリクエストトークンはアクセストークンと交換されます。
- OAuthRefreshTokenURL:OAuth 2.0 に必要です。OAuth 2.0 では、古いトークンの期限が切れたときは、このURL でリフレッシュトークンを新しいアクセストークンと交換します。データソースによっては、アクセストークンと同じURL である場合がありますので、注意してください。
OAuth URL に加えて、次の追加の接続プロパティを設定し、OAuthAccessToken を取得します。
- OAuthClientId:アプリケーション設定のクライアントId に設定。
- OAuthClientSecret:アプリケーション設定のクライアントシークレットに設定。
続いてストアドプロシージャを呼び出し、OAuth 交換を完了します。
- GetOAuthAuthorizationURL ストアドプロシージャを呼び出します。AuthMode インプットをWEB に、CallbackURL インプットをアプリケーション設定で指定したリダイレクトURI に設定します。ストアドプロシージャがOAuth エンドポイントのURL を返します。
- ログインして、アプリケーションを認可します。コールバックURL にリダイレクトされます。
-
GetOAuthAccessToken ストアドプロシージャを呼び出します。AuthMode インプットをWEB に設定します。
OAuth 1.0では、Verifier インプットを"oauth_verifier" パラメータに設定します。verifier code をコールバックURL から取得します。さらに、AuthToken とAuthSecret をGetOAuthAccessToken で返された値に設定します。
OAuth 2.0では、Verifier インプットを、コールバックURL のクエリ文字列の"code" パラメータに設定します。
GetOAuthAccessToken によって返されたOAuthAccessToken の有効期限は限られています。トークンを自動的にリフレッシュするには、最初のデータ接続で次のように設定します。
OAuth エンドポイント
- OAuthRequestTokenURL
- OAuthAuthorizationURL
- OAuthAccessTokenURL
- OAuthRefreshTokenURL
OAuth トークンおよびキー
- OAuthClientId
- OAuthClientSecret
- OAuthRefreshToken
- OAuthAccessToken
あるいは、RefreshOAuthAccessToken ストアドプロシージャを使って、手動でトークンをリフレッシュします。
OAuth の開始
- InitiateOAuth:REFRESH に設定。InitiateOAuth を使うと、OAuth 交換の繰り返しや、手動でのOAuthAccessToken 設定を避けられます。
- OAuthSettingsLocation:本製品 がOAuth 値を保存する場所に設定。これらの値は接続間で永続化されます。
その後のデータ接続では、以下を設定します。
- InitiateOAuth
- OAuthSettingsLocation
- OAuthRequestTokenURL
- OAuthAuthorizationURL
- OAuthAccessTokenURL
- OAuthRefreshTokenURL
ヘッドレスマシン
ヘッドレスサーバーや、本製品 がブラウザを開くことができないその他のマシンにGraphQL データソースを作成するには、別のマシンから認証を行う必要があります。認証は、2段階認証プロセスになります。
- 以下のオプションから選択します。
- オプション1:後述の「Verifier code を取得および交換」に従い、OAuthVerifier 値を取得します。
- オプション2:インターネットブラウザに対応したマシンに本製品 をインストールし、後述の「OAuth 設定を転送」の説明に従い、通常のブラウザベースのフローで認証後にOAuth 認証値を転送します。
- 次に、ヘッドレスマシンからアクセストークンを自動的にリフレッシュするように本製品 を設定します。
オプション1:Verifier code を取得および交換
ヘッドレスマシンで次のプロパティを設定します。
- InitiateOAuth:OFF に設定。
- OAuthClientId:アプリケーション設定のアプリケーションId に設定。
- OAuthClientSecret:アプリケーション設定のアプリケーションシークレットに設定。
別のマシンから認証してOAuthVerifier 接続プロパティを取得する方法は次のとおりです。
- CallbackURL 入力パラメータを、アプリケーション設定で指定した正確なリダイレクトURI に設定してGetOAuthAuthorizationURL ストアドプロシージャを呼び出します。
- OAuthVersion が1.0に設定されている場合は返されたAuthToken およびAuthKey の値を保存します。これらは次のステップで使用します。
- 返されたURL をブラウザで開きます。ログインして、本製品 にアクセス許可を与えます。すると、verifier code を含むコールバックURL にリダイレクトされます。
- verifier code の値を保存します。後ほどこれをOAuthVerifier 接続プロパティに設定する必要があります。
ヘッドレスマシンでは、次の接続プロパティを設定してOAuth 認証値を取得します。
- OAuthRequestTokenURL:OAuth 1.0 に必要です。OAuth 1.0 では、これがアプリケーションがリクエストトークンをリクエストするURL です。
- OAuthAuthorizationURL:OAuth 1.0 および2.0 に必要です。これは、ユーザーがサービスにログインして、アプリケーションにアクセス許可を与えるURL です。OAuth 1.0 では、権限が与えられるとリクエストトークンが認可されます。
- OAuthAccessTokenURL:OAuth 1.0 および2.0 に必要です。これは、アクセストークンがリクエストされるURL です。OAuth 1.0 では、認可されたリクエストトークンはアクセストークンと交換されます。
- OAuthRefreshTokenURL:OAuth 2.0 に必要です。OAuth 2.0 では、古いトークンの期限が切れたときは、このURL でリフレッシュトークンを新しいアクセストークンと交換します。データソースによっては、アクセストークンと同じURL である場合がありますので、注意してください。
- OAuthClientId:アプリケーション設定のクライアントId に設定。
- OAuthClientSecret:アプリケーション設定のクライアントシークレットに設定。
- CallbackURL:http://localhost:33333 に設定。アプリケーション設定でリダイレクトURL を指定した場合には、一致している必要があります。
- InitiateOAuth:GETANDREFRESH に設定。InitiateOAuth を使って、OAuth 交換や、手動での接続文字列のアクセストークン設定の繰り返しを避けられます。
データへの接続
OAuth 設定ファイルが生成されたら、次のプロパティを設定してデータに接続します。
- OAuthSettingsLocation:暗号化されたOAuth 認証値を含む場所に設定。アクセストークンの自動リフレッシュを有効にするために、この場所がプロバイダーに読み書きのアクセス許可を与えることを確認してください。
- InitiateOAuth:REFRESH に設定。
オプション2:OAuth 設定を転送
別のマシンに本製品 をインストールして認証し、結果のOAuth 値を転送する方法は次のとおりです。
セカンドマシンに、本製品 をインストールして、次の接続プロパティセットで接続します。
- OAuthSettingsLocation:書き込み可能な場所に設定。
- InitiateOAuth:GETANDREFRESH に設定。
- OAuthClientId:アプリケーション設定のクライアントId に設定。
- OAuthClientSecret:アプリケーション設定のクライアントシークレットに設定。
- CallbackURL:アプリケーション設定のコールバックURL に設定。
認証する接続をテストします。生成された認証値は、OAuthSettingsLocation で指定された場所に暗号化されて書き込まれます。接続テストに成功したら、OAuth 設定ファイルをヘッドレスマシンにコピーします。ヘッドレスマシンで、次の接続プロパティを設定し、データに接続します。
- InitiateOAuth:REFRESH に設定。
- OAuthSettingsLocation:OAuth 設定ファイルの場所に設定。アクセストークンの自動リフレッシュを有効にするために、この場所が本製品 に読み書きのアクセス許可を与えることを確認してください。
OAuthPKCE
NOTE:OAuth Proof Key for Code Exchange (PKCE) は、OAuth 2.0 Authorization Code フローの拡張機能です。
デスクトップアプリケーション
以下を設定して、接続してください。- AuthScheme:OAuthPKCE に設定。
- InitiateOAuth:GETANDREFRESH に設定すると、手動でのOAuth 交換や接続文字列のアクセストークン設定を避けられます。
- OAuthClientId:GraphQL サービスでOAuth アプリケーションを作成する際に生成されたクライアントId に設定。
- OAuthAuthorizationURL:GraphQL サービスの認可URL に設定。これは、ユーザーがサービスにログインして、OAuth アプリケーションにアクセス許可を与えるURL です。例:https://api.example.com/authorize
- OAuthAccessTokenURL:GraphQL サービスのアクセストークンURL に設定。これは、アクセストークンがリクエストされるURL です。例:https://api.example.com/token
- OAuthRefreshTokenURL:GraphQL サービスのリフレッシュトークンURL に設定。古いトークンの期限が切れたときは、このURL でリフレッシュトークンを新しいアクセストークンと交換します。データソースによっては、OAuthAccessTokenURL と同一の場合がありますので、留意してください。
接続すると、本製品 はデフォルトブラウザでOAuth 認可エンドポイントを開きます。ログインして、アプリケーションにアクセス許可を与えます。本製品 がOAuth プロセスを完了します。
- 認可コードをコールバックURL から取得します。
- 認可コードをアクセストークンおよびリフレッシュトークンに交換します。
- アクセストークンの期限が切れたときにはリフレッシュしてください。
- OAuthSettingsLocation でOAuth 値を保存します。これらの値は接続間で永続化されます。
Web アプリケーション
Web アプリケーションから接続する場合、または本製品 にブラウザウィンドウを開く権限がない場合は、提供されたストアドプロシージャを使用してOAuth トークン値を取得および管理します。
Note: ストアドプロシージャスキーマを拡張して、OAuth URL またはその他の接続文字列プロパティのデフォルトを設定できます。オペレーション を参照してください。
OAuth フローの設定
Web フローで認証するOAuth URL を指定します。
- OAuthAuthorizationURL:これは、ユーザーがサービスにログインして、OAuth アプリケーションにアクセス許可を与えるURL です。
- OAuthAccessTokenURL:これは、アクセストークンがリクエストされるURL です。
- OAuthRefreshTokenURL:古いトークンの期限が切れたときは、このURL でリフレッシュトークンを新しいアクセストークンと交換します。データソースによっては、アクセストークンと同じURL である場合がありますので、注意してください。
OAuth URL に加えて、OAuthClientId をアプリケーション設定のクライアントId に設定し、OAuthAccessToken を取得します。
続いてストアドプロシージャを呼び出し、OAuth 交換を完了します。
- GetOAuthAuthorizationURL ストアドプロシージャを呼び出します。CallbackURL インプットをアプリケーション設定で指定したリダイレクトURI に設定します。ストアドプロシージャはGraphQL サービスの認可URL とPKCEVerifier を返します。PKCEVerifier は、OAuthPKCE でセキュリティ上の理由で使用されるランダムな生成値です。PKCEVerifier を保存します。これはGetOAuthAccessToken ストアドプロシージャを実行する際にインプットが必要です。
- ログインして、アプリケーションを認可します。コールバックURL にリダイレクトされます。
-
GetOAuthAccessToken ストアドプロシージャを呼び出します。
AuthMode インプットをWEB に設定します。
Verifier インプットを、コールバックURL のクエリ文字列の"code" パラメータの値に設定します。
PKCEVerifier インプットを、GetOAuthAuthorizationURL ストアドプロシージャを呼び出した後に生成された値に設定します。
GetOAuthAccessToken によって返されたOAuthAccessToken の有効期限は限られています。トークンを自動的にリフレッシュするには、最初のデータ接続で次のように設定します。
OAuth エンドポイント
- OAuthAuthorizationURL
- OAuthAccessTokenURL
- OAuthRefreshTokenURL
OAuth トークンおよびキー
- OAuthClientId
- OAuthRefreshToken
- OAuthAccessToken
あるいは、RefreshOAuthAccessToken ストアドプロシージャを使って、手動でトークンをリフレッシュします。
OAuth の開始
- InitiateOAuth:REFRESH に設定。InitiateOAuth を使うと、OAuth 交換の繰り返しや、手動でのOAuthAccessToken 設定を避けられます。
- OAuthSettingsLocation:本製品 がOAuth 値を保存する場所に設定。これらの値は接続間で永続化されます。
その後のデータ接続では、以下を設定します。
- InitiateOAuth
- OAuthSettingsLocation
- OAuthAuthorizationURL
- OAuthAccessTokenURL
- OAuthRefreshTokenURL
AWS Cognito クレデンシャル
AWS Cognito のユーザープールに登録されたユーザーで本製品 を使用する場合は、以下のプロパティを設定して認証してください。
- AuthScheme:AwsCognitoSrp に設定(推奨)。また、AwsCognitoBasic を使用することもできます。
- AWSCognitoRegion:ユーザープールのリージョンに設定。
- AWSUserPoolId:ユーザープールのId に設定。
- AWSUserPoolClientAppId:ユーザープールのアプリクライアントId に設定。
- AWSUserPoolClientAppSecret:ユーザープールのクライアントシークレットに設定。
- AWSIdentityPoolId:ユーザープールとリンクしているID プールのId に設定。
- User:ユーザープールに登録されているユーザーのユーザー名に設定。
- Password:ユーザープールに登録されているユーザーのパスワードに設定。