APIコールの認証

Oracle Data Cloud APIへのコールからデータを受信するには、リクエストを認証する必要があります。

リクエスト署名の計算

リクエスト署名は、暗号化データを次の要素を含む文字列バイト配列に生成し、結果の文字列に秘密キーで署名することにより計算できます。

HTTP_METHOD + URI_PATH + QUERY_ARG_VALUES + POST_DATA

署名アルゴリズム: HMAC-SHA256

HMAC-SHA256(Secret key, HTTP_METHOD + URI_PATH + QUERY_ARG_VALUES + POST_DATA)

パートナIDプロパティ

URIでpidまたはpartner.idプロパティをオプションで指定して、ユーザー・アカウントに関連付けられている特定のパートナ・シートに対するレスポンスをリクエストできます。URIにパートナIDが含まれている場合は、それを使用してbksig値が計算されます。

ユーザー・アカウントが複数のパートナ・シートに関連付けられている場合は、デフォルトのパートナ・シートに対するレスポンスになります。たとえば、ユーザー設定でアカウントがパートナ・シート12345と23456に関連付けられている場合、APIコールでは、2つのパートナIDのうち低い数値の12345がデフォルトで使用されます。ただし、コールに署名する前にコールのURLでpartner.id=23456を指定すると、もう一方のパートナ・シートのデータを取得できます。

pidまたはpartner.idプロパティは、APIキーの取得に使用したものと同じアカウントに関連付けられている必要があります。それ以外の場合、403: Forbiddenエラーが発生します。

サンプル認証済メッセージ

次の例は、認証済メッセージをping APIに送信して、Oracle Data Cloudプラットフォームに認証済メッセージ・リクエストを送信できることを検証する方法を示しています。

URL: https://services.bluekai.com/Services/WS/Ping?pid=23456
METHOD: POST
URI PATH: /Services/WS/Ping
QUERY ARG VALUES: (none)
POST DATA: (none)
STRING TO SIGN: POST/Services/WS/Ping

生成された署名(Base64でエンコードされたHMAC-SHA256の出力であるbksig)は、次の2つの問合せ引数を使用してユーザー識別子(bkuid)とともにOracle Data Cloudプラットフォームに渡されます。

bkuid={BK_WS_USERID)
bksig={Signed Web Service Request String}

pingリクエストの構文例

https://services.bluekai.com/Services/Ping?pid=partnerID&bkuid=webServicesUserID&bksig=signedString

ノート: bkuidbksigの値は、bksig値の取得に使用されるHMAC-SHA256の入力文字列に追加されません。

戻り値

プラットフォーム認証のすべての形式では、リクエストが成功するとHTTPレスポンス・コード200が返されます。リクエストが失敗した場合は、403 Forbiddenの結果が返されます。認証リクエストは、レスポンスでJSONデータを返しません。

Pythonプログラミング言語を使用して署名済リクエストを生成する方法は、プログラミングの例を参照してください。

さらに学ぶ

Oracle Data Cloud APIの概要