概要
JWTトークン認証では、ユーザー固有のCorgea APIトークンの代わりに、Microsoft Entra IDやOktaなど、IDプロバイダー(IdP)から直接発行されたベアラートークンを使ってCorgea APIを呼び出すことができます。 これは、CI/CDパイプライン、自動スキャナー、社内ツールなどシステム間統合において推奨されるアプローチです。- 特定のユーザーアカウントではなく、サービスプリンシパルやアプリ登録に紐づくトークン
- IdPが制御するトークンの寿命と範囲
- Corgeaに手を出さずに、IdPを通じて一元で取り消しを行う
仕組み
- システムがクライアント認証情報(クライアントIDとシークレット)を使用して、IdPにアクセストークンを要求します。
- IdPが、
iss(発行者)やaud(オーディエンス)などのクレームを含む署名済みJWTを返します。 - システムがCorgea APIを呼び出す際に、
AuthorizationヘッダーでBearerトークンとして渡します。 - CorgeaがIdPの公開鍵でトークンの署名を検証し、
iss、aud、appid/cidクレームが登録済みの設定と一致することを確認します。
Corgea CLIでJWTを利用する
CLIログインフローでJWTアクセストークンを直接利用できます:CorgeaでのJWT認証の設定
Settings → Integrationsに移動し、JWT Authenticationセクションの**+ Add**をクリックします。
jwt.ioを使ってIdPからアクセストークンをデコードし、
iss、aud、appid/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を設定または確認します — これがこのアプリで発行されるトークンの
Application ID URI(例:
audクレームとなります。
api://5d63c8f0-c9a8-4195-90ee-a9e27e4510b8)をコピーしてください。これはCorgeaの オーディエンス として入力されます。3
クライアントシークレットを作成する
Certificates & secrets → New client secretを開きます。説明と有効期限を設定し、Addをクリックします。
シークレットの値をコピーします。この値は一度しか表示されないため、CI/CDのシークレットストアなどに安全に保存してください。

4
アクセストークンを要求
システムはクライアントの認証フローを使ってEntraにトークンを要求しています:レスポンスには
access_tokenが含まれています。Corgeaを呼ぶ際にはこれをベアラートークンとして渡してください:プライベートデプロイの場合は
https://www.corgea.app を https://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
Postmanとのテスト
CurlよりGUIを好む場合は、PostmanでトークンリクエストやAPI呼び出しを直接テストできます。 curlコマンドをインポートする Postmanでは、上記のcurlコマンドをリクエストに変換できます。左上のImportをクリックしてcurlコマンドを貼り付けると、メソッド、URL、ヘッダー、ボディが自動的に入力されます。
tenant-id、client_id、client_secret、scopeをボディ欄に記入し、リクエストを送信します。レスポンスのaccess_token 値をコピーしてください。

access_tokenを貼り付けます。

もし会社がアウトバウンドネットワークアクセスを制限しているなら、プロキシの設定が必要かもしれません。Postmanで 設定→プロキシ に行き、企業プロキシを追加します。curlの場合は、
HTTPS_PROXY 環境変数を設定するかパス --proxy https://your-proxy:port。トークンの検証
Corgeaを設定する前に jwt.io を使ってアクセストークンをデコードしてください。トークンをデバッガに貼り付け、 デコード済みペイロード を確認して、iss、 aud、 appid の値を確認してください。

aud と iss フィールドは、Corgeaが受信リクエストの検証時に確認するものです。
トラブルシューティング
- 401 Unauthorized: jwt.io でトークンをデコードし、
iss、aud、appidがCorgea JWT認証設定の値と正確に一致していることを確認します。 - ローテーション後にトークンが拒否された場合:クライアントシークレットをローテーションした場合、新しいシークレットがCI/CD環境で更新されていることを確認してください。Corgeaの設定自体は、トークンクレームを検証するため変更する必要がありません。
- 複数環境:Corgeaで各アプリケーションや環境(例:ステージングと本番環境)ごとに、異なるクライアントIDを持つ異なるアプリ登録を用いて、別々のJWT認証設定を作成します。
ネットワーク接続の問題
トークン要求やAPI呼び出しが接続エラーで失敗した場合は、これらのコマンドを使ってファイアウォールやプロキシがトラフィックをブロックしているかどうかを調べてください。login.microsoftonline.com ・ www.corgea.appできるようにします。