JWTや公開鍵を生成する
JWTを生成する方法と、JWTキー(秘密鍵 / 公開鍵)を生成する方法について
JWTを生成する前に
ウィザードを埋め込むサイトのオリジン(URL)をAnyflow CSチームにご連絡ください。
e.g.
http://localhost:8000
http://dev.example.com:8080
https://stg.example.jp
※開発環境や検証環境など、SDKを使用し得る環境のオリジンを一通りご連絡ください。 後から追加/変更することも可能です。
オリジンを共有いただく理由
Anyflow SDKを使用してソリューションなどのデータを取得する場合、ベンダープロダクトから直接 Anyflow Embed の API へリクエストを送信することになります。ブラウザはあるオリジンから異なるオリジンにリクエストを送る場合、オリジンをまたいで通信を行っても良いかどうかを自動的に検証します。 その検証を通過させるためにはAnyflowのサーバーにてお客様のオリジンを許可リストに含める必要があるため、オリジンを予めご提供いただいております。
JWTを生成する
Anyflow Embedでは、JWTを使用してベンダープロダクトとデータのやりとりを行います。 Anyflow SDKの利用にはベンダープロダクトのサーバーサイドで生成したJWTが必要です。
なお、JWTは RS256
アルゴリズムで生成する必要があります。
ヘッダーの仕様
alg
RS256
typ
JWT
ヘッダーサンプル
ペイロードの仕様
iss
◯
String
Anyflow
exp
◯
Integer
ベンダー
有効期限(UNIXタイムスタンプ)を指定します。 セキュリティの側面から1時間など短い時間を推奨しております。
jti
◯
String
ベンダー
JWTのユニーク性を担保するための識別子を指定します。 JWTを発行するごとに別の値が設定されるように、UUIDなどを指定します。
anyflow_team_id
◯
String
ベンダー
一意なエンドユーザーチームの識別子を指定します。 プロダクト側で生成した自由な値を使用してください。
anyflow_team_email
◯
String
ベンダー
通知などに利用されるエンドユーザーチームの代表メールアドレスを指定します。
anyflow_team_name
◯
String
ベンダー
通知などに利用されるエンドユーザーチームの名前を指定します。
anyflow_user_id
✕
String
ベンダー
一意なエンドユーザーの識別子を指定します。 チームインテグレーションをする際はnullを指定します。
anyflow_user_email
✕
String
ベンダー
通知などに利用されるエンドユーザーのメールアドレスを指定します。 anyflow_user_idと同様に、チームインテグレーションをする際はnullを指定します。
anyflow_user_name
✕
String
ベンダー
エンドユーザーの名前を指定します。 anyflow_user_idと同様に、チームインテグレーションをする際はnullを指定します
nbf
✕
Integer
ベンダー
JWTが有効になる日時を指定します。
iat
✕
Integer
ベンダー
JWTが発行された日時を指定します。
セキュリティの観点から一度使用したJWTを再度使用することはできません。そのため、JWTは生成されるごとに異なるユニークな値にする必要があります。
ヒント
anyflow_user_*
がJWTに格納されていた場合はユーザーインテグレーションになります。
必須である anyflow_team_*
しか格納されていない場合はチームインテグレーションになります。
ペイロードサンプル
JWTキーを生成する
秘密鍵を生成する
秘密鍵を生成するには、次の通りにコマンドを実行します。
デプロイ環境を使用する場合は、デプロイ環境ごとに秘密鍵を分けることが可能です。デプロイ環境についてはこちらを参照してください。
公開鍵を生成する
次に、以下のコマンドを実行して公開鍵を抽出します。
サンプルコード
以下はPythonでJWTを生成するサンプルコードです。
以下のコードではanyflow_user_id
などが指定されていないため、チームインテグレーションになります。
よくあるご質問
ユーザーインテグレーションとチームインテグレーションは何が異なりますか?
こちらを参考にしてください。
JWTの有効期限の推奨時間はありますか?
JWTの有効期限(exp)に関して、セキュリティの側面から1時間など短い時間を設定いただくことを推奨しております。
最終更新