-
Notifications
You must be signed in to change notification settings - Fork 9k
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
Support OAuth 2.0 Authorization Code flow with PKCE #5348
Comments
I will try to submit a pull request for this feature request this week. |
I have created a branch locally where I have made the changes. How can I submit my solution to you? |
If you cloned their repository and made a local branch, I think you'll have to fork it through github and then merge your original branch to that new fork. Then submit a pull request. |
@fuzzzerd Thank you for the tip. This is my first ever pull request on a public repository on GitHub, so I did not know that's how it works. I will do that to submit my pull request. |
Some housekeeping for the future: If/when this is resolved, this comment in the OAuth2 documentation should be removed: https://github.com/noirbizarre/flask-restplus/pull/585/files#diff-c4a0af43900c17a78b71064b375d87ecR898 |
You have to enable pkce. app.UseSwagger().UseSwaggerUI(options => {
options.OAuthClientId("api-swagger");
options.OAuthScopes("profile", "openid", "api");
options.OAuthUsePkce();
}); |
Is your feature request related to a problem?
In the light of the new IETF related to OAuth 2.0 for Browser-Based Apps (see 4. Overview), an application running in a browser and using the Authorization Code flow should be using PKCE (Proof Key for Code Exchange) for increased security. It is not the case currently with swagger-ui. This article by Brock Allen also touches on the subject.
Describe the solution you'd like
Everytime the
authorizationCode
flow is used (these are based on the PKCE IETF linked above):code_verifier
is generated (potentially usinguuid4
like they do in oidc-client-js). This value needs to stored somewhere because it needs to be sent on the Token request (looking at the code, I figuredwin.swaggerUIRedirectOauth2
would be the right place to store this).code_challenge
for thecode_verifier
(hashed using SHA256) and send this on the Authorize request alongside thecode_challenge_method
.Describe alternatives you've considered
additionalQueryStringParams
to feed in thecode_verifier
and thecode_challenge
, but these values need to be generated on each authorize request.Additional context
I feel this is something that should be introduced into swagger-ui because of the added security it provides. Everybody would and should benefit from it.
The text was updated successfully, but these errors were encountered: