You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As part of #1254 I'm looking at documenting the way that securitySchemes works, and it turns out it's a little more lackluster than I remember.
Right now, if you define an endpoint i.e.:
/apiKey:
get:
operationId: apiKeydescription: Perform an authenticated request, using an API Key in the `X-API-Key` headersecurity:
- apiKey: []responses:
# ... snip
The current approach sort of works if you restrict yourself to one security scheme per endpoint. We are currently using a middleware which checks the request against the given authenticators. Using it looks something like this:
For the issue with multiple security schemes per endpoint see #1644.
Our middleware currently resolves this problem by always assuming OR (which is the more common case) and disallowing AND-ing security schemes, but that has other drawbacks.
IMO, putting anything to do with auth scopes into the generated code was a mistake, because it's a runtime behavior handled properly by openapi3filter. I have an API running at my workplace which has a complex specification with multiple schemes and it works ok.
I think we should deprecate authentication logic from the generated code altogether, and I'm happy to clean up the middleware or example to make it clear how to do this. Our middleware was written when openapi3filter was quite more primitive, and we could use it better today.
As part of #1254 I'm looking at documenting the way that
securitySchemes
works, and it turns out it's a little more lackluster than I remember.Right now, if you define an endpoint i.e.:
This generates only the following code:
This still requires a lot of work to hand-roll server-side authentication.
We should instead generate
We can generated ??, and then rely on an implemented method sfor
multi reoutes
k
Although it can be possible to use the middleware to authenticate, I believe it's an area we can improve on.
We'll need to consider:
This should be opt-in.
Example schema:
Some code can be found in 09adbb0
See also:
#843
#177
#221
#911
The text was updated successfully, but these errors were encountered: