Minutes IETF120: oauth: Tue 22:30
minutes-120-oauth-202407232230-00
| Meeting Minutes | Web Authorization Protocol (oauth) WG | |
|---|---|---|
| Date and time | 2024-07-23 22:30 | |
| Title | Minutes IETF120: oauth: Tue 22:30 | |
| State | Active | |
| Other versions | markdown | |
| Last updated | 2024-07-31 |
IETF 120 - OAUTH 22-07-2024 1300
Agenda
- Chairs update
- SD-JWT
- SD-JWT-VD
- Transaction Token
- OAuth for First party apps
- Client ID Metadata
- Encrypted Authorize Response
Minutes
Chairs
Rifaat:
Notewell and background, meeting tips, etc.
SD-JWT
Speaker: Yasuda
Overview & Refresher
Quick poll for any any new people? (none 😮)
Selective disclosure of claims via signing of salted hashes
Assumes 3 party model (Issuer, Holder, Verifier)
Trying to keep things simple
(illustration of an SD-JWT)
Notes that ~ is the separator at the end of a normal JWT
Payload is setup as array of strings with a special property _sd that
is an array of the claims (salted and hashed)
Thanks R. Barnes for improvement to terminology:
SD-JWT the think that is issued
SD-JWT+KB is the thing that is presented with key binding which shows
possession of key
Since last IETF
- Clear distinguising of issued vs presented
- better structure for JSON serialization to align with JAdES for
EIDAS - better explanation of salts in disclosuers
- mandated use of cnf for key binding
What's new in -10
Clarifications around recursive claims as well as editorial
What's next
Editorial fixes to respond to a few issues
Ask if we are ready for last call?
Chairs: ask for how many have reviewed -10 (around 5 by show of hands)
Chairs: ask for when issues will be resolved?
Brian: all open issues are editorial in nature, hoped to consider them
as a part of last call feedback
Chairs: think we should start last call, request additional reviews and
merging of editorial - should start that next week
Watson Ladd: Think that this work is actively harmful to end user
privacy - posits that sum total of information that has ever been
accumulated is shown
Chairs: any other comments, questions, concerns
John Bradley: This is far more privacy preserving than other options and
is here today - ZKPs are a way out from any practical use
Chairs: WG Last call next week
SD-JWT Verifiable Credentials (VCs)
Speaker: Brian Campbell
Intro and Background
Actually at IETF 120, and notes that taller than Kristina
Describing the data format and processing rules to express verifiable
credentials both with and without selective disclosure
Does not use the W3C VC Data Model (now with less RDF)
Example showing person identification data, including a hypothetical URI
(vct) that shows the type and structure of the credential
Example showing selective disclosure that shows that age is equal or
over certain thresholds with no other PII
Notes that cnf is in the clear since that is required for key
possession demonstration
Example breaking our clams, salts, encoding, etc. followed by an encoded
SD-JWT that only discloses nationality and age over as well as a key
binding JWT that shows possession of private key that was used
Example showing after validation what is available to the verifier
Changes since IETF 119
- Published -04
- Added a ref to status list doc
- Introduced type metadata
- Including schema type metadata
- Clarify that digital signatures are "one way" of securing things,
since some one might want strange constructions using ECDH + a MAC
without violating the draft - Reworked validation rules for x5c so that it is cleaner and better
to understand
Anticipate that metadata will evolve in future drafts
Open Issues
Many and out of hand - needs work and clarity
Chairs: Ask if there is a favorite issue
Brian: Pass
Current Work in progress
Current open pull request around claim and display metadata so that any
party can evaluate independently and make decisions around user display
of information
Going with a approach that uses an array of string values that map to
order of claims
Locale should be a map or subproperty still being determined
Questions
John B: Metadata is interesting - nothing in metadata is disclosed to
verifier?
Brian: intended for holder, but could be used by verifier - not secret
and is retrievable
John B: Might leak what claims are availabile - might be some reasons
not to disclose to the verifier
John B: Should disucss policies for wallets, etc? e.g. Some gov may only
want to permit disclosure or presentation to approved parties - if we
want interop we should consider issuer to wallet policies - could
metadata help with this?
Question - is metadata a way of annotating policy type info?
Brian: metadata could be, but debate around this and it is yet to be
determined
John B: we should figure this out
Brian: agree
John B: we should have an answer around privacy and consider it
especially in regards to metadata
Yaron: in the same area, "I have a VC, i use it to verify my age for the
scotch bof", do i have a protocol to see what info is requested or
required depending on the jursidication age requirements
Kristina: we do have some protocols on the OIDC side
Brian: This work is just token format related - that is out of scope for
this item and currently this group
Kristina: Some of this is available but protocols and query languages
are still being definied - trying to align these things with metadata,
etc.
Media types
Term VC defined and or popularized at W3C
For a variety or reasons there is desire to simplify and do related work
at IETF
W3C Started with potential rules that cascaded processing rules via
media types and structured suffixes
There was some disagreement at mediaman regarding multiple suffixes and
whether or not that is ok - most recent conclusion is that that is not
ok
Current statue for W3C media types:
application/vcapplication/vpapplication/vc+jwtapplication/vp+jwt
some collision possible on
application/vc+sd-jwtand related
Orie: as ART AD I am ready to assit in the exploration of media types
and what they can mean - session is this afternoon. If you show up at
mediaman it can be discussed
Transaction Tokens
Speakers
- George Fletcher
- Atul Tulshibagwale
Update since 119
See list of PR here.
- in PR #73 added text to clarify that trust domain only has one
logical transaction token service - a transaction token only makes
sense within one trust domain, so this text helps clarify
recap aside: additional service on top of server to server auth, etc
- in PR #86 added privacy considerations to ensure no PI or PII in
logging, etc - in PR #87 clarified responsibilities of servies to not modify
sub
oraud - in PR #89 clarified
audmust uniquely identify trust domain, also
thatsubis in the context of the audience - in PR #90 added text to require that transaction tokens create self
signed JWTs in cases when no appropriate token exists - definition
of those claims is out of scope for the spec - in PR #92/#103 clarified fields and claims and cleaned up IANA items
for registry - PR #100 clarifies
scopeand processing logic on cases where scope
might change
Brian: Question on name / auth details and that claim name is the same
as another - maybe there is another name that would not conflict
George: Intentionally same name as RAR (sp) because you are defining
what is specific and should be immutable, and this is supposed to be a
container to hold the immutable items of the transaction, used because
semantics were similar
Brian: maybe i need to look again, but feels like it should reuse claim
directly or define a new name
Justin R: similar concerns on alignment, if similar enough should just
reuse, if not, another name (that might be related) might be better -
requests a common place for these items
- PR #101 makes clear that
txnshould be unique and even though it
is required you can in edge cases use a fixed value of "N_A"
Justin R: isn't this just null or optional with extra steps?
George: from a processing perspective I prefer values
Justin R: a naive processor will just group fields by N_A
George: if feedback is switch to something else, will incorporate it
Justin R: looks like a valid value with semantics in the value that
require knowledge to process properly
argument over optionality proceeds
Hannes: suggest a non-colliding random 128 bit value or similar if a
value must be there
Brian: token exchange did this becuase there was no option for optional
- don't do that here
George: prefers a value there, open to options
Topic: should internal use cases require a self signed JWT
e.g. if you have an inbound SMTP request, should you get a transaction
token to identify the delivery and lock transaction to delivery only
current spec is to use a self signed JWT
or should this be out of scope?
Joseph: does this have to be a self-signed JWT or could it come from
someone else?
George: could leave out of scope to be defined elsewhere (with some
detailing of options that would clarify that it is out of scope) - a JWT
gets some level of integrity
Joseph: seems like it could be useful to have self-signed vs other paths
Issues without time
azd, rctx and do we need a full registry or otherwise?
Reuqest for thoughts
Question around metadata and discovery, or is it too deployment specific
(so that additional metadata specification is not requrired)
Yaron: think self-signed JWTs are a foot gun (the popular term of the
day award goes to this), simple JSON object should suffice
OAuth for First Party apps
Speaker: Aaron
Overview
developers want a better UX for first party apps
Today, peopler ignore RFC8252 and come up with terrifying workarounds
that ignore security best practices
this draft is intended to fit in with exising OAuth models and building
blocks
(diagram showing auth server to app flow that is noted by the presenter
to be missing time)
Authorization Challenge Endpoint is new endpoint that takes items that
would be on query string, takes POST, and handles things like erros and
redirection. Not intended to be end all be all
Since 119
Updates around DPoP including removal of ash claim
Enabled PAR for redirect to web
Clarified ability to include PKCE code challenges and that follow up
requests do not need to be form encoded
Required that auth_session is bound to a device
In progress implementations
- MS
- Yahoo
- Auth0 (in progress w/ no public docs yet)
- WS02
Interest from keycloak
Next steps
Ready for adoption?
Create an extension for passkeys (some in progress work there via Tim
Cappalli)
Chairs: Call for adoption poll
....
Chairs: looks great (23 for, 10 no opinion) - strong support, will be
followed up on list (with clarification from Deb)
Kristina: has emerged as ways of handling presentation of a credential
during credential issuance - useful for that use case?
Aaron: intended only for first party, not 3rd party with good
description as to why - that case would be better as a separate draft
due to security considerations
George: nuance is that when you think about presenting credentials,
those are things that you would only want to show very specifically - if
credential itself is protected maybe that would be different
Tony Nadlin: maybe a quesiton more for Tim....
Tim: maybe we should look at these use cases together
Client ID Metadata
Speaker: Aaron
Intro
Totally new, co-authored with Emilia Smith
OAuth Clients need to register with server for things like redirect,
scopes, logo, etc
Currently happens out of band or it is not possible to do in cases where
developer may not have relationship with server (e.g. federated services
like mastodon)
Dynamic Client Registration (RFC7591) doesn't tend to work in practice,
becase it is an NxN sized problem
Previously proposed looker-client-discovery for .well-known actually has
issues around multi-tenancy and then things become super mess
Proposed approch says you define a url that has your client id and has a
json doc with the metadata discovery
AS can fetch metata, can include redirect uris
Q&A
David: just getting a json file on a web server shouldn't be sufficient
to trust - point of .well-known is that it can have process, etc.
Aaron: this is a risk because of the way it is
Brian: I follow, but get real worried as an open vector since it is open
internet, etc. need to be very serious guiance at a minimum on what,
where, how to access, etc. might undermine trust since might not be on
the the same TLD, etc.
Aaron: once concern is whether or not URL is on same "host" - that could
be specified. Can't get around that anyone can spin up a web server and
host whatever they want
Brian: TLS and things help
Aaron: client id must be in doc - should not be able to create a doc -
best we can do in this world
Brian: also issue of anyone showing up with bad data or other attack
vectors
Aaron: some normal web guidance on not trusting arbitrary data. What
about dev clients, local and local, etc.
Mike: I put links in the chat, Orie had some metadata discovery stuff,
pages are up in SPICE on that topic, very close to what we deal with -
system to system for supply chain credentials -- similar use cases,
multiple parties exchyanging creds, need to know where do I go. We have
utilized did:web extensively but it has issues. Some issues have been
addressed by other folks, eg how to bind back into DNSSec so there may
not be a perfect solution but the closest I've seen is what is happening
in SPICE on Thursday, maybe we can join forces
Justin R: SSRF and other things are key and may be in doc already. There
is a bunch of half backed stuff like "structured client ids" and there
are also things like open id federation that are bringing semantics to
client ids. there are dragons here (he did say foot-gun) since now
layers of semantics are being applied to something intended to be opaque
Kristina: real like experince with this in VC world, which is why
original draft was there. What we have seen people do is sign the
requests, etc. Would absolutely like to see an aligned solution to this.
For security purposes, becuase the client id gets passed around you also
see different uri resolution approaches, etc. namespaces come up. this
is something that is being looked at in a lot of areas
Aaron: federation trust cert doesn't work. closest model is DNS.
Orie: there was a slide with .well-known and multi-tenancy - there are
other drafts that approach this problem, including disclosing keys. Is
this a universal solution, I want to see relationships....
Aaron: could put keys via jwks uri....
Aaron: handful of related implementations, solid, bluesky, etc
Chairs: clearly see a lot of interest with giant security holes.
concerning when there are big holes and early implementations are
already starting.
Encrypted Authorize Response
Speaker: Peter
Intro
Challenge is that while Authorization code flow with PKCE is great, it
requires and extra roundtrip which has impacts on cost at scale as well
as latency
What if we encrypt the authorize response .... neato
Key material to auth server on request, then auth server encrypts and
returns with that material
looking for feedback and noting that there are a bunch of security
concerns, especially around credential leakage, access token injection,
sender constraints / DPoP, refresh tokens, redirect uri validation
feel obvious, likely others have tried similar things, why or why
not....?
Filip: Do you envision this as a part of Authorization response
Peter: yes
Filip: done via JWT auth response mode (JARM)
Peter: will take a look, thanks
Brian: Filip is right as usual, however only difference is that this is
ephemeral rather than pre-registered keys. Naive analysis is that this
might not get the security properties you are after. Subtle bad things
emerge always, unfortunately
Peter: thanks!
Next steps
Digging in and looking further (especially at JARM)
AOB
Chairs: any other business? (seeing none) Thanks all, see you tomorrow!
IETF 120 - OAUTH 23-07-2024 1530
Agenda
- Identity Assertion Authorization flow with Aaron Parecki
https://datatracker.ietf.org/meeting/120/materials/slides-120-oauth-sessa-identity-assertion-authorization-grant-01 - OAuth Profile for Open Public Clients Neil Jenkins
https://datatracker.ietf.org/meeting/120/materials/slides-120-oauth-oauth-profile-for-open-public-clients - OAuth Status Assertions Leif Johansonn
https://datatracker.ietf.org/meeting/120/materials/slides-120-oauth-status-assertions-00 - OAuth Identity and Authorization Chaining Across Domains Brian
Campbell
https://datatracker.ietf.org/meeting/120/materials/slides-120-oauth-oauth-identity-and-authz-chaining-across-domains-01
Identity Assertion Authorization flow
Extend the SSO experience to API Access
AS will control the data shared in between the services through OAuth2
needs Token Exchange and JWT Authorization bearer token
The out of scope was how to get the token, in this case it will be
addressed in this draft. The initial token is obtained via an SSO flow.
The client goes to an Identity provider that then it provides a JWT
Authorization Grant oken with defined claims.
The custom JWT Authorization Grant token can be used to get an access
token, which may be too powerful. They are trying to make the JWT human
readable and simple, and the user id is small. There is no reason that
user id must be consistent between calls. The client then uses it in a
JWT Assertion Authorization Grant. The Token Response from the Resource
App's Authorization Server the same token as before.
The implementation status, Okta has a developer branch that people can
request access to. Atlassian also has a implementation prototype.
Additional companies are also under discussions.
From the enterprise view is where we tend to strive to outline, but
there are others. For example the client workflow becomes cleaner.
Atul: Pretty cool stuff. You would bind the JWT authorization request to
the client so that the IDP knows that the right requester was serviced.
The client is going to request different scopes for different workloads.
Yes there are multiple access tokens in scope and our recommenadations
are to only request the minimum permissions needed and not worry about
future requests.
George: If the subject identifier was given to lets say Slack or
whatever. The identifier collisions are then possible.
The JWT, which is a user ID in it is a user ID bound to the issuer.
George: Since it is not an ID token, we should update the draft to say
that.
George: If I can mint one of these authorizations granges, I'm going to
get SSI.
Justin: Asking to clarify the workflow. Why don't we hand back an access
token directly.
There are different trust zones.
None of the policy is not part of the spec, but it is a deeper
discussion.
OAuth Profile for Open Public Clients
The Problem: The IETF has spent a lot of effort over the years to refine
standard protocols. The problem is the authentication. At the moment it
is username and passport. That is not acceptible for 2024
Currently it hard-coded in most e-mail client. So last year Fastmail
organized a proposal off oAuth profile.
First we get an authorization server metadata, that issue is
untrustable.
So they are mandated Pixie using SHA-256 hashing of the code challenge.
This is predicated on autodiscovery and define scopes. The scopes using
J-Map capabilities, because that covers things like access to mail or
whatever.
This then flows into iPam or J-Map or whatever.
Kristina: We have prior experience in this space and defining one
profile led to a prolification of others. What was the criteria did you
come up with and why?
It is specifically for native clients as D-Pop is not mandeated because
it is only defined to work with HTTP.
Kristina: The actual details I am looking for is the level of security
that you are asking for, versus web or native applications.
Ben: I am for this subject but has huge reservation about dynmaic client
registartions on multiple levels. I'm trying to register with Google and
Microsoft and it has been impossible. There is a lot of red flags here
as well, as the need an access token requires dynamic registration which
is a catch22. I would rather call for OPEA which is simpler. then we are
bsically on the same level with IMAP, when we lock down username and
passwords.
Its simple transition if you look at it as a profile is very restricted
and basically may choose to ignore that.
Ben: Still not clear what clear why this is important, nor the value. It
is overly complex. My object is to make it more reliable.
Hannes: It looks like we need to look deeper into the implementation. If
the dynamic client registartion is like you request something and you a
token based on nothing.
Some of this is more not only is it simpler for the client, but whether
the server can leverage it at a finer grain to lock down or deny
activity.
Aaron: We are going to see more and more of this type of want. Where is
the best place for this activity to happen? Should it be in the OAuth?
Hannes: The answer has varied over time, but depending on the current
appetite may be within OAuth. This is worth an interim discussion for
the group.
OAuth Status Assertions
The status check can be done to the identity of the wallet, instead of
the identity of the individual. It can also flow into short-lived
credentials
The holder can request a status Assertion. You are basically presenting
a hash over the credential and the issuer can respond with a status. The
status format was nebulous but there is some clarity happening. Getting
status assertions can be multiple per a set of hashes and communication
is between the Holder and the status service.
There is an open issue regarding the use of D-POP and proof of
possession.
There are two type of responses, error and status. This a little bit of
ambiguity around when to use error and something they want to clarify.
Mahmoud: You are working on two workitems one regarding multiple
statuses at the same time?
Asked to comment on PR 61. The confusion that can arise with that can be
confused.
Mahmoud: Can I check the the status after the consuming?
Orie: When you get these status assertions come with addition metadata
which can include the Time To Live etc. Each status assertion has a
validity period.
Kristina: Not happy with the wallet fetches the status list, but knowing
the authors I have given up on the trying the persuade them. I suggest
that them outline in the same document a section that clearly outlines
when to use with each approach and that compines multiple mechanims. She
would not be in favor of keeping them separate.
The example of CRL and OCSP both exists that ship may of sailed.
Giuseppe: We designed a way to monitor status of credentials over time,
even outside of the scope of the user. There are good reasons for having
this as a status list, and may get too big.
John Bradley: Is skepticism of this approach. Most of the verifiers will
want this information stapled someway. Is it going to be done in this
draft or another.
Opinion is that this should be in this draft.
John: This is going to limit us to SDJW.
Atul: Is there a way for the requester to be authenticated.
This should be in the draft.
Justin Richer: Both of these violation the core privacy tenants that are
promoised by the SSI folks. We need to be very clear with the security
and privacy properties that they give.
There are different elements of picking your poison, and there is a good
privacy consideration section and everybody should review that.
Giuseppe: The first one is the status of the serach prove to the wallet.
We have also implemented this in Italy.
Richard: It is fair that this is re-inventing PKI. We have a better
handle on privacy than PKK ever did.
Hannes: We should reference previous related work. Specifically those we
are replicating.
OAuth Identity and Authorization Chaining Across Domains
Describes a Mechanism to perserve identity information and federate
authorization across Trust Domains that use the OAuth 2.0 Framework.
We describe a token client exchange in the first domain which returns an
authorization grant JWT. This is then presented to the Authorization
Server in the second domain. This then returns an access token for that
domain which can be presented to access a protected resource.
This was presented to the WIMSE working group. There is a lot of overlap
on concepts between the two. In draft 2 that stated not to use RFC8693's
request_token_type. Just trivial changes.
Open Issues & Requests were in the single digits. Like: sender
constraining mechanisms, allowing identity chaining with DPoP tokens.
The group spent a lot of time on sender constrained. DPoP and the burden
of proof. Getting to concensus is a difficult.
Checking the binding on inbound token of Token Exchange request. No
standard has been defined. It might be even feasible or make sense
depending on the deployment. The RS acting as the client doesn't have
access to the bound key. No solution proposed.
The binding of the token returned from Token Exchange could be MTLS or
have a DPoP header, which is implied by the standard, but not explicitly
written down.
The recieving of the access token request, also leaves a lot to the
imagination. The presense of the cnf claim might be sufficient to say
the thing is bound and suggest\require checking it.
On the access token request to the Authorizaton Server in the second
domain, implies that it should\could be bound.
In another scenario that is not covered is when the first Resource
Server itself acts as a proxy to the second domain for the client. The
text in the specification becomes unclear. Whether we want to do this,
raises the question of using the assertion that basically states trust
me.
Justin: The AS acting as client throws several wrenches into the works,
but we have seend this before with token binding.
IETF 120 - OAUTH 26-07-2024 1300
Note takers: Heather Flanagan, Justin Richer, George Fletcher
Chairs update – Rifaat Shekh-Yusef/Hannes Tschofenig (5 min)
Hannes took a picture. Brian's was better, but Brian says Hannes took a
good picture. 📸
Attestation-based Client Authentication - Paul (20 min)
https://datatracker.ietf.org/doc/draft-ietf-oauth-attestation-based-client-auth/
Focuses on how a client can push an attestation as to its authenticity
to an Issuer in the Issuer-Holder-Verifier model
In scope, the syntax and structure of the attestation and
proof-of-posession attestation
Out of scope is the protocol between the client instance and the client
backend service
Desire to avoid Dynamic Client Registration with the AS
- single client software would have many instances
Changes since IETF 119
- add text on the inability to rotate the Client Instance Key
- no longer using RFC7521 and
client_assertionand moved to using
new HTTP headers
** allows conveyance of the attestation/PoP-attestation to
endpoints other than the /token endpoint
new syntax removes squigglies!
DPoP Optimization - The DPoP Key and the Client Instance Key MUST be the
same
- the optimization would allow a DPoP proof header in place of the
Client Attestation PoP (based on some rules) - discussing the pros and cons on the list
Also concerns over naming (use of the term 'attestation') from the RaTS
working group
- alternate proposal-> Key-bound JWT Client Authentication
- add comments to issue #71
Discussion
Pieter: DPoP Optimization
- dangerous precedent to use the same key for client authentication
and proof of possession - basically, the same key is being used for two distinct purposes
Brian: DPoP Optimization
- is ok with the optimization
- this feature is optional and doesn't need to be implemented
Chairs: DPoP Optimization
- do we have any security proof of this change
- answer: no, not really
Kristina: DPoP Optimization
- feels it does make sense for simplification / optimization
- in the German wallet effort there are lots of keys
- in the work with the EU wallet effort, no concerns have been raised
Filip: DPoP Optimization
- likes the optimization
- has concerns about the optionality of the feature which may cause
issues in implementations - can we make the optimization manditory
Justin: DPoP Optimization
- feels like this could go sideways
- hasn't identified a concrete way for it to go sideways
- recommendation to approve the optimization and then define a
concerns in Security Considerations
John: DPoP Optimization
- likes the optimization
- probably should reduce the optionality of implementation options
- more keys doesn't always mean better security
- in this context fewer signatures is better
Chairs: DPoP Optimization
- is the DPoP key in the hardware security module? or elsewhere?
- there is a cost to doing signatures from hardware stored keys
Tobias: DPoP Optimization
- <>
John: DPoP Optimization
- want the same level of security for all keys
Filip: DPoP Optimization
- would prefer to not support the optionality
Paul: DPoP Optimization
- there is an explicit request to use the headers with other endpoints
Filip: DPoP Optimization
- only wants the optimization when DPoP is in use
Brian: DPoP Optimization
- has been told there are real world use cases for wallets that want
to use a less secure key for DPoP proofs over the client attestation
key
Orie: Attestation term
- just use the term
assertioninstead to remove conflict with RaTS
working group
John: Attestation term
- RaTS didn't invent the term
attestation - ask the AD if it's ok to have a different interpretation of the term
Kathleen:
- there may be less concern about definition of the term over the use
of the term in general - outside the crypto community, attestation has a different meaning
(auditor process) - probably ok to use the term, but realize there may be other
misunderstandings with the use of the term
Token Status List - Paul (20 min)
https://datatracker.ietf.org/doc/draft-ietf-oauth-status-list/
Mechanism for managing token status across a distributed set of clients
how it works: status list bit array returned from server, provides an
index into the compressed array
Changes since IETF 119
- lots of editorial changes
- added validation rules
- status list aggregation mechanism
- allow the client to do caching of status lists
Unsigned Option
- considering removing the unsigned option
Targetting IETF 121 for WGLC
No plan to merge with status assertion
Discussion
Brian:
- recommend to only support the 'unsigned option'
- doesn't see a need for these lists to be signed
- if signed option is required do it in the CBOR effort
Roy:
- is there still an option to control the life time? <-- yes
Jeff:
- concerned with complexity of the solution and the requirement to
manage large arrays that don't have value to the client - Solving CBOR and JSON in the same RFC brings complexity - reemphased
by Kristina. Is the CBOR community even interested into that?
Richard:
- believes we should absolutely sign these lists
- avoid runtime dependencies
Other WG related to this topic
FedCM Profile for OAuth - Aaron (20 min)
No draft at this time
Problem
- lots of different ways to track users via web browsers
- two in scope are third party cookies and link decoration
- OpenID Connect uses both these features
- form response mode, iframe silent refresh, ...
- OpenID Connect, OAuth and SAML all use link decoration
Two groups within the W3C to address tracking and federated identity
- Federated Identity Communbity Group
- Federated Identity Group
FedCM
- protocol being standardized in the Federated Identity Group
- primarily developed by Google Chrome
- makes the browser a trusted actor in the identity flow
- FedCM implementation examples (IDPro webinar, 10 July 2024):
https://youtu.be/0OjdqldRvXo?si=O9UIU1VKK4G3lkWS
Cross-Site Cookie Access Credential
- much smaller surface area of an API
- primarily developed by Mozilla; should be in a beta version of
Firefox real soon now
OAuth Profile for FedCM (not ready for an I-D)
- https://gitub.com/aaronpk/oauth-fedcm-profile
- treat it as an authorization endpoint that returns an
authorization_code - allows for support of confidential clients and OAuth features like
PAR - Put OAuth parameters in the
paramsparameter - Returned "token" is an
authorization_code - Browser then makes a normal JS call to the /token endpoint to get
tokens - Filip: can use any
response_modeallowing protocols like FAPI
What is the best way for the "params" object to work in FedCM?
- feedback requested by the Federated Identity Working Group
- issue #556
See slides for other important issues in FedCM related to OAuth
Discussion
Dick: how relevant is this going to be given chrome is not going to
deprecate 3rd party cookies
- Aaron: can change the priority of the effort
- Aaron: can improve the user experience and work will likely continue
- Doesn't seem like
Tim:
- file an issue
- Dick: has already filed an issue
- FedCM may be more important as the browser behavior will be based on
user consent
Heather:
- Federated Identity Working Group chair
- TAG: took issue with Google's decision to not deprecate 3rd party
cookies (WIP statement:
https://w3ctag.github.io/web-without-3p-cookies/); so did the UK
regulators
(https://ico.org.uk/about-the-ico/media-centre/news-and-blogs/2024/07/ico-statement-in-response-to-google-announcing-it-will-no-longer-block-third-party-cookies/) - Work will continue
Kristina:
- very similar to work done in OpenID4VP for the Digital Credentials
API - similar to the last option
Proof of Issuer Key Authority (PIKA) - Richard Barnes (20 min)
https://datatracker.ietf.org/doc/draft-barnes-oauth-pika/
Problem
- not all use cases have consistent internet connectivity
- JWT lifecycle can sometimes be problematic
- containers need to know about the state of the signing keys in the
past
PIKA Chain of Trust
- JWT containing keys and signed by the X509 cert (with chain?)
There was a call for adoption post IETF 119. Feedback from the list
- Issue 1: general movement away from X509; this proposal cuts against
this trend - Issue 2: Security considerations using Web PKI certificates for PIKA
signing
Call for adoption: Official request will be on the mailing list
- Vote: 11 yes, 3 no, 9 no opinion
Discussion
Roy: why wouldn't SCITT (https://datatracker.ietf.org/group/scitt) and
counter signatures work here?
- Richard: not familiar with that technology
Leif:
- is in favor of this effort
- likes the security properties separating the keys for web facing
entities from backend more highly protected - may be some prior art by Stefan Santesson in PDF signatures in XML
(https://datatracker.ietf.org/doc/html/draft-santesson-svt-pdf-01.html)
Filip:
- concerns regarding the ability for implementation
- Richard: introduces implementation challenges
- would need additional work from verifiers
Atul: is this a "certificate" for the JWT issuer key(s)
- Richard: basically, yes
- how to revoke the PIKA "certificate"
- Richard: nothing in the draft... maybe status list? needs to be
addressed - Not sure we need a new certificate format
- Richard: this is extending x509 into the application domain
Pieter:
- this is a problem that needs to be solved
- appreciate on the security updates to the draft
- happy to work with Richard on the draft
AuthZEN Profile of OAuth RAR - David Brossard (15 min)
https://datatracker.ietf.org/doc/draft-brossard-oauth-rar-authzen/
Not related to the RAR discussion at IETF 119 (re: CEDAR profile for
RAR)
AuthZen is under OpenID Foundation (OIDF)
- protocol between the Policy Enforcement Point (PEP) and the Policy
Decision Point (PDP) - 12 implementation of the protcol with completed interop between the
participants
Is there room for an AuthZEN Request/Response Profile in RARs?
Looking potential relationships with Transaction Tokens and other OAuth
options
Discussion
Darin: You can pass in AuthZEN content when requesting a token. Most RAR
profiles represent scoped down permissions; that doesn't seem to be
represented in the spec. Unclear how it would solve certain problems?
- David: may not entirely understand the RAR spec.
Darin: then there's a slippery slope in the policy. Will take this to
the list.
Justin: interesting work, primary use case of RAR is the client having
more expressive way to define what it wants access to... a more
expressive way to deal with scopes
- however, the introspection endpoint was about how to add context to
the results of the token - probably space for both the cedar proposal (return executable
policy) in addition to this proposal - there are lots of dragons down this path but also value
Jeff:
- RAR is full of open banking examples
- SMART on FHIR has added a RAR profile as an experiment
Atul:
- slide 9 -- associated with RAR
- David: no, this was just a possible architecture that would include
a PDP - David: the use of the profile would be between the client and the AS
ALFA 2.0 Authorization Policy Language - David Brossard (15 min)
https://datatracker.ietf.org/meeting/120/materials/agenda-120-oauth-05
Long history of authorization techniques
ALFA - Abbreviated Language for Authorization
- implements RBAC, ABAC, ReBAC
Why ALFA 2.0?
- get rid of baggage
- make a proper authorization policy language within a standards body
- promote re-use for authorization policy
Next Steps
- live in its own working group? part of OAuth?
Discussion
Justin: it might make sense in another working group within the IETF, it
definitely doesn't live in OAuth
- when you bring an existing technology to the IETF it will be changed
significantly in the working group
Jeff: Cedar is not an AWS technology and is not restricted to the AWS
infrastructure
Richard: +1 to Justin's comments
Darin: (works on Cedar) will this new policy end up being a full
"programming language"... will this solve anything or just be another
language
Yuan: What's the relationship with AuthZEN? Is it working in parallel?
How does it connect to oauth?
- AuthZEN is not orthogonal; it's parallel. They don't dictate model
(graph, RBAC, ACL), just interface. AuthZEN does not deal with the
policy; it does not want to be in the middle of standardizing
policy. - Next step: go to DISPATCH