1. 概要
A2A(Agent-to-Agent)連携は、お客様のAI環境からSpeeda AI Agentを呼び出して利用するための接続方式です。Speeda AI Agentは、A2Aプロトコルに準拠したリモートエージェント(A2Aサーバー)として動作します。接続方式は大きく2種類に分かれますので、自社の環境に応じた方式をご確認ください。
| マーケットプレイス経由の接続 | JWT認証による直接の接続 | |
|---|---|---|
| 対象 |
|
自社開発のA2Aクライアント、その他A2A対応システム |
| 認証 | プラットフォーム側が認証を自動処理 | 公開鍵暗号方式によるJWT認証をお客様側で実装(別途、鍵管理が必要) |
| 接続方法 | → 現在準備中 | → 2. 認証フロー概要〜4. A2Aの利用を参照 |
A2Aプロトコルとは
A2Aプロトコルは、異なるAIエージェント同士が相互に通信・連携するためのオープンプロトコルです。
通信はJSON-RPC 2.0 over HTTPSで行われ、エージェントの能力・接続先は Agent Card(JSONメタデータ)として公開されます。
- A2A 仕様 — 仕様書・SDK・サンプルコード
- A2A Protocol Specification — プロトコル仕様の全文
- ADK — Introduction to A2A — Google Agent Development Kit での利用ガイド
接続先URL一覧
| 項目 | URL |
|---|---|
| Agent URL | agent.ub-speeda.com/a2a/speeda_agent |
| Agent Card URL | agent.ub-speeda.com/a2a/speeda_agent/.well-known/agent-card.json |
| Token URL | datafeed.ub-speeda.com/token |
2. 認証フロー概要
A2A連携では、データフィードAPIと共通の公開鍵暗号方式によるJWT認証を採用しています。
以下の手順でアクセストークンを取得し、Speeda AI Agentへのリクエストに利用してください。
3. Clientの登録
3.1 キーペアの生成
利用者側で次の形式の秘密鍵と公開鍵を生成してください。
形式: ECDSA
曲線: P-256(prime256v1)
公開鍵フォーマット: PEM形式
$ openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:prime256v1 -out private_key.pem
$ openssl pkey -in private_key.pem -pubout -out public_key.pem
3.2 生成した鍵の確認
実行結果にASN1 OID: prime256v1 という文字が含まれていれば正しく生成できています。
含まれていない場合は生成時のコマンドが誤っていないか確認し、再実行してください。
$ openssl ec -pubin -in public_key.pem -text -nooutPublic-Key: (256 bit)
pub:
---- 略 ----
ASN1 OID: prime256v1
NIST CURVE: P-256
3.3 公開鍵の送付
生成した公開鍵(public_key.pem)を、当社へご連絡ください。
当社は受領した公開鍵を登録し、以下の情報を利用者にご案内いたします。
client_id:このクライアント専用の識別子
kid:JWTヘッダーに設定するキー識別子(公開鍵と紐づく識別子)
以降の認証リクエストの手順で、この client_id を iss および sub に指定してJWTを生成してください。
4. A2Aの利用
4.1 JWTの生成
以下の内容を含むJWTを作成し、秘密鍵で署名してください。
なお、JWTに署名する際は、アルゴリズムに ES256 を指定してください。
JWT ヘッダー(例)
{
"alg": "ES256",
"typ": "JWT",
"kid": <当社が発行し通知したkid>
}JWT ペイロード(例)
{
"iss": <当社が発行し通知したclient_id>,
"sub": <当社が発行し通知したclient_id>,
"aud": "https://datafeed.ub-speeda.com/token",
"iat": 1680000000,
"exp": 1680000600,
"jti": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}| フィールド | 内容 |
|---|---|
| aud | https://datafeed.ub-speeda.com/token を固定で指定 |
| iat | JWT発行時刻(UNIXタイムスタンプ) |
| exp | JWTの有効期限(UNIXタイムスタンプ。5分以内が推奨) |
| jti | JWTの一意識別子。UUIDなどでリクエスト毎にランダム生成してください。 |
4.2 認証リクエスト
生成したJWTを以下の形式で /token エンドポイントにPOSTしてください。
リクエスト例
POST https://datafeed.ub-speeda.com/token
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&
client_id=<your-client-id>&
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&
client_assertion=eyJhbGciOiJFUzI1NiIs...レスポンス例
{
"access_token": "xxx.yyy.zzz",
"token_type": "bearer",
"expires_in": 300
}| パラメータ | 内容 |
|---|---|
| grant_type | 固定値:client_credentials |
| client_id | 当社から通知された client_id |
| client_assertion_type | 固定値:urn:ietf:params:oauth:client_assertion-type:jwt-bearer |
| client_assertion | クライアント秘密鍵で署名したJWT |
5. 注意点・制限事項
access_token の有効期間は短く設定されています。必要に応じて再取得してください。
秘密鍵は厳格に管理し、第三者に漏洩しないようお願いいたします。
コメント
0件のコメント
サインインしてコメントを残してください。