SHANON MARKETING PLATFORM API GUIDE
  • APIの利用方法
    • APIの利用方法
    • 認証
    • APIコールとメソッドリファレンス
    • 検索
    • 登録・更新
  • クライアントアプリケーション認証
    • authentication.get
  • 画面ユーザ認証
    • authapi.login
    • authinfo.getToken
    • authinfo.getCheck
    • authinfo.logout
    • authapi.agencynavigation
    • authapi.agencynavigation.back
  • 管理者
    • admin.get
    • admin.post
    • admin.put
    • admin.delete
  • キャンペーン
    • seminar.get
    • seminar.post
    • seminar.put
    • seminar.delete
    • seminaritemsetting.get
    • seminar.getSession
    • seminar.postSession
    • seminar.putSession
    • seminar.deleteSession
    • sessionitemsetting.get
  • 担当者割当
    • admin.getAssinmentSeminar
    • admin.postAssinmentSeminar
    • admin.deleteAssinmentSeminar
  • アンケート
    • enquetetemplate.get
    • enquetetemplate.getQuestion
  • 講演者
    • speaker.get
    • speakersetting.get
  • 資料
    • document.get
  • リスト
    • staticlist.get
    • staticlist.post
    • staticlist.put
    • staticlist.delete
  • リスト・リード管理
    • staticlist.getVisitor
    • staticlist.postVisitor
    • staticlist.deleteVisitor
  • 企業
    • company.get
    • company.post
    • company.put
    • company.delete
  • 企業・リード管理
    • company.getVisitor
    • company.postVisitor
    • company.deleteVisitor
  • リード
    • visitor.get
    • visitor.post
    • visitor.put
    • visitor.delete
    • visitor.getFile
    • visitor.postFile
    • visitor.putFile
    • visitor.deleteFile
    • visitorsetting.get
  • 申込
    • application.post
    • application.delete
    • seminar.getDiscount
    • visitor.getDiscounthistory
    • visitor.getBilling
    • visitor.getApplication
    • visitor.putApplication
    • counting.getApplication
  • キャンペーン申込情報
    • visitor.getApplicationSeminar
    • visitor.getApplicationSession
  • 申込フロー
    • seminar.getFlow
  • 来場
    • visitor.getAttendance
    • visitor.getAttendanceSeminar
    • visitor.postAttendanceSeminar
    • visitor.deleteAttendanceSeminar
    • visitor.getAttendanceSession
    • visitor.postAttendanceSession
    • visitor.deleteAttendanceSession
    • counting.getAttendance
  • メール送信
    • visitor.postMail
    • 一斉メール送信APIの利用方法
    • mailtemplate.get
    • mailtemplate.post
    • mailtemplate.put
    • mailtemplate.delete
    • mailsender.get
    • mailsender.post
    • mailsender.delete
  • クリックカウント
    • clickcounturl.get
  • トラッキング
    • trackingurl.get
  • メール履歴情報
    • visitor.getMail
  • アンケート履歴情報
    • visitor.getEnquete
    • enquetehistory.get
  • クリックカウント履歴情報
    • visitor.getClickcount
  • トラッキング履歴情報
    • visitor.getTrackingaccesslog
    • visitor.getTrackingsession
  • 資料履歴情報
    • visitor.getDocumentdownload
  • 活動履歴情報
    • visitor.getActivity
    • visitor.postActivity
    • visitor.putActivity
    • visitor.deleteActivity
    • activitysetting.get
  • リード変更履歴情報
    • visitor.getChangelog
    • visitor.getAddlog
    • visitor.getDeletelog
    • visitor.getMergelog
  • DM個別送信履歴情報
    • visitor.getDirectMail
  • キャンペーン設定
    • seminarsettingdata.get
    • seminarsettingdata.put
  • メッセージ
    • messagestr.get
    • messagestr.put
  • ファイル情報
    • file.get
    • file.post
  • 検索条件
    • searchcondition.get
  • バルクAPI
    • 概要
    • bulkapi.get
    • bulkapi.post
  • APPENDIX
    • APIメソッドリファレンス
    • 用語について
    • 共通エラーコード一覧
    • 都道府県IDと都道府県名の対応表
    • タイムゾーンIDとタイムゾーン名の対応表
    • 非推奨API
    • 改訂履歴
Home >> 2-1. 認証

1.認証

  • 概要
  • 認証トークン
  • 認証トークンの利用方法
    • 前提条件
    • 利用手順
    • シグネチャ(署名)の仕様
    • シグネチャ計算時の注意事項
    • シグネチャ計算にパラメータを加えることによるセキュリティ強化

概要

ここでは、マーケティングプラットフォームAPIにおける認証の仕組みについて説明します。 マーケティングプラットフォームAPIの認証には、APIのための認証と、ユーザ(管理者、リード)のための認証の2種類があります。 APIのための認証は、クライアントアプリケーションがマーケティングプラットフォームAPIを利用可能であることを確認するために行います。 確認方法として認証トークンの保持確認および検証を行います。 ユーザのための認証とは、あるユーザがマーケティングプラットフォームへアクセス可能であることを確認するために行います。確認方法としてユーザ認証APIを利用したユーザID/パスワード認証、認証ユーザトークンの保持確認および検証を行います。

