JWT認証

JWT認証はデータソースに届くリクエストがベースマキナからのアクション実行のリクエストであることを検証できる機能です。

アクション実行時に発行されるトークンをリクエスト情報に含めることで、データソース側で検証できます。

各種クラウドのJWT認証機能での利用も可能です。

対応しているデータソース

現在はHTTP APIデータソースのみ対応しています。

もし他のデータソースで使用したい場合はご連絡いただければ幸いです。

設定例

以下では、Amazon API GatewayのJWT Authorizer (opens in a new tab)で利用する場合の設定例を紹介します。

HTTP APIデータソースの設定

HTTP APIデータソースの共通ヘッダーに、JWT認証用のヘッダーを設定します。

  1. HTTP APIデータソースの編集画面を開く
  2. 共通ヘッダーに以下のように設定する
    • ヘッダー名:Authorization
    • 値:Bearer {{ authToken }}
HTTP APIデータソースの共通ヘッダー設定画面。Authorizationヘッダーに Bearer {{ authToken }} を設定

{{ authToken }}事前定義パラメーターで、アクション実行時に自動的にトークンに置換されます。

また他の事前定義パラメーターと同様に、アクションのヘッダーやクエリパラメーター、リクエストボディなどでも使用できます。

Amazon API GatewayのJWT Authorizerの設定

JWT Authorizerを以下のように設定します。

AWS API GatewayのJWT Authorizer設定画面
  • 名前ベースマキナ用
    • 任意の名前を設定してください。
  • ID ソース$request.header.Authorization
    • データソースやアクションの設定に合わせて設定してください。
  • 発行者 URLhttps://idp.basemachina.com
  • 対象者https://<ベースマキナの企業アカウントのサブドメイン>.basemachina.com
    • 詳細な設定方法は「aud」で後述します。

アクションを実行する

設定したデータソースを使用するアクションを作成し実行すると、共通ヘッダーで設定した{{ authToken }}がトークンに置き換わり、JWT Authorizerで認証されます。

トークンの仕様

以下はリクエスト情報に含まれるトークンの仕様です。

アルゴリズム

アルゴリズムはRS256です。

クレーム

iss

発行者のURLです。

常に"https://idp.basemachina.com"が設定されています。

exp

トークンの有効期限です。 有効期限は発行から1分間で、1764514800のようなUNIXタイムスタンプの値が設定されています。

aud

対象者を識別する値です。

以下の内容の配列が設定されており、いずれかのURLと対象者との一致を検証することで、許可する範囲をカスタマイズできます。

[
  "https://{企業アカウントのサブドメイン}.basemachina.com",
  "https://{企業アカウントのサブドメイン}.basemachina.com/projects/{プロジェクトID}",
  "https://{企業アカウントのサブドメイン}.basemachina.com/projects/{プロジェクトID}/environments/{環境ID}"
]

例えば、企業アカウント内の全プロジェクトの全環境からのリクエストを許可する場合は、許可する対象者を"https://{企業アカウントのサブドメイン}.basemachina.com"に設定します。

また、特定の環境からのリクエストのみを許可する場合は、以下のように設定して実現できます。

"https://{企業アカウントのサブドメイン}.basemachina.com/projects/{プロジェクトID}/environments/{環境ID}"

公開鍵の取得

トークンの検証に必要な公開鍵は、以下のURLから取得できます。

https://idp.basemachina.com/.well-known/jwks.json

またOpenID Connect(OIDC)Discoveryドキュメントは以下のURLから取得できます。

https://idp.basemachina.com/.well-known/openid-configuration