-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
Allow clients to be issued ID Tokens valid for other clients #371
Comments
ProposalData ModelClients have a new field called "cross_client_authorizers" which is a list of client_ids. If a client_id is in this list it can mint tokens on behalf of the given client. There are no reciprocal minting rights. Data StorageIt's probably fine to store as a comma-delimited list of strings; could also be another table, but that seems like overkill. CRUD APIREST methods for getting/adding/removing to be added to worker and overlord APIs
Authentication
OIDC InteractionConsider two clients:
When the user authenticates with When the ID token is returned to the user, it will have within it's UIThere will have to be added UI to the auth page letting the user know the extra scope being added Refresh TokenBecause of the complications w/r/t multiple audiences (eg. refresh tokens are scoped to a single client) I suggest that requests for cross-client minting with offline access will be rejected for now. |
Alternatives to Not Allowing Refresh Tokens
|
|
It's not part of any spec, it comes from Google's implementation of more-or-less the same thing. The advantages of naming it the same thing is that it's familiar to people, and could help in an effort to rally around something and make it a spec. The disadvantage is that it's not exactly the same (Google has a bunch of unspecified behavior and restrictions) What don't you not like about it? I'm happy to use something different, but need a bit more direction. Also note: that's not the claim name, that's the name of the scope.
Sure, that was just expedient and explains what is happening fairly well for the purposes of this proposal.
This is part of the authentication flow, so whatever action they would normally have to take, they take. They still need to actually authenticate somehow.
Cool - the reason I called it out was because it could be useful in cases where someone can't |
Might be nice have a separate table. Make it easier to do things programmatically through SQL for migrations, queries ("tell me all the clients that can make refresh tokens on my behalf"), etc. Just a thought. Other than that lgtm. |
FWIW postgres has had pretty good array support for a while now. We could have the best of both worlds (no extra table AND easily queryable). This comes at the cost of adding more postgres-specific implementation (but that may be ok if longer-term we decide to have a separate driver per supported storage type). |
@bobbyrullo thanks for responding. I think we're on the same page. all LGTM. |
Yeah, that would be a bummer
true, but it would be nice if the various SQL implementations shared as much code as possible. I think a table a separate table is probably the way to go. |
@bobbyrullo cool with closing this now that #426 is in? |
I still have at least another PR to deal with refresh tokens. I'll close it out when the work is done |
With #465, this is closed. Still need UI work, for which I will open a separate issue. |
This is what Google calls "Cross-client Identity". Allow clients to be issued ID Tokens which are valid for a different client.
Example: "client1" allows "client2" to create ID Tokens on it's behalf. "client2" uses a custom scope to request such a token, and the returned ID Token holds the following claims:
Where azp is the authorized party (the party that requested the ID Token) and aud is the client the ID Token is valid for.
The text was updated successfully, but these errors were encountered: