[openid-specs-rande] today's meeting notes
Paul Millar
paul.millar at desy.de
Fri Mar 29 09:09:08 UTC 2019
Hi Mischa,
I've just joined this group.
There's certainly a number of familiar faces here.
For those I don't me, I'm working on an open-source (file) storage
software called: dCache. dCache is deployed throughout the world,
typically stores petabytes of scientific data, provides (close to) POSIX
semantics (and full of cutting-edge features :-)
On 28/03/2019 13:13, Mischa Salle wrote:
> On Thu, Mar 28, 2019 at 12:39:42PM +0100, Roland Hedberg wrote:
>>> I was wondering about the sub + '!' + iss suggestion.
>>>
>>> I often found this notion: sub + '@' + iss. It seems logical to me to use
>>> it like user at host, just like ssh or email.
>>>
>>> Wondering whether the '@' was discussed. >>
>> Looks too much like an email address. We wanted something that looked like nothing else.
>> With the hope that people would not have any preconceived notion about what they could
>> use them for.
FWIW, in dCache the SciToken (which is basically just a profile of
OAuth2) identifiers are currently stored with a ':' separator (rather
than '!'). To me, this looks like the iss is scoping the sub ("foo:bar"
=> "foo" is the scope within which "bar" is defined).
The other twist is that each SciToken issuer has a unique nickname
within the dCache configuration. So, rather than referring to an OP as
"https://issuer 1.example.org/foo", the nickname might be "FOO".
The combined identifier would be "FOO:<sub>".
Identifiers for dCache's OIDC support are currently just <sub> (yeah,
need to fix that.)
If you want to have an identifier from directly composing <sub> and
<iss> then I guess one requirement is that it should be possible to
decompose the token back to <sub> and <iss> in an unambiguous fashion.
<sub> is an opaque token, while (IIRC) <iss> is always going to be a
URI. Therefore one scheme would be:
<iss> <URI-unsafe-character> <sub>.
since it is guaranteed that a valid URI will not contain any
URI-unsafe-characters:
" < > # % { } | \ ^ ~ [ ] `
Of these, the pipe symbol '|' is perhaps the most aesthetically
appropriate, since it is symmetric:
<iss> '|' <sub>
An alternative would be to use one of the brackets (<>, {} and []). As
a comparison, XML namespaces are written in square brackets by some java
libraries.
For example:
<d:dCache xmlns:d="http://dcache.org/2018/01/>
would be written as:
"[http://dcache.org/2018/01]dCache"
In the OIDC case, this would be written as:
[<iss>]<sub>
> yesterday during our AARC meeting I wondered whether we can't just use a
> JSON (either as JSONObject with the claim names, or as JSONArray). It's
> not that much longer and clearly defined: by definition it must be
> expressible as such.
While certainly an option, it seems an inelegant solution to me:
1. it does make the identifier longer than necessary,
2. certain characters would need to be escaped -- reading
the identifier becomes (in some cases) non-trivial
3. it risks "feature creep" where more metadata is injected
into what is meant to be a simple identifier.
Anyway, just my 2c worth!
Cheers,
Paul.
More information about the openid-specs-rande
mailing list