JWTや公開鍵を生成する

JWTを生成する方法と、JWTキー(秘密鍵 / 公開鍵)を生成する方法について

JWTを生成する前に

ウィザードを埋め込むサイトのオリジン(URL)をAnyflow CSチームにご連絡ください。

開発環境や検証環境など、SDKを使用する可能性がある全てのオリジンをご連絡ください。 後から追加/変更することも可能です。

登録するオリジンの例

  • http://localhost:8000

  • http://dev.example.com:8080

  • https://stg.example.jp

※独自ドメインであればワイルドカードでの指定も可能です。 独自ドメインではないものはワイルドカードでの指定はできません(*.azure.net , *amazonaws.com, *.vercel.app など)。

オリジンを共有いただく理由

Anyflow SDKを使用してソリューションなどのデータを取得する場合、ベンダープロダクトから直接 Anyflow Embed の API へリクエストを送信することになります。ブラウザはあるオリジンから異なるオリジンにリクエストを送る場合、オリジンをまたいで通信を行っても良いかどうかを自動的に検証します。 その検証を通過させるためにはAnyflowのサーバーにてお客様のオリジンを許可リストに含める必要があるため、オリジンを予めご提供いただいております。

JWTを生成する

Anyflow Embedでは、JWTを使用してベンダープロダクトとデータのやりとりを行います。 Anyflow SDKの利用にはベンダープロダクトのサーバーサイドで生成したJWTが必要です。

なお、JWTは RS256 アルゴリズムで生成する必要があります。

ヘッダーの仕様

Key
Value

alg

RS256

typ

JWT

ヘッダーサンプル

ペイロードの仕様

Claim
必須
値の作成元
説明

iss

String

Anyflow

Anyflowがベンダーを識別するための値です。 Anyflow Embedの管理画面から取得した値を使用してください。

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は生成されるごとに異なるユニークな値にする必要があります。

ヒント

ペイロードサンプル

JWTキーを生成する

秘密鍵を生成する

秘密鍵を生成するには、次の通りにコマンドを実行します。

デプロイ環境を使用する場合は、デプロイ環境ごとに秘密鍵を分けることが可能です。デプロイ環境についてはこちらを参照してください。

公開鍵を生成する

次に、以下のコマンドを実行して公開鍵を抽出します。

公開鍵を登録する

Anyflow管理画面に公開鍵を登録してください。

サンプルコード

以下はPythonでJWTを生成するサンプルコードです。 以下のコードではanyflow_user_id などが指定されていないため、チームインテグレーションになります。

よくあるご質問

ユーザーインテグレーションとチームインテグレーションは何が異なりますか?

こちらを参考にしてください。

JWTの有効期限の推奨時間はありますか?

JWTの有効期限(exp)に関して、セキュリティの側面から1時間など短い時間を設定いただくことを推奨しております。

最終更新