-
-
Notifications
You must be signed in to change notification settings - Fork 282
feat: Enable OAuth 3LO support #877
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
base: main
Are you sure you want to change the base?
Conversation
ec9c285
to
323089d
Compare
cc: @ankitpokhrel for visibility. It'll be great if this can be reviewed/merged soon, so folks that can only authenticate through |
…figureServerMeta`
… transport in the client
…er, rather than their own JIRA server
fa19335
to
0ebaa17
Compare
@ankitpokhrel Could you take a look at this PR when you get a chance? I think this is a nice feature add (and personally been using it for months now without hiccup) |
@christianarty Thanks for the PR! I'm currently away, I'll look into this in a few weeks. |
Summary
fixes #863
This PR allows for users to have another option (
oauth
) when generating their JIRAconfig.yml
for the Cloud installation.Details
This PR implements JIRA's 3LO OAuth solution for users to obtain a JIRA access token.
Each consumer of
jira-cli
will need to create a JIRA App with the specific scopes in order to connect it properly with their JIRA cloud instance.The oauth secret will be stored in the
.config/.jira
directory, where the tokens will be automatically regenerated when it expires and the newly generated tokens will be cached to the oauth secret file.How to create a JIRA App properly:
See this discussion post here: #879 (comment)
Known Limitations/Issues
Note
This limitation has also been noted in the README under the
Known Issues
section.Ideally, for OAuth, we would have one single distributed app that can be installed in multiple different JIRA cloud instances. However, The 3LO doesn't support Proof Key for Code Exchange (PKCE). Without this support, we would have to share the single distrubuted app's client secret with all the consumers. See these links for more info:
As noted in the forum above, a workaround would be that each consumer has to create their own JIRA app and use that app's client ID and secret in the
jira-cli
client app.Testing Done
make deps install
=> WORKS~/go/bin/jira issue create -tTask -s"TEST TICKET" -l"testing" --template ~/jira/task.tmpl -a$(~/go/bin/jira me)
=> WORKS (created a ticket, and proper link)make test
=> WORKSmake lint
=> WORKSmake ci
=> WORKS