-
Notifications
You must be signed in to change notification settings - Fork 1k
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
[Feature Request] Galaxy OAuth2.0 Provider / Scoped API Keys #1524
Comments
+1 this. |
And another +1 from me! |
+1 sounds great! |
Another +1! :) |
from @bgruening in issue #13737 copied here due to additional use cases + nice screenshots It would be nice if we can provide more fine-grained API access to certain features. Use-cases:
GitHub personal access token page: GitLab UI: |
Adding another use case: "Login with Galaxy" We are discussing adding a system to the GTN whereby users could track which tutorials they've done, and we'd love to offload the authentication to Galaxy. I.e. have a button of "Login with Galaxy {EU,AU,US,etc}" that redirects the user to the appropriate Galaxy where they login, and are re-directed back to the GTN, and the GTN receives account information and a scoped token that lets the user do whatever actions they checked (or not.) |
@hexylena That sounds like a nice idea. My personal view is that any implementation needs to figure out a way to delegate this to an auth-provider like keycloak or auth0, and avoid touching Galaxy as much as possible. |
Another use case for this: PWDK, like PTDK but using a workflow invocation (which currently aren't shareable/able to be made public) Users would be able to "Login with Galaxy", we would request a scoped API key that would just let us read their histories/workflows/workflow invocations, and then we could pass that API key to planemo to run it for them (which remains a challenge for more non-technical users), and provide them the result. We don't need (nor want) a full account API key, in this case it would be best if it was also limited to 1h to limit long term exposure risk. @nuwang I think my main issue with that is many of these cases would benefit from integration into galaxy, mostly for the scoping. Scoping which resources they need to access (e.g. limit only to one history the user selects, like the android file picker, or limit to all histories, or just pages or just datasets, etc. Many use cases don't need full-account access.), and for how long that access should be allowed, and then returning a Galaxy API compatible API key that we can use on their behalf (to take advantage of the existing bioblend/etc ecosystem.) |
As a side note: access permissions are derived from the history of the invocation, so if you share or publish the history you can access the invocation, e.g. https://usegalaxy.org/workflows/invocations/84e15596bd4fc608?from_panel=true |
oh! that's fantastic news, thanks @mvdbeek, that's very useful news for us |
I'd like to
addsee OAuth (or more simply scoped API keys) added to GalaxyThis would include implementing application specific API keys, with application specific permissions that the user can select amongst. Some scopes might include things like:
https://oauthlib.readthedocs.org/en/latest/index.html looks promising.
User stories
My Use Case
I was thinking about JBrowse/Apollo plugins and how I really wouldn't want to give my galaxy API key to a random JBrowse server which might store it and do nasty things. Thus, OAuth is the obvious solution.
I'd love to be able to:
If they store the token and re-use it (in good faith) for future requests, it isn't the end of the world.
Implementation Note
If the user has added OAuth applications, they should see a button near by the disk usage which lists a count of # of recent OAuth requests since their last session. Upon clicking it, they should go to a page which lists all of their authorized applications, and shows a detailed list of requests those applications made on their behalf. The intention here is obviously to let people kill applications which are abusing the API.
The text was updated successfully, but these errors were encountered: