このFAQは、サポートチームのユーザーID検証を設定している開発者向けです。まだこのプロセスを開始していない場合は、まずユーザーID検証とは何ですか?また、どのように設定すればよいですか?をご確認ください。

HelpshiftにおけるユーザーID検証は、サーバーサイドで生成されたHMAC(ハッシュベースのメッセージ認証コード)を使用し、ユーザーのユーザーID、メールアドレス、またはユーザーIDとメールアドレスの組み合わせに対してSHA256を使用します。エンドユーザーがログインを要求する際、固有の識別子(ユーザーIDやメールアドレス)を提供するだけでなく、HMACダイジェストも自動的に提供するようにシステムを設定する必要があります。

その HMAC ダイジェストは、Helpshift ダッシュボードにある秘密鍵を使用して生成されます。Helpshift と管理者/開発者のみが秘密鍵にアクセスできるため、当社のシステムはログインリクエストがエンドユーザーからのものであり、悪意のある第三者からのものではないことを確認できます。

注:この機能を有効にすると、SDK v7.0.1以降(ID認証が設定されていない)のユーザーはチケットを提起できなくなります。Helpshiftダッシュボードでアプリのテストバージョンとテストアプリを設定し、以下の手順を完了することを強くお勧めします。これにより、問題が発生した場合にトラブルシューティングを行う機会が得られます。

エンドユーザーへの影響について詳しくは、FAQのエンドユーザーにはどのように表示されますか?セクション、およびユーザーID認証とは何ですか?また、どのように設定すればよいですか?をご覧ください。

ステップ1:秘密鍵を取得する

  1. Helpshiftの管理者として、設定ページに移動して秘密鍵にアクセスできます。
  2. このページで、[アプリの設定]までスクロールし、[ユーザーID検証]を設定するアプリを選択してください。
    秘密鍵(ユーザーID検証とは何ですか?また、どのように設定すればよいですか?に詳しく記載されている手順で、管理者によって生成されます)はこのページで確認できます。
  3. エンドポイントで使用するために、[コピー]ボタンをクリックしてこの秘密鍵をコピーしてください。
    セキュリティ上の理由から、この秘密鍵は、エンドユーザーまたは第三者がアクセスできる場所に置かないでください。

ステップ 2: エンドポイントの設定

秘密鍵を入手したので、エンドポイントで使用して、HMACダイジェストをiOSアプリ、Androidアプリ、またはWebチャットウィジェットに渡す必要があります。このHMAC生成は、通常のログインプロセスの一部として行うことも、個別のバックエンドサービスとして実装することもできます。秘密鍵は、開示を防ぐために、ユーザーのデバイスに存在しないようにする必要があります。

HMACダイジェストの生成に関するいくつかの注意点:

  • ダイジェストは、SHA256を使用してHMACで生成されます。
  • ダイジェストの生成時にユーザーのユーザーIDのみが利用可能な場合は、HMACはユーザーIDに対して生成される必要があります。
  • ダイジェストの生成時にユーザーのメールアドレスのみが利用可能な場合は、HMACはメールアドレスに対して生成される必要があります。
  • ユーザーIDとメールアドレスの両方が利用可能な場合、HMACは、ユーザーIDとメールアドレスを連結して得られた文字列に対して生成される必要があります。

本人確認のテスト中にエラーが発生した場合は、以下のトラブルシューティングのヒントをご確認ください。

  • Helpshiftダッシュボードのアプリ設定ページにある正しい秘密鍵を使用しているか、APIキーやアプリIDのようなものを使用していないか再確認してください。他の値を使用すると、無効なHMACダイジェストが生成されます。
  • HMACは、ログイン呼び出しでHelpshift SDKに渡されるのと同じユーザーIDまたはメールアドレスに対して生成される必要があります。
  • 提供している識別子に基づいて、ユーザーID、メールアドレス、またはその両方の組み合わせに対してHMACダイジェストを生成していることを確認してください。
  • EnableFullPrivacyフラグがTrueに設定されている場合、それらのユーザーのHMACダイジェストは、ユーザーIDのみで生成される必要があります。メールは個人を特定できる情報であるため、無視する必要があります。

エンドポイントを設定する際に、以下のコードサンプルを参考にしてください。

Python 3

def hmac_using_stdlib(uid, email, secret):

message = "
uid が None でない場合:
message = uid
emailがNoneでない場合:
message = ‘%s%s’ % (メッセージ, メール)

print(メッセージ)
messagebytes = bytes(message, ‘utf-8’)
secretbytes = bytes(secret, ‘utf-8’)

uat = hmac.new(secretbytes, messagebytes, hashlib.sha256)
return base64.b64encode(uat.digest()).decode('ascii')

node.js

var crypto = require(‘crypto’);

function hmac(uid, email, secret) {
var message = ”;
if (uid !== null) {
message = message + uid;
}
if (email !== null) {
message = message + email;
}

var hash = crypto.createHmac(‘sha256’, secret).update(message);
hash.digest(‘base64’)を返します。
}

Java

import javax.crypto.Mac;
javax.crypto.spec.SecretKeySpecをインポート
import javax.xml.bind.DatatypeConverter;

public class IdentityVerificationHelper {

public String sign(String uid, String email, String secretKey) {

StringBuilder sb = new StringBuilder();
if (uid != null)
sb.append(uid);
if (メール != null)
sb.append(email);

final String message = sb.toString();

try {
Mac hmacsha256 = Mac.getInstance(“HmacSHA256”);
hmacsha256.init(new SecretKeySpec(secretKey.getBytes(), “HmacSHA256”));

byte[] hash = hmacsha256.doFinal(message.getBytes());

DatatypeConverter.printBase64Binary(hash) を返します。
} catch (Exception e) { } catch (例外 e) {
// 例外処理
e.printStackTrace();
nullを返します。
}

}

}
ステップ 3: iOS アプリ / Android アプリ / Web チャットウィジェットを設定する
HMACダイジェストを生成するようにエンドポイントを設定したら、iOS、Android、およびWebチャットのコードでID検証を設定する必要があります。この手順を完了するには、ID検証に関する開発者向けドキュメント(iOSAndroid、およびWebチャット)を参照してください。

これで、ユーザーID検証を有効にする準備ができました。上記のように、ライブアプリでこの機能を有効にする前に、テストHelpshiftアプリでアプリのテストバージョンを使用し、テストしてください。ライブアプリでID検証を有効にすると、(ID検証が構成された)最新バージョンのアプリを使用していないユーザーは、チケットを提起できなくなります。

実装をテストする手順については、ユーザーID検証が正しく設定されているかテストするにはどうすればよいですか?をご覧ください。