OAuth の使用
このセクションでは、本製品 を使って、OAuth をサポートする任意のデータソースを認証する方法を説明します。
OAuth では認証するユーザーにブラウザでREST との通信を要求します。次のセクションで説明するとおり、本製品 はさまざまな方法でこれをサポートします。
次の手順に従う前に、サービスにOAuth アプリを登録してOAuthClientId およびOAuthClientSecret を取得する必要があります。
デスクトップアプリケーション
次の接続プロパティを設定して、接続してください。
- OAuthVersion:OAuth バージョン1.0 か2.0 のいずれかに設定します。
- 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 交換や、手動での接続文字列のアクセストークン設定の繰り返しを避けられます。
- コールバックURL からアクセストークンを取得し、リクエストを認証します。
- アクセストークンの期限が切れたときにはリフレッシュしてください。
- OAuthSettingsLocation でOAuth 値を保存し、接続間で永続化されるようにします。
Web アプリケーション
Web アプリケーションから接続する場合、または本製品 にブラウザウィンドウを開く権限がない場合は、提供されたストアドプロシージャを使用してOAuth トークン値を取得および管理します。
Note:ストアドプロシージャスキーマを拡張して、OAuth URL またはその他の接続文字列プロパティのデフォルトを設定できます。オペレーション を参照してください。
OAuth フローの設定
Web フローで認証するOAuth URL を指定します。
- 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 である場合がありますので、注意してください。
アクセストークンの取得
OAuth URL に加えて、次の追加の接続プロパティを設定し、OAuthAccessToken を取得します。
- OAuthClientId:アプリケーション設定のクライアントId に設定。これはコンシューマーキーとも呼ばれます。
- OAuthClientSecret:アプリケーション設定のクライアントシークレットに設定。これはコンシューマーシークレットとも呼ばれます。
- OAuthVersion:OAuth バージョン1.0 か2.0 のいずれかに設定します。
続いてストアドプロシージャを呼び出し、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 の有効期限は限られています。トークンを自動的にリフレッシュするには、最初のデータ接続で次のように設定します。あるいは、RefreshOAuthAccessToken ストアドプロシージャを使って、手動でトークンをリフレッシュします。
OAuth エンドポイント
- OAuthRequestTokenURL
- OAuthAuthorizationURL
- OAuthAccessTokenURL
- OAuthRefreshTokenURL
OAuth トークンおよびキー
- OAuthClientId
- OAuthClientSecret
- OAuthRefreshToken
- OAuthAccessToken
OAuth の開始
- OAuthVersion:1.0 か2.0 に設定。
- InitiateOAuth:REFRESH に設定。InitiateOAuth を使うと、OAuth 交換の繰り返しや、手動でのOAuthAccessToken 設定を避けられます。
- OAuthSettingsLocation:本製品 がOAuth 値を保存する場所のパスを設定し、接続間で維持されるようにします。
その後のデータ接続では、以下を設定します。
- InitiateOAuth
- OAuthSettingsLocation
- OAuthRequestTokenURL
- OAuthAuthorizationURL
- OAuthAccessTokenURL
- OAuthRefreshTokenURL
JWT
本製品 は、ユーザーが双方向のサインオンを実行できない状況で、認可グラントとしてのJWT の使用をサポートします。 次の接続プロパティを設定して、接続してください。
- OAuthVersion:2.0 に設定します。
- OAuthAccessTokenURL:JWT がアクセストークンと交換されるURL に設定します。
- OAuthJWTCert:使用する証明書に設定します。多くの場合、これはPEM またはPFX ファイルへのパスです。
- OAuthJWTCertType:正しい証明書タイプに設定します。多くの場合、PEMKEY_FILE またはPFXFILE のいずれかです。
- OAuthJWTCertPassword:証明書が暗号化されている場合、これを暗号化パスワードに設定します。
- OAuthJWTIssuer:発行元に設定します。これはJWT のiss フィールドに相当します。
- InitiateOAuth:GETANDREFRESH に設定します。
JWT 署名のアルゴリズムを直接設定できないことに注意してください。RS256 アルゴリズムのみサポートされています。
本製品 は以下のフィールドを含むJWT を構築してOAuthAccessTokenURL にアクセストークンを送信します。
- scope 提供されている場合、Scope から取得されます。
- aud 提供されている場合、OAuthJWTAudience から取得されます。
- iss OAuthJWTIssuer から取得されます。
- iat これはJWT が生成された時間です。
- exp これは、iat の値にOAuthJWTValidityTime の値を加えたものです。
- sub 提供されている場合、OAuthJWTSubject から取得されます。