mandate_scope
HTTP 403 · Ludion-Error: mandate_scope
何が起きたか
Section titled “何が起きたか”署名は検証でき、Mandate も付いていました。しかしその Mandate は、この経路で行う行為を含んでいません。経路はある範囲(たとえば checkout)を求めており、あなたの Mandate の scope の一覧にそれがありませんでした。
支払いでは、Mandate の上限を超えたときにもこう答えます。上限は、支払いごとの金額(checkout_max)、通貨(currency)、日ごとの回数(per_day)です。金額はサイトが自分のカートから数え、Gate は Mandate の上限と突き合わせます。
サイトがこれを求める理由
Section titled “サイトがこれを求める理由”Mandate が役に立つのは、その範囲が守られるときだけです。閲覧を許されたエージェントは支払いを許されておらず、予約を許されたエージェントはアカウントの解約を許されていません。サイトは Principal 自身が引いた線を守ります。
- この行為を範囲に含む Mandate を、Principal に求めてください。範囲は
read、account、post、reserve、checkout、deleteです。 - 上限を超える支払いが要るなら、その上限を含む新しい Mandate を Principal に求めてください。支払いを分けて上限をくぐらないでください。日ごとの回数も数えています。
- Mandate を自分で広げないでください。Mandate は署名されており、どんな変更も署名を壊します。
3分で検証済みになる
Section titled “3分で検証済みになる”Ludion は Web Bot Auth を置き換えません。Web Bot Auth(RFC 9421)でリクエストに署名し、鍵ディレクトリを公開しているエージェントは、Ludion の Gate ではすでに VERIFIED(Depth 0)です。まだ署名していなければ、無料の Ludion CLI で次の手順を踏んでください。
3分は、この道の目標です。チェック DIV-1 として書いてあります。クリーンなコンテナで、init から VERIFIED まで180秒以内。
-
エージェントの身分(Diver)を作ります。Root 鍵はパスフレーズで封をされ、リクエストには署名しません。署名するのは短命の Session 鍵です。
Terminal window npx ludion init --name "My Agent" --contact mailto:you@example.com -
書き出された公開ファイルを、
Signature-Agentのオリジンに HTTPS で置きます。.well-known/http-message-signatures-directory(鍵。application/http-message-signatures-directory+jsonで返す)とcard(名乗り)です。自分のドメインで構いません。登録の受付が始まればdvr-….agents.ludion.aiにも置けます。 -
リクエストごとに署名します。次のコマンドは
Signature-Agent、Signature-Input、Signatureを付けたcurlをそのまま出力します。署名の寿命は 60 秒なので(仕様 §10.4)、毎回作り直してください。Terminal window npx ludion sign GET https://shop.example/checkout --curl -
自己診断します。
doctorは公開した鍵ディレクトリと Card を取りに行き、Gate が見るものを確かめます。リダイレクトなしの 200、Content-Type、ディレクトリに今の鍵があること、です。Terminal window npx ludion doctor
これで Gate はあなたのリクエストを VERIFIED と判定します。サイトがそれ以上に求めるもの(Depth、Ballast、Mandate)はその上に積むもので、それぞれ Gate のエラー に説明のページがあります。