ヘルプセンター 連絡先と管理者 連絡先 SSO連絡先インターフェース

SSO連絡先インターフェース

この記事では、メールアドレスまたはサードパーティのユーザーIDを使って連絡先をサインインする方法を説明します。これはサブアカウントSSOインターフェースと同じappIdとSecret Keyを使用しますが、URL、署名フィールド、ランディングページは異なります。サブアカウントの作成とロール設定はサブアカウントSSOインターフェースで行ってください。


概要

連絡先のメールアドレスまたはサードパーティのユーザーIDを送信します。SurveyMars が署名を確認し、その連絡先をサインインさせます。

- 連絡先がサブアカウントの場合、SurveyMars は returnUrl を開きます。returnUrl が省略されている場合は、アンケート一覧を開きます。

- 連絡先がサブアカウントでない場合、SurveyMars は returnUrl を無視し、連絡先のホームページを開きます。


使用例

- あなたのシステムにはすでに連絡先のメールアドレスまたはサードパーティのユーザーIDがあり、SurveyMars へパスワード不要でアクセスしたい。

- サブアカウントの連絡先は returnUrl に遷移します。その他の連絡先は returnUrl をスキップして連絡先ホームページに遷移します。


開始前に

1. メインアカウントでサインインし、マイアカウントから appId をコピーします。

2. サポートに連絡して Secret Key を有効化してもらいます。このキーはサーバー側でのみ使用してください。URL やフロントエンドのコードには入れないでください。

3. サーバー側で SHA256 署名を生成し、その後 GET でログインリンクを開きます。


マイアカウント


リクエスト

メソッド: GET

URL: https://surveymars.com/app/login/contact/verify?appId=&email=&thirdUserId=&ts=&language=&returnUrl=&sign=


パラメータ 必須 説明
appId はい メインアカウントID。サブアカウントSSOインターフェースと同じ appId を使用します。
email 条件付き 連絡先のメールアドレス。email または thirdUserId、またはその両方を指定してください。メインアカウントで空の連絡先メールアドレスが許可されていない場合、email は必須です。
thirdUserId 条件付き サードパーティのユーザーID。email または thirdUserId、またはその両方を指定してください。両方送信された場合、検証では email のみを使用します。thirdUserId は署名には含まれます。
language いいえ プロンプトメッセージの言語。署名には含まれません。
returnUrl いいえ サブアカウントがサインインした後に開くページです。SurveyMars はサブアカウントの連絡先に対してはこれに従い、それ以外では無視します。署名には含まれません。
ts はい 1970-01-01 00:00:00 UTC からの秒数。60秒間有効です。URL の ts は署名で使用した ts と一致している必要があります。ユーザーがリンクを開こうとする直前に生成してください。
sign はい 署名。sign は連結した平文 appId + email + thirdUserId + ts + Secret Key の小文字16進 SHA256 です。順序は厳密に一致していなければなりません。Secret Key はサーバー側でのみ連結し、ブラウザのアドレスバーに表示されてはなりません。下の「署名の作成」を参照してください。


署名の作成

署名ルール


1. 区切り文字なしで、署名対象フィールドを固定順に連結します:appId + email + thirdUserId + ts + Secret Key。email または thirdUserId が省略されている場合は、その位置に空文字列を使用します。フィールドを削除したり、プレースホルダーに置き換えたりしないでください。Secret Key はサーバー側でのみ連結し、ブラウザのアドレスバーに表示されてはなりません。


2. その文字列を SHA256 でハッシュし、小文字の16進値を sign として使用します。


3. language と returnUrl は署名に含めません。ステップ1のフィールドと順序のみを使用してください。


4. ts は 1970-01-01 00:00:00 UTC からの秒数です。60秒間有効です。ユーザーがリンクを開こうとする直前に ts と sign を生成し、URL には同じ ts を使用してください。URL エンコードによって署名に使用した元の値が変わってはいけません。


5. 連結した文字列を確認するには、LZL online SHA256 などの SHA256 ツールに貼り付けてください。本番環境では sign をサーバーで生成してください。Secret Key をブラウザに公開しないでください。


6. サブアカウントSSOの署名を再利用しないでください。その文字列は appId、email、userName、roleId、ts を使用します。このインターフェースでは userName と roleId は使用しません。


例:

http://surveymars.com/app/login/contact/verify?appId=TTeEB8&[email protected]&ts=1790760357&language=2&returnUrl=https://surveymars.com/app/usercenter&sign=26c0c7d9da5e38c61d4aeecb223336d7a259cad0b75c8ff912855421fd832a4e



メールアドレスとサードパーティのユーザーID

1. email と thirdUserId の少なくとも一方を送信してください。

2. 両方送信した場合、検証では email が使用され、thirdUserId は無視されます。署名では元の thirdUserId を維持し、URL に含めてもかまいません。

3. メインアカウントで空の連絡先メールアドレスが許可されていない場合、email は必須です。

4. この設定がオフの場合は、サポートに連絡して「空の連絡先メールアドレスを許可」を有効にしてください。有効化後は、メールアドレスなしで連絡先を追加できます。


連絡先の遷移先

1. サブアカウントの連絡先:SurveyMars は returnUrl を開きます。returnUrl が省略されている場合は、アンケート一覧を開きます。

2. その他の連絡先:SurveyMars は returnUrl を無視し、連絡先のホームページを開きます。


重要な注意事項

- Secret Key はサーバーに保持してください。ブラウザのアドレスバーには入れないでください。

- このインターフェースは連絡先をサインインさせます。サブアカウントを作成したり、サブアカウントのロールを設定したりはしません。

- email 内の @ などの文字は URL エンコードしてください。署名はエンコード後の値ではなく、元の値で行ってください。


よくある質問

これはサブアカウントSSOとどう違いますか?
サブアカウントSSOは /app/login/sso/verify を使用してサブアカウントを作成またはサインインさせます。連絡先サインインは、メールアドレスまたはサードパーティのユーザーIDを使って /app/login/contact/verify を使用します。署名フィールドが異なります。sign を再利用しないでください。


thirdUserId だけを送信できますか?
はい、メインアカウントで空の連絡先メールアドレスが許可されている場合は可能です。それ以外の場合は email が必要です。署名内では省略したフィールドに空文字列を使用してください。


email と thirdUserId の両方を送信しました。なぜサインインに email が使われるのですか?
両方存在する場合、検証では thirdUserId は無視され、メールアドレスで連絡先が照合されます。thirdUserId は署名には引き続き含まれます。


なぜサブアカウントでない連絡先は returnUrl をスキップしたのですか?
returnUrl は連絡先がサブアカウントの場合にのみ適用されます。それ以外では SurveyMars はこれを無視し、連絡先のホームページを開きます。


なぜ署名検証に失敗するのですか?
Secret Key を確認してください。appId、email、thirdUserId、ts、Secret Key をその順序で連結します。省略された email または thirdUserId には空文字列を使用してください。ts がまだ60秒以内であること、および URL エンコードによって元の値が変わっていないことを確認してください。language と returnUrl は含めないでください。


なぜ ts の期限切れがこんなに早いのですか?
本番環境では、ts はサーバー時刻から60秒以内である必要があります。ユーザーがリンクを開こうとする直前に ts と sign を生成してください。

この記事はどのくらい役に立ちましたか?