-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
consider support for OIDC self-issuer #91
Comments
The self-issued identity for oidc makes a lot of sense for Solid, though there needs to be one tweak. The identity in the self-issued flow is assumed to be the device itself (or whatever has the private key). This is why the jwk for the device is embedded directly into the token (https://openid.net/specs/openid-connect-core-1_0.html#SelfIssuedValidation). But in Solid, your identity is your WebID, and therefore the WebID must be correlated with the self-issued token. Instead, the jwk should be embedded in the WebID via the This might mean using |
exactly this is specified in my auth proposal (see step 8 of WebID-OIDC operation). |
to clarify and be precise, my auth proposal actually specifies that the jwk is embedded in the id_token so that it's compatible with OIDC self-issuing, but that the public key is also in the webid. an implementation could either verify the id_token signature from its embedded public key and confirm that the public key also appears in the webid, or it could verify the id_token's signature against the public key(s) listed in the webid and ignore the public key in the id_token. i think it's valuable to keep the public key in the id_token in the self-issued case for compatibility with the semantics of OIDC's magic issuer |
As another reference point to this discussion, I'd like to add the Using OpenID Connect Self-Issued to achieve DID Auth paper from the Rebooting Web of Trust 8 conference. |
To my understanding to resolve this issue we need a clear proposal for how to add that self-issued OP to User's WebID Profile. Since we use @dmitrizagidulin regarding that OIDC DID Auth paper, I think it would help to move forward in https://github.com/solid/identity-panel/issues/1 with discussion how WebID could get aligned with DID. After that we could revise all requirements on WebID Profile including the one discussed here. |
+1 on this specifically |
-1 on this specifically. i think this should be handled with already-existing predicates in the webid document:
an id_token that looks self-issued and that is signed by one of the webid's |
<#me>
solid:oidcIssuer <https://self-issued.me> . # maybe this could be optional I don't see what putting it in the profile supposed to mean. Also any software doing <#me>
cert:key [
a cert:RSAPublicKey;
cert:exponent 65537;
cert:modulus "EBED6EB8...459"^^xsd:hexBinary
] . If https://www.w3.org/ns/auth/cert#key
I guess we could just rely on that for verifying key used for self-issued OIDC. Looking at paper suggested by @dmitrizagidulin https://github.com/WebOfTrustInfo/rwot8-barcelona/blob/1801e8f9d4af6f666e50266303e62eadefefa544/draft-documents/did-auth-oidc.md#did-validation
If identity-panel should take care of solid/authentication-panel#16 and propose how to align WebID with DID, I think we should just add requirement of associating public key used for OIDC self-issuer to get addressed as part of that effort. |
putting it in the profile means that when an id_token is received with an since demonstrating control of the public key is sufficient (with a signature that matches), i wouldn't object to dropping |
POSSIBLE OPTION 1: Just say all clients MUST be aware of the self-issued flow. This might be the simplest POSSIBLE OPTION 2: Alternatively, we could make our own self issued site like
And when calling The downside is the URL could get pretty messy if we allow different protocols, and it's already pretty messy. It also has the downside of depending on a centralized party to take care of clients that aren't award of POSSIBLE OPTION 3: People using a self-issued id could host their own server that does the same thing outlined above. But, at that point, you're essentially running an IDP. Though, it would only be used for clients that don't understand the self-issued flow. |
I see a new draft for Self-issued OpenID Provider v2 https://openid.net/specs/openid-connect-self-issued-v2-1_0.html#name-relationship-with-section-7
|
as discussed on one of the calls and in solid/authentication-panel#2 (comment), support for the OIDC magic issuer
https://self-issued.me
with a public key in the webid profile (same as WebID-TLS) would have several benefits:.well-known/openid-configuration
and ajwks
file (plus saving two more serialized HTTP transactions to fetch them)The text was updated successfully, but these errors were encountered: