メインコンテンツまでスキップ

認証リファレンス(SaaS版)

AgenticStar SaaS版の OIDC エンドポイント仕様、JWT クレーム構造、スコープ、エラーコードのリファレンスです。

エンドポイント一覧

メソッドエンドポイント説明
GET/.well-known/openid-configurationOpenID Connect Discovery エンドポイント
GET/auth/v1/authorizeAuthorization Code フローのユーザー認可エンドポイント
POST/auth/v1/tokenトークン取得エンドポイント(AC / CC / Refresh Token フロー対応)
GET/auth/v1/userinfoユーザー情報取得エンドポイント
GET/auth/v1/jwks公開鍵セット(JWKS)エンドポイント
POST/auth/v1/revokeトークン失効エンドポイント
GET/auth/v1/logoutログアウトエンドポイント

ベース URL: https://auth.agenticstar.jp/federation

Issuer: https://auth.agenticstar.jp/realms/federation

Discovery

GET /.well-known/openid-configuration

OpenID Connect Discovery エンドポイント。クライアントが必要なエンドポイント URL やサーバー情報を取得します。

リクエスト例

curl
curl https://auth.agenticstar.jp/federation/.well-known/openid-configuration

レスポンス例

JSON
{
"issuer": "https://auth.agenticstar.jp/realms/federation",
"authorization_endpoint": "https://auth.agenticstar.jp/federation/auth/v1/authorize",
"token_endpoint": "https://auth.agenticstar.jp/federation/auth/v1/token",
"userinfo_endpoint": "https://auth.agenticstar.jp/federation/auth/v1/userinfo",
"jwks_uri": "https://auth.agenticstar.jp/federation/auth/v1/jwks",
"revocation_endpoint": "https://auth.agenticstar.jp/federation/auth/v1/revoke",
"end_session_endpoint": "https://auth.agenticstar.jp/federation/auth/v1/logout",
"grant_types_supported": ["authorization_code", "refresh_token", "client_credentials"],
"response_types_supported": ["code"],
"response_modes_supported": ["query"],
"subject_types_supported": ["public"],
"id_token_signing_alg_values_supported": ["RS256"],
"token_endpoint_auth_methods_supported": ["client_secret_basic", "client_secret_post"],
"code_challenge_methods_supported": ["S256"]
}

Authorization Code フロー

GET /auth/v1/authorize

ユーザーが認証してアプリケーションを認可し、Authorization Code を取得します。ウェブブラウザで直接アクセスしてください。

クエリパラメータ

パラメータ必須説明
client_idstring必須クライアントID
redirect_uristring必須認可後にリダイレクトするURI(事前登録が必要)
response_typestring必須code を指定してください
scopestring必須スペース区切りのスコープ。openid は必須
statestring必須CSRF 対策用。クライアントが生成した予測不可能な値
noncestringID Token への nonce クレーム挿入用(推奨)
kc_idp_hintstringテナント ID ヒント。ログイン画面をスキップできます

リクエスト URL 例

curl
https://auth.agenticstar.jp/federation/auth/v1/authorize?\
client_id=my-client&\
redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback&\
response_type=code&\
scope=openid%20chat%3Aall&\
state=abc123xyz&\
nonce=xyz789abc

成功時

ユーザーが認可に成功した場合、以下の形式でリダイレクトされます:

https://app.example.com/callback?\
code=AUTH_CODE&\
state=abc123xyz

エラー時

エラーが発生した場合、以下の形式でリダイレクトされます:

https://app.example.com/callback?\
error=invalid_scope&\
error_description=...&\
state=abc123xyz
エラーコード説明
invalid_request必須パラメータが不足している、または形式が不正
unauthorized_clientクライアントが認可フローを使用する権限がない
invalid_scopeリクエストされたスコープが無効または不足
server_errorサーバー側のエラー

Token エンドポイント

POST /auth/v1/token

