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.
Everytime the authorizationCode flow is used (these are based on the PKCE IETF linked above):
code_verifier is generated (potentially using uuid4 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 figured win.swaggerUIRedirectOauth2 would be the right place to store this).code_challenge for the code_verifier (hashed using SHA256) and send this on the Authorize request alongside the code_challenge_method.additionalQueryStringParams to feed in the code_verifier and the code_challenge, but these values need to be generated on each authorize request.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.
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
Most helpful comment
@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.