-
Notifications
You must be signed in to change notification settings - Fork 330
Add getting-started example with external authentication #2244
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
Conversation
a884fd4 to
03d1fc5
Compare
03d1fc5 to
6f0445e
Compare
getting-started/keycloak/README.md
Outdated
| This Keycloak realm contains 1 client definition: `client1:s3cr3t`, and 2 custom scopes: `catalog` and `sign`. It is | ||
| also configured to return tokens with the following fixed claims: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
would be really helpful if we can add a bit about what the custom scopes catalog / sign would mean for Polaris
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It means nothing to Polaris. Scopes are between the client and Keycloak. I think I should remove those scopes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The confusion might come from the fact that when making a request to the internal deprecated iceberg oauth token endpoint we include "scope": "PRINCIPAL_ROLE:ALL" and it's not clear why - especially when we don't include it in the request to keycloak. In fact I don't think the documentation mentions at all how these role work, which to request, and why. I think there might even by a typo in the external-idp document where it sometimes says POLARIS_ROLE: instead of PRINCIPAL_ROLE:. A lot of behaviour requires delving into source code to learn.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes I agree that internal authentication looks a bit mysterious to users right now.
The internal authentication retrieves its principal roles from the OAuth2 scope field, and expects scopes in the form PRINCIPAL_ROLE:<role_name>. The scope PRINCIPAL_ROLE:ALL is a pseudo-role: it means the client is requesting all of the principal's roles in the system.
I will provide some clarification to the docs in a separate PRs. Thanks for bearing with us 😄
getting-started/keycloak/README.md
Outdated
| example. | ||
|
|
||
| This is obviously not a realistic configuration. In a real-world scenario, you would configure Keycloak to return the | ||
| actual principal ID, name and roles of the user. Note that principals must have been created in Polaris beforehand. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe :
| actual principal ID, name and roles of the user. Note that principals must have been created in Polaris beforehand. | |
| actual principal ID, name and roles of the user. Note that principals must have been created in Polaris beforehand and principal_id etc should correspond to principal info in polaris |
| - `realm-mixed`: This realm is configured to use both the internal and external authentication. It accepts tokens | ||
| issued by both Polaris and Keycloak. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
may be minor doc about which one is checked first helpful or can link existing doc for external idp, wdyt ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I think it would be really helpful to put some of the information added here into the existing external-idp document, and to put a link into that existing document to this one. In particular, making it very clear in the external-idp document that principals must already exist in Polaris - I got my hopes up about full external identity control, but have since found the milestone documents about user federation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, for now you need to create the users in both systems. This is admittedly impractical. We still need to implement full identity federation. I am working on this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SCIM support ?
|
This new example is very helpful, and very clearly shows how things work. One thing to note: The It does lead to an interesting train of thought. If we can expect that the deprecated iceberg I feel like I got pretty far off topic here. Is there a more appropriate forum? |
With this PR, you can now pass your own token to the script.
Wow, there is a lot in there, thanks for sharing your thoughts. I would recommend reading this (old) document first for getting an idea of where the problems are, especially the sections about SCIM support and persisting federated entities: As you can see, all of this is still TBD and for various reasons, the work there has stalled. I am preparing a PR to simplify roles validation and extract a few interfaces from concrete classes; this would facilitate the introduction of fully-federated principals and principal roles. But the issue with persisting vs not persisting such entities is still up for debate. |
singhpk234
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This mostly looks good to me ! thank you @adutra
As final step i was trying to run the getting started my self to see if it works for me, and i am getting some failure (i commented where i see them and whats the message i see), may be its an issue in my system but would really appreciate if you can take a look ! if its not an issue please feel free to proceed !
| - `realm-mixed`: This realm is configured to use both the internal and external authentication. It accepts tokens | ||
| issued by both Polaris and Keycloak. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SCIM support ?
singhpk234
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you @adutra !
just tested the getting-started with key-cloak ! got 200 !
A new getting-started docker-compose example using external authentication with Keycloak.