Skip to content
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

Add support for OpenID Connect authorisation #250

Closed
pete-w opened this issue Apr 3, 2020 · 6 comments
Closed

Add support for OpenID Connect authorisation #250

pete-w opened this issue Apr 3, 2020 · 6 comments
Assignees

Comments

@pete-w
Copy link

pete-w commented Apr 3, 2020

Is your feature request related to a problem? Please describe.
ARC has no built in mechanism to automatically authorise via an OpenID Connect id token. OpenID Connect is a layer on top of OAuth2.0 implemented by a number of common public auth providers. In addition to the standard OAuth2 access and renew tokens it also returns an id token. In some situations it is desirable to use the id token rather than the access token as the subsequent request bearer token.

Describe the solution you'd like
Add the following to the AUTHORIZATION tab:

  1. Add OIDC to the Select authorization dropdown after OAuth 2 that has the same fields and behaviour at OAuth 2 with additional as below:
  2. New Issuer URI field just before any other URI fields. Upon entering a URI here, ARC will call <<issuer-uri>>/.well-known/openid-configuration (as most providers implement Discovery) and where possible pre-populate the other URIs from the retrieved JSON config.
  3. Prepopulate the Scopes field with openid.
  4. Change the REQUEST ACCESS TOKEN button to REQUEST TOKENS or similar.
  5. Upon clicking the button, perform the existing OAuth2 flow and display all tokens (access, renew & id) from the response.
  6. Change the Current token label to Current tokens expiring <<when>> where <<when>> is derived from the response stated issue and expiry info. [Optionally] change the label to Expired tokens when the time has lapsed.
  7. Add a Bearer token label and radio button in front of the access and id tokens to use the user selected token for the Authorisation header for the main request as is currently done with just the access token.
  8. Drink beer and celebrate a job well done 🍺.

Additional context
This feature request stems from #245.

@jarrodek
Copy link
Member

jarrodek commented Apr 3, 2020

Thanks for the explainer. It's very helpful.
I can say that I will implement it but it won't be as quick as your other requests :) This one will take a long time to develop appropriate UIs, then authorization logic, then bindings to ARC. Last time when I did this it took few weeks (right now I am working on ARC in the evenings splitting my time between here and my YouTube project). I will get back to this after implementing current roadmap item (new requests actions) and combine it with PKCE for OAuth 2.

@jarrodek
Copy link
Member

jarrodek commented Apr 3, 2020

Unless you want to help :)

@pete-w
Copy link
Author

pete-w commented Apr 3, 2020

I'll pull down the source and have a look - given it is generally extending OAuth2 behaviour I should be able to work it out without too much grief (he says hopefully...) You okay if I email you direct with any questions? Or do you have a prefered chat handle?

@pete-w
Copy link
Author

pete-w commented Apr 3, 2020

Okay, it's in Node, not Java - a bit more effort required...
I guess it did begin life as a Chrome plugin so fair enough :-)

@jarrodek
Copy link
Member

jarrodek commented Apr 3, 2020

You can contact me at my github username @gmail.com. I'll be happy to help.
Originally ARC was written in Java using GWT and then transpiled to JavaScript. It changed long time ago though. If you are not a web developer than it's OK. I will do this eventually.

@jarrodek
Copy link
Member

jarrodek commented Sep 1, 2021

Sorry for the long time waiting to take care of this but it was rather complex change.
All UIs and the logic is already implemented. This will be released sometime this month.

jarrodek added a commit that referenced this issue Sep 2, 2021
Signed-off-by: Pawel Psztyc <jarrodek@gmail.com>
@jarrodek jarrodek closed this as completed Sep 2, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants