[Web-bot-auth] Re: Interest in the human-principal layer above bot authentication
Dick Hardt <dick.hardt@gmail.com> Mon, 03 August 2026 17:38 UTC
Return-Path: <dick.hardt@gmail.com>
X-Original-To: web-bot-auth@mail2.ietf.org
Delivered-To: web-bot-auth@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id C65C8122DCB81 for <web-bot-auth@mail2.ietf.org>; Mon, 3 Aug 2026 10:38:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1785778683; bh=WydJncuUjaBJYGUmI0iEpJaLtqSSqw7nyTWbRPCnvvc=; h=References:In-Reply-To:Reply-To:From:Date:Subject:To:Cc; b=PWFFoNyTAoSLIlyngRV6poY+6IW8ACkt5H4BJgdE19zQ5iZlDOhLWN81ao35oZTW8 GlGrp2qFmCMOfqInPJOLQJopw5iZn6faL028GRVqdtgSTOmW4db8qkOXcLOq+l7ee6 ELQwkCB25tiJ2ShQTuzvjFRIY2YdLvVd//X/111s=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IyMsJVrN7WBa for <web-bot-auth@mail2.ietf.org>; Mon, 3 Aug 2026 10:38:02 -0700 (PDT)
Received: from mail-ot1-x332.google.com (mail-ot1-x332.google.com [IPv6:2607:f8b0:4864:20::332]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id DC0AF122DCB45 for <web-bot-auth@ietf.org>; Mon, 3 Aug 2026 10:38:02 -0700 (PDT)
Received: by mail-ot1-x332.google.com with SMTP id 46e09a7af769-7e9eaf04bfaso1332523a34.1 for <web-bot-auth@ietf.org>; Mon, 03 Aug 2026 10:38:02 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1785778682; cv=none; d=google.com; s=arc-20260327; b=FK6zpl+9UbYD4CrQj5pbTh4IqM3ykXRxm6CDEJ7vvNNuHewR/X5gybleQ7QaLJOknz zR6iFjN3nIUDneWTFGJwRM2pU7j9pW9mYdFjI6MGLXP8h3zV52PWgYszbi60uVYppaqu TwEMTNzBc7Gl7QXQoZ50pKGnR+eA0LMsCMgGShrrZgwm2HkfZiWvB2XgEQh0mPYhr1Z3 xkuHzP2t8DDPHwGwnuD4Ym5Fq2cV5tp0Iw5C4/zSrMv10AQHD1dbdsaKHY80KpS8wLeB e89cQBGo1kxUyMK4l2REmN+fbN75rUJ5FkqUS54MCm4a/pd++JsHPGEvJTm1RXBYIX2D I/5Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:dkim-signature; bh=WydJncuUjaBJYGUmI0iEpJaLtqSSqw7nyTWbRPCnvvc=; fh=OlEw/HyKV+xQZ4l6uAjkm54NIm3xlJ57nuzpektVzG8=; b=rHOFhuXEDCLIfgMzASq6eJmplyId+c7qGQ1L0WwUo0dsIOLN3Su9LQyNaBiK2wF64D pdiLkN5XvVA7sWPZU3+qhqslma9sWeobCkDVMo4wi2mSwItWL8lWnldN3omjBGMfdGuS 1QuszEN/JI2vqRvuuiNKkDvGjhAjbIG0dyukTqjv2IicqW/qHukUggeerpMgWjoZRZXd mZKCThUt1WA/kqdz/kntL6NJTd+ttBMg/niQsJlWWf0Og240kY4vFrcTeLbHb+t5hCDV h2yx54ZM6rsR4GKkpGjn7VOmXmNMJV/g+ozT266I0Hx9FApFCgqSs5YHEeQp3S28ze7s KXqw==; darn=ietf.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785778682; x=1786383482; darn=ietf.org; h=content-type:cc:to:subject:message-id:date:from:reply-to :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to:content-type; bh=WydJncuUjaBJYGUmI0iEpJaLtqSSqw7nyTWbRPCnvvc=; b=HSbIOKLZxqLKOOlNcGgsXYuETZuCphqdzZUZmiDKjoeB3hopgiSGqlqrETeoh6B7gw zP1en26D9l8vmgSrJnq0xEpyBYCmUj/zYDLRu7MYQkPL4G42NiP2GBxwgvTweA6v4BBg uyx5S0EC3MufaSPw7H6CsFtiE+qx3+cOrpgNvE9Y72p+FXtr2PY07bB6eGQckgfZZXee zJ1IaCs/lLTaLDQhLMTpze0YnjfiF19CQ2ChIxRrlsDDOyUsGui0mIDqldn3/uMUJQ5R ncta7amh/9YoaUyq/OuHeR8wLKaVZg9xHA56bfw3MVMYCbpWr+DFBv8hNNIvQpacy4xp pPbQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785778682; x=1786383482; h=content-type:cc:to:subject:message-id:date:from:reply-to :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=WydJncuUjaBJYGUmI0iEpJaLtqSSqw7nyTWbRPCnvvc=; b=lNbj15F8r77WIgYal/nOacP70EBhpwoGgcmmMwsoqBDoojz1e7skJn28WUFjxayjo+ HKLEgpA+p9UIfUxfU3k7r3pG7WFtWLpF9TtKZYQBZ5wU+9p8R246kVcCm2HzGcswPv0N OYF/ToPQgeOB4IAoQpLtxN9NXXkg32VUHuN3zeqbqOc2Id2hJv3jPdSO4HoktLKh66IG SbqzHa6Zvy8GLH9pFpvf5wH9nO+cULWNRKuYQS2emfiaeMQ+2Z39rfqam0LwG6dY8w4W MWKygC3jHtRyBWKSgZGPd+YUT4wrzWpk1YlDD4iFqwzcfcslzXhuIGdIWaBhC8fphm7i Ak7g==
X-Gm-Message-State: AOJu0YzPf+Fdcu0LX0f5d9VTv1StYzM7mACL9dA936z8tkOZAiute5mh XW5668XYDgrodP29uZHfoboStqGJjxIugp4+GgozJXbwzF6vH9RQk8V5D2Pc+xkM+TbWmqu56TN msGNKe92ayaKYiB+LQHmnayasBSKMAbs=
X-Gm-Gg: AR+sD10m8ZEsYFiCk72L0Fbk4rfL1sgQySf7MtCzkO+1mzGwjNnGLYBHOWYW8a8+VSx 15fQH4YcZKdJbjq0xrsr+ONgF3A7FMsNsJtcYvFCJ4o9nru9kOL70+edNdORgIpEIUUd3o1809q 13ZobRkeo6EycIsM+zrHznz9uSInQvLTo/XSe2ylp4FcAFK4miPHiECSvn+ybuT5dWtkNb1Q5gx PWvrKrnnM6NC7u/vjxu1dna43NQXsT5OOuTUraJcIiyJVqYkq30P8vFUDBuBTJ6bIaESy+Q10+6 UfPnVlZMM/V2EKxJb1Dxh4KoR1PSkV2uOl+LJG9j5oKJ3fE5JqUbWtnUX36bGwQRKSp1PmX8gk5 9
X-Received: by 2002:a05:6830:25d4:b0:7d7:ea9f:c0f9 with SMTP id 46e09a7af769-7f19687ea64mr18648245a34.0.1785778682138; Mon, 03 Aug 2026 10:38:02 -0700 (PDT)
MIME-Version: 1.0
References: <CAJ9=2Zt7WytSjcfJP034DYEP-1Yrti0kjw_cBMCOgW6rXbbBgA@mail.gmail.com>
In-Reply-To: <CAJ9=2Zt7WytSjcfJP034DYEP-1Yrti0kjw_cBMCOgW6rXbbBgA@mail.gmail.com>
From: Dick Hardt <dick.hardt@gmail.com>
Date: Mon, 03 Aug 2026 18:37:25 +0100
X-Gm-Features: AUfX_mzEJ3v4phIveB14rPwFmxhShTgD6PhP39XvEWgLqwbTAWGyjQKUoWN_NZY
Message-ID: <CAD9ie-v24Sx7V4U+TiWFxnnz7osbQ9Js3RjBHftcBMsCrAAkGQ@mail.gmail.com>
To: Joshua Ashcroft <josh.ashcroft@gmail.com>
Content-Type: multipart/alternative; boundary="000000000000ff1448065827ff23"
Message-ID-Hash: RCG2IEYGGCKT4XDLU7HXVWWHCFFMVELD
X-Message-ID-Hash: RCG2IEYGGCKT4XDLU7HXVWWHCFFMVELD
X-MailFrom: dick.hardt@gmail.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: web-bot-auth@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Reply-To: Dick.Hardt@gmail.com
Subject: [Web-bot-auth] Re: Interest in the human-principal layer above bot authentication
List-Id: Authentication of non-human users to human-oriented Web sites <web-bot-auth.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/web-bot-auth/PrlL4QWeOVtkJqVX4TQv2zY-WEw>
List-Archive: <https://mailarchive.ietf.org/arch/browse/web-bot-auth>
List-Help: <mailto:web-bot-auth-request@ietf.org?subject=help>
List-Owner: <mailto:web-bot-auth-owner@ietf.org>
List-Post: <mailto:web-bot-auth@ietf.org>
List-Subscribe: <mailto:web-bot-auth-join@ietf.org>
List-Unsubscribe: <mailto:web-bot-auth-leave@ietf.org>
Hi Joshua In AAuth, the mission is the wrong place for the user authentication mechanism to be recorded as there is no token. A resource that wants to know the authentication strength of the user can request the `acr` claim or something like that from OpenID Connect in the resource token. It will then get an auth token that binds the authentication mechanism to the user identity and to the mission identifiers. AAuth is reusing the OpenID Connect authentication claims, and there is work in the IPSIE WG to drive more standardization on those claims and how to request them. /Dick On Mon, Aug 3, 2026 at 6:57 AM Joshua Ashcroft <josh.ashcroft@gmail.com> wrote: > Blake, Kaveh, Dick, Nick, > > Joining this late, but the thread names a seam I have been building > against for some months, and I think I can add a fourth question and > one distinction. > > The split as stated -- which key signed this, which operator stands > behind it, did the subject consent -- is the same decomposition I > arrived at, from the authorization side rather than from consent or > from the name system. Signature verification, operator resolution, and > the authority decision are three separate layers in what I run, and > keeping them apart is load-bearing: the thing I find myself saying > most often is that verifying an agent's key tells you nothing about > what it may do. Blake's test seems right. This is the third direction > the same seam has fallen out of. > > One difference worth stating rather than letting it be assumed. My > third layer is not your third question. Blake's consent is authored by > the data subject, a third party to the agent, for a read of their own > attributes. Mine is authored by the operator, authorising their own > agent to act. Same word, different principal, and they no more > substitute for each other than one and two do. > > Which brings me to a fourth question that does not reduce to any of the > three. > > May this agent, acting for operator A, take this action inside > operator B's domain, with scope, expiry and revocation, where B did > not issue A's identity and does not administer it? > > That is not question three. The granting party is neither the data > subject nor the agent's own principal. And it is not question two: an > operator anchor tells you who stands behind the agent in general, not > what authority a different operator extended to it for a particular > engagement. > > Dick, your answer to Blake on 12 July is what makes me think this > composes rather than needing new machinery. If the AS issues only > where the grant has been made, it is verifying an authority someone > else signed rather than originating the decision. That is the shape I > have implemented: the granting operator signs the delegation, and the > party enforcing it is neither the issuer of the agent's identity nor > the author of the grant. If AAuth's four-party model already covers > that, I would rather build on it than beside it, and I would value > being told whether Person or Mission is the right carrier, or whether > it belongs at the payload layer with Blake's work instead. > > Kaveh, on the RDAP anchor: I think it is the right shape for question > two, and the no-issuer-to-trust property is doing real work. The > boundary I would draw is the one you drew yourself, that RDAP tells > you who is accountable for the infrastructure the agent runs on. For > agents on shared cloud infrastructure that resolves many unrelated > operators to a single abuse contact, and it stays silent on what > authority any of them extended to a particular agent. So I read it as > answering question two at infrastructure granularity, with a > sub-question underneath that registration data structurally cannot > reach. Not a criticism of the anchor; an argument that question two > has two floors. > > Blake, on your 9 July point -- once an agent can drive a browser, a > click inside its execution context is not evidence of a human > decision. I agree, and it is the reason I moved authority decisions > off the agent's machine entirely. When the key and the policy both > live where the agent runs, the agent can sign what it likes and > rewrite what it is permitted to do, so operator control is advisory. > Putting policy behind an authenticated operator session the agent > holds no credential for is what makes it enforceable. > > That does not fully answer you and I do not want to pretend it does. > If the agent can drive the operator's own logged-in browser, it can > click through my approval too. Out-of-band signing with a key the > agent cannot reach is the only complete answer. > > What I would add is that two different properties are being called > consent here, and separating them may matter as much as the > three-question split does: > > 1. Evidence that a human decided. This is what you are protecting, and > it requires the out-of-band key. > 2. Binding of accountability, meaning who answers for what the agent > did. This requires a verified legal principal and survives the > approval being automated. > > Dick's Person is defined as the legal entity that bears accountability > for the agent's conduct, which is the second property, and it does > real work even where the first is unavailable. A principal who sets an > agent running is answerable for what it does whether or not they > approved the specific act. That is the ordinary position for human > agents and I do not see why it changes here. > > For disclosure of a subject's attributes I think you need the first > property and there is no substitute. For actions taken under an > operator's authority, I would argue the second is often the one that > matters. What makes an authorization worth anything after something > has gone wrong is a non-repudiable binding to an entity that can be > held to it, not proof of a mouse click. Which is also an argument that > question two has to be verified rather than self-asserted, since the > whole property rests on the operator being a real and identifiable > entity. > > If that is right, the practical shape is to tier it rather than pick > one. Routine reversible actions carry the accountability binding; > high-stakes or irreversible ones additionally require an out-of-band > signature the agent cannot produce. Two things I would want to get > right about that. It has to be a property the verifier requires and > can check, not a level the operator declares about itself, or it > collapses back into self-attestation. And it appears to be a different > axis from how well the operator is verified: a well-identified company > can still click through in-session, and a hardware-backed key does not > tell you who is holding it. > > To be concrete about where I intend to take this, and clear that I > have not built it yet: the direction I am planning is a standing grant > approved behind a hardware-backed authenticator, in practice a > passkey, with a freshness requirement on the approval rather than on > the session. An agent driving the operator's browser can raise that > prompt but cannot satisfy it, which gets the out-of-band property > without a second device and without per-request friction, since the > grant is standing rather than per-call. That is a plan rather than a > shipped feature today and I would rather say so. > > Nick, the Shopify example is useful, and the part I would draw out is > what it costs. Operator-vouched bearer capability with the agent's own > key absent is a clean demonstration that the layers are separable. It > also means that with a thirty-day credential and no per-request agent > identity, revoking a single misbehaving agent is not expressible -- > you can only revoke the operator's credential and take every agent > behind it down at once. That is the price of answering two without > one, and it is the case my work has had to handle. > > For context on where I am coming from: I built the > operator-holds-their-own-key model first, ran it, and moved off it to > server-side custody with per-organization key isolation and audited > provisioning. Happy to write up why if it is useful to anyone. The > short version is that keeping key and policy on the agent's own > machine makes operator control advisory rather than enforceable, which > matters more for actions than for reads. > > Two questions to close. > > Dick, can a Mission express how strongly its approval was > authenticated? The fields I can see carry approver, agent, approval > timestamp and authorized tools, so there is a record of when it was > approved but not of how. A Mission approved behind a hardware key and > one approved by a click in the agent's own browser look identical to a > relying party, and under the argument above those are different > assurances even though the resulting authority is the same. > > I ask because my own delegations have the same hole. They carry scope > and expiry and are signed by the operator ahead of any request, but > nothing in them records the strength of the approval act, so a > verifier cannot make the distinction either. If that is a gap in both, > it may be worth a field rather than a convention. > > And more broadly: if anyone has a better mechanism than a > hardware-backed standing grant for the case where the operator is > simply not present at the moment the agent acts, I would like to hear > it. That unattended case is the one I keep failing to solve cleanly. > > Best, Joshua Ashcroft > > _______________________________________________ > Web-bot-auth mailing list -- web-bot-auth@ietf.org > To unsubscribe send an email to web-bot-auth-leave@ietf.org >
- [Web-bot-auth] Interest in the human-principal la… Blake
- [Web-bot-auth] Re: Interest in the human-principa… Songbo Bu
- [Web-bot-auth] Re: Interest in the human-principa… Srecko Jovancevic
- [Web-bot-auth] Re: Interest in the human-principa… Dick Hardt
- [Web-bot-auth] Re: Interest in the human-principa… Thibault Meunier
- [Web-bot-auth] Re: Interest in the human-principa… ~blake
- [Web-bot-auth] Re: Interest in the human-principa… Dick Hardt
- [Web-bot-auth] Re: Interest in the human-principa… ~blake
- [Web-bot-auth] Re: Interest in the human-principa… Dick Hardt
- [Web-bot-auth] Re: Interest in the human-principa… Blake
- [Web-bot-auth] Re: Interest in the human-principa… Dick Hardt
- [Web-bot-auth] Re: Interest in the human-principa… Kaveh Ranjbar
- [Web-bot-auth] Re: Interest in the human-principa… Blake
- [Web-bot-auth] Re: Interest in the human-principa… Kaveh Ranjbar
- [Web-bot-auth] Re: Interest in the human-principa… Nick Mathews
- [Web-bot-auth] Re: Interest in the human-principa… Joshua Ashcroft
- [Web-bot-auth] Re: Interest in the human-principa… Nick Mathews
- [Web-bot-auth] Re: Interest in the human-principa… Dick Hardt
- [Web-bot-auth] Re: Interest in the human-principa… Nenad Vasic
- [Web-bot-auth] Re: Interest in the human-principa… Songbo Bu
- [Web-bot-auth] Re: Interest in the human-principa… Nenad Vasic
- [Web-bot-auth] Re: Interest in the human-principa… Nenad Vasic
- [Web-bot-auth] Re: Interest in the human-principa… Songbo Bu
- [Web-bot-auth] Re: Interest in the human-principa… Joshua Ashcroft
- [Web-bot-auth] Re: Interest in the human-principa… Joshua Ashcroft
- [Web-bot-auth] Re: Interest in the human-principa… Aurélien Brézun
- [Web-bot-auth] Re: Interest in the human-principa… David Schinazi