Skip to main content

概要

JWTトークン認証では、ユーザー固有のCorgea APIトークンの代わりに、Microsoft Entra IDやOktaなど、IDプロバイダー(IdP)から直接発行されたベアラートークンを使ってCorgea APIを呼び出すことができます。 これは、CI/CDパイプライン、自動スキャナー、社内ツールなどシステム間統合において推奨されるアプローチです。
  • 特定のユーザーアカウントではなく、サービスプリンシパルやアプリ登録に紐づくトークン
  • IdPが制御するトークンの寿命と範囲
  • Corgeaに手を出さずに、IdPを通じて一元で取り消しを行う
Corgea APIトークンは常に個々のユーザーに紐づいています。そのユーザーが退出したりアカウントが無効化されたりすると、そのトークンを使った自動化は無効になります。JWT認証は認証をユーザーアカウントから完全に切り離します。

仕組み

  1. システムがクライアント認証情報(クライアントIDとシークレット)を使用して、IdPにアクセストークンを要求します。
  2. IdPが、iss(発行者)やaud(オーディエンス)などのクレームを含む署名済みJWTを返します。
  3. システムがCorgea APIを呼び出す際に、AuthorizationヘッダーでBearerトークンとして渡します。
  4. CorgeaがIdPの公開鍵でトークンの署名を検証し、issaudappid/cidクレームが登録済みの設定と一致することを確認します。

Corgea CLIでJWTを利用する

CLIログインフローでJWTアクセストークンを直接利用できます:
または環境変数で設定することもできます:

CorgeaでのJWT認証の設定

Settings → Integrationsに移動し、JWT Authenticationセクションの**+ Add**をクリックします。
JWT認証設定フォームを追加Corgea
以下の項目に記入してください:
jwt.ioを使ってIdPからアクセストークンをデコードし、issaudappid/cidの正確な値を確認してからフォームに記入してください。
提供者固有の値:
  • Entra ID発行者: https://sts.windows.net/{your-tenant-id}/
  • Entra IDオーディエンス:アプリのApplication ID URI(例:api://{client_id})。EntraのExpose an APIで設定します
  • Okta発行者: https://{domain}.okta.com/oauth2/default
  • Oktaオーディエンス: api://default (またはカスタム認証サーバーオーディエンス)

Microsoft Entra ID設定

1

Entraでアプリケーションを登録する

Azure portalで、Microsoft Entra ID → App registrations → New registrationに移動します。アプリに分かりやすい名前(例:corgea-cicd)を付けて登録します。
2

APIを公開し、Application ID URIを設定します

アプリの登録でExpose an APIを開きます。Application ID URIを設定または確認します — これがこのアプリで発行されるトークンのaudクレームとなります。
Expose an API in Microsoft Entra
Application ID URI(例: api://5d63c8f0-c9a8-4195-90ee-a9e27e4510b8)をコピーしてください。これはCorgeaの オーディエンス として入力されます。
3

クライアントシークレットを作成する

Certificates & secrets → New client secretを開きます。説明と有効期限を設定し、Addをクリックします。
Microsoft Entraでクライアントシークレットを追加
シークレットの値をコピーします。この値は一度しか表示されないため、CI/CDのシークレットストアなどに安全に保存してください。
4

アクセストークンを要求

システムはクライアントの認証フローを使ってEntraにトークンを要求しています:
レスポンスにはaccess_tokenが含まれています。Corgeaを呼ぶ際にはこれをベアラートークンとして渡してください:
プライベートデプロイの場合は https://www.corgea.apphttps://your_instance.corgea.app に置き換えてください。
5

Corgeaに設定を登録

CorgeaのAdd JWT Auth Configurationフォームに次の値を入力します。
  • 発行者: https://sts.windows.net/{your-tenant-id}/
  • オーディエンス:ステップ2のアプリケーションID URI(例: api://5d63c8f0-...)
  • Allowed Application ID:アプリ登録のApplication (client) ID
Addをクリックして保存します。

Postmanとのテスト

CurlよりGUIを好む場合は、PostmanでトークンリクエストやAPI呼び出しを直接テストできます。 curlコマンドをインポートする Postmanでは、上記のcurlコマンドをリクエストに変換できます。左上のImportをクリックしてcurlコマンドを貼り付けると、メソッド、URL、ヘッダー、ボディが自動的に入力されます。
Postmanにcurlコマンドをインポートする方法
アクセストークンのリクエスト tenant-idclient_idclient_secretscopeをボディ欄に記入し、リクエストを送信します。レスポンスのaccess_token 値をコピーしてください。
クライアント認証情報を使ったPostmanでのアクセストークンのリクエスト
トークンを使ってCorgea APIを呼び出します Corgeaエンドポイントへの新しいリクエストを作成します。Authorizationタブで、TypeをBearer Tokenに設定し、access_tokenを貼り付けます。
Postmanでベアラートークンで Corgea API に電話をかける
もし会社がアウトバウンドネットワークアクセスを制限しているなら、プロキシの設定が必要かもしれません。Postmanで 設定→プロキシ に行き、企業プロキシを追加します。curlの場合は、 HTTPS_PROXY 環境変数を設定するかパス --proxy https://your-proxy:port

トークンの検証

Corgeaを設定する前に jwt.io を使ってアクセストークンをデコードしてください。トークンをデバッガに貼り付け、 デコード済みペイロード を確認して、 issaudappid の値を確認してください。
jwt.io で JWT トークンを解読してISSおよびAUDクレームを検証する
強調された audiss フィールドは、Corgeaが受信リクエストの検証時に確認するものです。

トラブルシューティング

  • 401 Unauthorized: jwt.io でトークンをデコードし、 issaudappid がCorgea JWT認証設定の値と正確に一致していることを確認します。
  • ローテーション後にトークンが拒否された場合:クライアントシークレットをローテーションした場合、新しいシークレットがCI/CD環境で更新されていることを確認してください。Corgeaの設定自体は、トークンクレームを検証するため変更する必要がありません。
  • 複数環境:Corgeaで各アプリケーションや環境(例:ステージングと本番環境)ごとに、異なるクライアントIDを持つ異なるアプリ登録を用いて、別々のJWT認証設定を作成します。

ネットワーク接続の問題

トークン要求やAPI呼び出しが接続エラーで失敗した場合は、これらのコマンドを使ってファイアウォールやプロキシがトラフィックをブロックしているかどうかを調べてください。
TCP接続テストが失敗したり、tracerouteが内部ホップで停止した場合は、ネットワークやセキュリティチームに連絡して、アウトバウンドHTTPS(ポート443)を login.microsoftonline.comwww.corgea.appできるようにします。