Authorization Code または Client Credentials フローでアクセストークン(および ID Token)を取得します。

リクエストヘッダー

ヘッダー必須説明
Content-Type必須application/x-www-form-urlencoded

Authorization Code フロー

リクエストボディ

パラメータ必須説明
grant_typestring必須authorization_code を指定
codestring必須Authorization Code エンドポイントから取得した認可コード
redirect_uristring必須Authorization Code 要求時に指定した redirect_uri と同一値
client_idstring必須クライアントID
client_secretstring必須クライアントシークレット(バックエンド間通信で安全に送信してください)

リクエスト例

curl
curl -X POST https://auth.agenticstar.jp/federation/auth/v1/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code" \
-d "code=AUTH_CODE" \
-d "redirect_uri=https://app.example.com/callback" \
-d "client_id=my-client" \
-d "client_secret=my-secret"

Client Credentials フロー

リクエストボディ

パラメータ必須説明
grant_typestring必須client_credentials を指定
client_idstring必須クライアントID
client_secretstring必須クライアントシークレット

サービスアカウント機能が有効な場合、クライアントに紐づけられたテナント情報がトークンに含まれます。

リクエスト例

curl
curl -X POST https://auth.agenticstar.jp/federation/auth/v1/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=my-client" \
-d "client_secret=my-secret"

成功時(200 OK)

JSON
{
"access_token": "eyJhbGciOiJSUzI1NiIs...",
"id_token": "eyJhbGciOiJSUzI1NiIs...",
"expires_in": 3600,
"refresh_expires_in": 86400,
"refresh_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "Bearer",
"scope": "openid chat:all"
}

エラーレスポンス

ステータスエラーコード説明
400invalid_request必須パラメータが不足、または形式が不正
401invalid_clientクライアント認証に失敗(ID / Secret が不正)
400invalid_grantAuthorization Code が無効、または有効期限切れ
400invalid_scopeリクエストされたスコープが無効

Refresh Token

POST /auth/v1/token (refresh_token grant)

Refresh Token を使用してアクセストークンを更新します。

リクエストボディ

パラメータ必須説明
grant_typestring必須refresh_token を指定
refresh_tokenstring必須Token エンドポイントから取得した Refresh Token
client_idstring必須クライアントID
client_secretstring必須クライアントシークレット

リクエスト例

curl
curl -X POST https://auth.agenticstar.jp/federation/auth/v1/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=refresh_token" \
-d "refresh_token=REFRESH_TOKEN" \
-d "client_id=my-client" \
-d "client_secret=my-secret"

レスポンス例

JSON
{
"access_token": "eyJhbGciOiJSUzI1NiIs...",
"id_token": "eyJhbGciOiJSUzI1NiIs...",
"expires_in": 3600,
"refresh_expires_in": 86400,
"refresh_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "Bearer",
"scope": "openid chat:all"
}

UserInfo

GET /auth/v1/userinfo

有効なアクセストークンを使用してユーザー情報を取得します。テナント経由の認証の場合、OIDC 標準クレームに加えて idp ブロックに IdP のユーザー情報が含まれます。

リクエストヘッダー

ヘッダー必須説明
Authorization必須Bearer <access_token>

リクエスト例

curl
curl https://auth.agenticstar.jp/federation/auth/v1/userinfo \
-H "Authorization: Bearer <access_token>"

レスポンスフィールド

フィールド説明
substringユーザー ID(OIDC 標準)
idpobjectIdP から取得したユーザー情報(テナント経由の場合のみ)
idp.substringIdP 側のユーザー ID
idp.namestring表示名
idp.preferred_usernamestringユーザー名(メールアドレス)
idp.emailstringメールアドレス
idp.email_verifiedbooleanメールアドレスが検証済みか
idp.organizationobject所属組織(id と label を含む)
idp.jobobject役職(id と label を含む)
idp.biostring自己紹介

レスポンス例