認証トークン

マーケティングプラットフォームAPIでは、APIコール毎に認証トークンの確認を行います。 またAPIのリクエストには、認証トークンが改ざんされていないことを保証するためのシグネチャ(署名)を付加する必要があります。 認証トークンおよびシグネチャにより、認証されたクライアントアプリケーションからのアクセスであることを保証します。

認証トークンの利用方法

認証トークンの利用方法について説明します。

前提条件

(1) 文字エンコーディング マーケティングプラットフォームAPI へアクセスする際の情報は全て UTF-8 エンコードされたデータを使用します。

(2)クライアントアプリケーションの認証 マーケティングプラットフォームAPI を使用するためには、「マーケティングプラットフォームAPIキー」、「パスワード」、「秘密鍵」が必要です。

利用手順

図1-1.認証トークンとAPIコールのシーケンス図

図1-1.認証トークンとAPIコールのシーケンス図

(1) 認証トークンの取得 クライアントアプリケーションは、マーケティングプラットフォームの authentication.get メソッドを マーケティングプラットフォームAPIキー(図1-1のapi_key)、パスワード(図1-1のpassword)、シグネチャ(図1-1のapi_sig)を付けてAPIコールします。返り値として認証トークン(図1-1のtoken)が返ってきます。

RESTで呼び出す際のURLは以下です。

https://{domainname}/services/rest/authentication

マーケティングプラットフォームAPIキー、パスワード、シグネチャは、リクエストパラメータに記載します。

api_key=[api_key]&password=[password]&api_sig=[api_sig]

(2)APIコール マーケティングプラットフォームAPIキー、認証トークン、シグネチャに必要な情報を付加してAPIコールします。

RESTで認証トークンの取得を呼び出すURLは以下です。

https://{domainname}/services/rest/authentication?api_key=[api_key]&token=[token]&api_sig=[api_sig]

シグネチャ(署名)の仕様

マーケティングプラットフォーム API へのすべてのメソッドコールにはシグネチャと呼ばれる署名が必要です。 シグネチャの作成方法を以下に記載します。

本説明で使用する各値は次の通りとします。

api_key    : 55b985f4994bf940b63f6bfb0aec3f70
password   : le3eguhg
secret_key : a707e9a9cc663951e0f217030d5cce07

(1) すべての引数をパラメータの名前でアルファベット順に並び替えます。 マーケティングプラットフォームAPIキー(api_key)、パスワード(password)、を引数として使用する場合は、api_key, password の順です。

(2) (1) の並び順どおりにキーとバリューの組を連結します。

 ex)api_key55b985f4994bf940b63f6bfb0aec3f70passwordle3eguhg

(3) secret_keyを用いて(2)の文字列の HMAC-SHA-1 ハッシュ値を計算します。

(4) (3)の結果を16進数表示します。

ex)44c477c44e599f6f4f303b4d41a002b03acb9b99

シグネチャ計算時の注意事項

検索条件にOR検索を使用する場合、同じsearch_valueパラメータを連結する必要があります。 このとき、valueの値が数値の場合でも、以下のように文字列として並べ替えて結合してください。 (※OR検索については「APIコール」に関する節の「検索条件指定パラメータ」の項をご参照ください。)

visitor.id=800 or visitor.id=7520の検索をする場合、リクエストは以下のようになります。

https://sample.smartseminar.jp/services/rest/visitor?search_key1=Id&search_operator1=eq&search_value1=800&search_value1=7520&api_key=55b985f4994bf940b63f6bfb0aec3f70&token=xxxxxxxxx&api_sig=xxxxx

このリクエストのシグネチャ計算の種は以下のようにします。

api_key55b985f4994bf940b63f6bfb0aec3f70search_key1Idsearch_operator1eqsearch_value17520800tokenxxxxxxxx

この際、search_value1の箇所は下記が正しく

search_value17520800

下記は誤りになります。

search_value18007520

シグネチャ計算にパラメータを加えることによるセキュリティ強化

APIのセキュリティ強度は、シグネチャの強度に依存します。 同じトークン、同じパラメータでシグネチャを作成した場合、シグネチャは毎回同じ値になります。 セキュリティの観点から、シグネチャの値を毎回変えるために、可変パラメータを追加することが有効です。 例えば、実行時の時間をパラメータに追加します。この場合のシグネチャ計算の種は下記になります。

ex)api_keyxxxxxtime20100722160045tokenxxxxx

また、リクエストURLに可変パラメータ(この例ではtime)を付加します。 マーケティングプラットフォームは未知のパラメータがリクエストされた場合、パラメータ値を無視します。

https://sample.smartseminar.jp/services/rest/visitor?api_key=xxxxx&token=xxxxxx&api_sig=xxxxx&time=20100722160045