I responded directly in the GH issue, but in summary, Inrupt’s broker and NSS Identity Provider (which powers both solidcommunity.net and inrupt.net) don’t support the same response type (which is totally valid per OIDC), so you’ll want to make sure you’re registering the subset of responses which are supported by all the Solid Identity Providers (or dynamically negotiate it when registering your client).
Thanks on both the webid/issuer and on the variations in support. I don’t have a firm grasp on these variations yet-- so will look at this.
On the webid front, it sounds like there some UX design consideration here. I had been considering a sign-in flow like
a) prompt the user for their issuer,
b) allow them to sign in via the redirect/web UI mechanism,
c) pull their webid out of the resulting id token.
d) extract info (e.g., storage location) from their profile using their webid
But perhaps this would be better:
a) Have them enter their webid
b) extract their issuer and storage location from their profile,
c) allow them to sign in via the redirect.
This has the advantage that they might be more likely to know what their webid is. Expecting a user to know what their issuer URL is seems questionable. At least for me so far knowing what the issuer URL hasn’t been easy.
I don’t know of any place in the spec that says that either of those MUST be in the profile. At best you can use those as possible locations to pick up information on the user.
As far as “extracting the issuer from the WebID” - how, other than hard-coding the way Inrupt operates are you going to extract the issuer from my webID https://pod.inrupt.com/jeff-zucker/profile/card#me?
Right, even though some WebID providers add a link to the storage of the WebID owner by default (e.g. https://pod.inrupt.com/, see https://pod.inrupt.com/zwifi/profile/card#me), that isn’t something mandated by the spec, and one cannot assume the presence of that link. However, the issuer being publicly advertized by the WebID is part of the Solid-OIDC specification. It is still a draft specification though, so there are moving parts still, and NSS should be regarded as a legacy prototype rather than a gold standard :). NSS has been implemented before Solid-OIDC, and it has very much informed Solid-OIDC of things that were valuable/harmful.
Even though that’s not the ideal UX, I agree with Jeff that for the time being, the only universal fallback is to ask the user what to do. I agree with you that the ideal flow starts from the user’s WebID, and your app can follow its nose from there, but that’s something that will only be possible in the future when the ecosystem is more mature, if ever. Right now, asking the user for their Identity Provider, but also potentially about the IRI to their Pod root or the place where they want your app to get/store data seems like a decent approach.