JSON
{
"sub": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"idp": {
"sub": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "yamada_taro",
"preferred_username": "taro.yamada@example.com",
"email": "taro.yamada@example.com",
"email_verified": true,
"organization": {
"id": "org-001",
"label": "Example Corp."
},
"job": {
"id": "job-001",
"label": "Engineer"
},
"bio": "Software engineer"
}
}

エラーレスポンス

ステータスエラーコード説明
401invalid_tokenトークンが無効または有効期限切れ
502bad_gatewayIdP からのユーザー情報取得に失敗

JWKS

GET /auth/v1/jwks

JWT 署名検証用の公開鍵セット(JWKS)を取得します。ID Token や Access Token の署名検証に使用してください。

リクエスト例

curl
curl https://auth.agenticstar.jp/federation/auth/v1/jwks

レスポンス例

JSON
{
"keys": [
{
"kty": "RSA",
"kid": "key-id-1",
"use": "sig",
"n": "modulus...",
"e": "AQAB"
}
]
}

Revoke

POST /auth/v1/revoke

アクセストークンや Refresh Token を失効させます。

リクエストヘッダー

ヘッダー必須説明
Content-Type必須application/x-www-form-urlencoded

リクエストボディ

パラメータ必須説明
tokenstring必須失効させるトークン(Access Token または Refresh Token)
client_idstring必須クライアントID
client_secretstring必須クライアントシークレット

リクエスト例

curl
curl -X POST https://auth.agenticstar.jp/federation/auth/v1/revoke \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "token=ACCESS_TOKEN" \
-d "client_id=my-client" \
-d "client_secret=my-secret"

成功時は 204 No Content が返されます。

Logout

GET /auth/v1/logout

RP-Initiated Logout エンドポイント。ユーザーセッションを終了し、指定の URI にリダイレクトします。ウェブブラウザで直接アクセスしてください。ログアウト確認画面が表示されます。

クエリパラメータ

パラメータ必須説明
id_token_hintstring推奨ID Token。クライアントの特定に使用されます(JWT の azp クレームから client_id を抽出)。client_id パラメータが指定されていない場合に必要です。
client_idstringクライアント ID。id_token_hint の代わりにクライアントを直接指定できます。両方指定した場合はこちらが優先されます。
post_logout_redirect_uristringログアウト後にリダイレクトする URI(事前登録が必要)
logout_hintstringログアウト対象のヒント情報
statestringリダイレクト時に返却される状態パラメータ
ui_localesstringログアウト画面の表示言語(例: ja)
備考

id_token_hint または client_id のいずれかでクライアントを特定する必要があります。どちらも指定されていない場合、エラーページにリダイレクトされます。

リクエスト URL 例

https://auth.agenticstar.jp/federation/auth/v1/logout?\
id_token_hint=eyJhbGciOiJSUzI1NiJ9...&\
post_logout_redirect_uri=https%3A%2F%2Fapp.example.com%2F&\
state=abc123

JWT 仕様

ID Token および Access Token は JWT 形式で発行されます。JWT は署名済み(署名アルゴリズム: RS256)で、header.payload.signature の3部から構成されています。

JWT 構造

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyLWlk....signature_part
JSON
{
"alg": "RS256",
"typ": "JWT",
"kid": "key-id-1"
}

Payload(クレーム)

以下のセクションで詳細なクレーム一覧を参照してください。

クレーム一覧

標準クレーム

