* Andrew Engelbrecht <
and...@fsf.org> [2020-09-01 00:26]:
> The most common use case for OIDC is to allow users to log into your
> site, using credentials from one of many different OIDC end points.
You control what OPs (OpenID Connect [Identity] Providers) you hook up
to your RPs (Service Providers, protected resources) and make
available for authentication. If you offer multiple, then yes, sure.
But you don't have to offer multiple servers/systems/providers to
subjects to log in from, of course. Neither with SAML 2.0 nor with OIDC.
> To make this possible, it's necessary that the user name on site A
> is not guaranteed to be available on your site, since it may be in
> use by another person who already logged in with site B. As a
> result, it only makes sense for the user name provided by site A and
> B to merely be suggestions, and are not guaranteed to be available.
I don't follow, but maybe that's because we have different views on
what a username is: Allowing logins from different OPs (or sites or
organisations or identity stores or identifier namespaces) necessarily
means you must either insist on the use of globally unique identifiers
from the start (so there is no potential for collision) or the RP must
qualify only-unique-within-each-OP identifiers with the OP/issuer
during at login time to /make/ them globally unique at the RP.
I.e., not-by-themselfs-globally-unique identifiers from identity silos
(such as the so-called "social identities" from Internet Monopolists)
would have to be qualified with the OP, either by the OP (in some part
of the protocol, I don't speak OIDC) or at the RP when reciving it.
Then 'foobar123' from Facebook becomes "foobar123 at facebook", in
whatever syntactical notation, e.g. the one we know from e-mail
addresses or kerberos subject principals, "
foob...@facebook.com".
> In my use case, we want the user names to be mapped 1:1 between the
> identity source and the client. So the question is whether we can
> make it work if I control both the source and client (those aren't
> the official terms).
I don't think that changes anything I wrote above: Either all
identifiers are already globally unique across all "sources" (OPs, I
think) or the RP would have to make them globally unique by qualifying
the identifier with the issuer/OP/source.
If you control all parts, incl. all "sources" you may already have
ensured that there are no identifier collisions across all source
systems. In which case there'd be no potential for collisions at any
of your RPs, either.
Cheers,
-peter