HMAC は、ハッシュベースのメッセージ認証コードの略です。この認証は、秘密キーとともにメッセージ本文に適用されるハッシュ関数の結果です。したがって、Web サービス リクエストを介して認証データを送信するのではなく、秘密キーと HMAC の識別子を送信します。サーバーはリクエストを受信すると、ユーザーの秘密キーを検索し、それを使用して受信リクエスト用の HMAC を作成します。リクエストとともに送信された HMAC がサーバーによって計算された HMAC と一致する場合、リクエストは認証されます。
セキュリティ識別子/トークンは、コミュニティ URL パラメーターを介して QuestionPro に送信されます。 HMAC-SHA1 認証は、コミュニティ >> ログイン認証からコミュニティに設定できます。 認証の設定中に、次の情報を入力する必要があります。 1. キー: 秒単位の時間をハッシュするために使用される 36 文字のキー。このキーの長さは 8 文字である必要があります。 2. タイムスタンプ: 調査 URL が有効となる時間枠。ここに入力する値は分単位です。変更箇所を確認するには、以下のスクリーンショットを参照してください。
URL を介して次のセキュリティ トークン フィールドを渡す必要があります。
名前 | 説明/値 | 必要 |
調査ID | 調査ID | ✔ |
ts | トークンが作成された時刻 (UTC 時間 (秒))。 | ✔ |
ハッシュ | 秒の HMAC-SHA1 ハッシュ (UTC) | ✔ |
モード | このパラメータの値は常に hmacSha1 です。 | ✔ |
public String getAuthURL(String surveyID, String hashKey){ long ms = getUTCMillis(); long seconds = (ms/1000); String hash = hmacSha1(String.valueOf(seconds),hashKey); String params = "surveyID="+surveyID+"&ts=" + seconds + "&hash=" + hash + "&mode=hmacSha1" return "https://www.questionpro.com/a/TakeSurveyAuth?"+params; }
サンプルコード:function getAuthURL($surveyID,$hashKey){ $seconds = time(); $hash = hash_hmac('sha1', $seconds, $hashKey); $params = "surveyID=".$surveyID. "&ts=" . $seconds . "&hash=" . $hash . "&mode=hmacSha1"; return "https://www.questionpro.com/a/TakeSurveyAuth?".$params; }
この機能は、次のライセンスで利用できます。