クレーム説明
substringサブジェクト ID。認証基盤内でユーザーまたはサービスアカウントを一意に識別する UUID
issstringIssuer。トークン発行元(https://auth.agenticstar.jp/federation)
audstringAudience。トークンの対象(クライアント ID)
expnumber有効期限(Unix タイムスタンプ)
iatnumber発行日時(Unix タイムスタンプ)
azpstringAuthorized Party。トークンを要求したクライアント ID
scopestring付与されたスコープ(スペース区切り)

テナント情報(tenant.*

テナント(企業 / SaaS)に関する情報です。Access Token および ID Token にネスト構造で含まれます。

クレーム説明トークン
tenant.idstringテナント IDAT / IDT
tenant.typestringenterprise または saasAT / IDT
tenant.endpointstringテナントのエンドポイント URLAT / IDT

IdP プロフィール(idp.*

IdP(企業認証基盤)から取得したユーザー情報です。ネスト構造で含まれます。CC フローでリンクユーザーが設定されている場合も同じ構造で出力されます。

クレーム説明トークン
idp.substringIdP ユーザー IDAT / IDT
idp.preferred_usernamestringIdP ユーザー名(メールアドレス)AT / IDT
idp.display_namestring表示名IDT
idp.emailstringメールアドレスIDT
idp.organizationstring所属組織AT / IDT
idp.jobstring役職AT / IDT
idp.biostring自己紹介AT / IDT

ロール

クレーム説明
realm_access.rolesstring[]ユーザーに付与されたロール(例: user, admin, developer)

JWT Access Token Payload 例

JSON
{
"sub": "550e8400-e29b-41d4-a716-446655440000",
"iss": "https://auth.agenticstar.jp/federation",
"aud": "my-client",
"exp": 1704070800,
"iat": 1704067200,
"azp": "my-client",
"scope": "openid chat:all",
"tenant": {
"id": "enterprise-a",
"type": "enterprise",
"endpoint": "https://enterprise-a.example.com"
},
"idp": {
"sub": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"preferred_username": "user@enterprise-a.com",
"organization": "Enterprise A Corp.",
"job": "Engineer",
"bio": "Software developer"
},
"realm_access": {
"roles": ["user"]
}
}

スコープ

スコープ一覧

以下は主要なスコープです。全一覧は API リファレンスを参照してください。

Chat API

  • chat:exec - チャット実行
  • chat:history - チャット履歴閲覧・削除
  • chat:file - ファイル操作
  • chat:all - すべての chat スコープ

MCP / A2A

  • mcp:exec - MCP 経由のタスク実行
  • a2a:exec - A2A 経由のタスク実行

スコープ制御の仕組み

Console でクライアントにスコープを割り当てることで、トークンに含まれるスコープが決定されます。ユーザーのロールで許可されたスコープのみがトークンに付与されます。

スコープ割り当てフロー

Console の Client Scope Role Mapping でクライアントにスコープを割り当てます。トークン生成時、以下の条件で実際に付与されるスコープが決定されます:

  • クライアントに割り当てられたスコープ
  • ユーザーのロール(user, admin, developer など)が許可するスコープの交集合
  • 結果として、ユーザーのロール範囲内の必要なスコープのみがトークンに含まれます

エラーコード

OAuth 2.0 / OIDC エラー

エラーコード説明対応方法
invalid_request必須パラメータが不足、または形式が不正リクエストパラメータを確認してください
unauthorized_clientクライアントに権限がない、またはクライアント ID が不正クライアント ID と設定を確認してください
invalid_clientクライアント認証に失敗(ID / Secret が不正)クライアント ID とシークレットを確認してください
invalid_grantAuthorization Code が無効、有効期限切れ、または既に使用済みAuthorization Code を再取得してください
invalid_scopeリクエストされたスコープが無効、または未割Console でクライアントにスコープを割り当ててください
server_error認証基盤との通信エラーなど、サーバー側のエラーしばらく待ってから再度お試しください。問題が続く場合はサポートに連絡してください
invalid_tokenトークンが無効または有効期限切れ新しいトークンを取得してください

HTTP ステータスコード

ステータス説明
200 OKリクエストが成功
204 No Contentリクエストが成功(レスポンスボディなし)
302 Foundリダイレクト(Authorization / Logout エンドポイント)
400 Bad Requestリクエストが不正
401 Unauthorized認証に失敗、またはトークンが無効
403 Forbiddenリクエストが禁止されている
500 Internal Server Errorサーバー内部エラー