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

[rust-server] Added API Key auth to rust-server #2459

Merged
merged 1 commit into from
Apr 1, 2019

Conversation

Herrera93
Copy link

@Herrera93 Herrera93 commented Mar 20, 2019

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: master, 3.4.x, 4.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language. @frol @farcaller @bjgill

Description of the PR

Added API Key authentication in rust-server for both in header and query. Still missing in cookie.

For query, since we're not available to modify hyper request after creating it, I added it to the uri created. To do this I had to move let query_string = ... outside of the queryParams block which means it'll be present even if there aren't any queryParams or query API Key. I think we can change this by creating an additional property to check for both conditions.

For header it was easier since we can use header_mut on request to add any new headers to it. I only added the variable x-keyVarName to vendor extensions in order to camel case the header.

One other downside to this is that we may need to refactor it in case of multiple API Keys in headers.

@Herrera93 Herrera93 changed the title Added API Key auth to rust-server [rust-server] Added API Key auth to rust-server Mar 20, 2019
@Herrera93
Copy link
Author

@bjgill Can you check this out ?

@wing328
Copy link
Member

wing328 commented Mar 20, 2019

cc Rust Techical committee: @frol (2017/07) @farcaller (2017/08) @bjgill (2017/12)

if (op.authMethods != null) {
for (CodegenSecurity s : op.authMethods) {
if (s.isApiKey && s.isKeyInHeader) {
s.vendorExtensions.put("x-keyVarName", toModelName(s.keyParamName));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this is really needed, can you use a better name? e.g. apiKeyName?

Copy link
Author

@Herrera93 Herrera93 Mar 25, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@richardwhiuk
I'm open to changing the name if you think that fits better.
As for the needing of this variable is so we can prevent problems like this example where the header is X-API-KEY which is the value of keyParamName but we wouldn't be available to use it like this:

// compile error
header! { (X-API-KEY, "X-API-KEY") => [String] }

This is the solution I came up with but if you have a better one we can use that one.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@richardwhiuk
Just changed the name from x-kayVarName to x-apiKeyName

@wing328
Copy link
Member

wing328 commented Mar 29, 2019

If no further feedback on this PR, I'll merge it over the weekend.

@wing328 wing328 merged commit ee69861 into OpenAPITools:master Apr 1, 2019
jimschubert added a commit that referenced this pull request Apr 2, 2019
* master: (133 commits)
  #2503: fix out-of-memory issue with nested objects with arrays with maxItems set by limiting to max. 5 example items (#2536)
  remove emitDefaultValue option (#2559)
  fix EmitDefaultValue default vallue with false (#2558)
  Added API Key auth to rust-server (#2459)
  remove initialCaps and replace with camelize (#2546)
  Add packageName configuration to maven (#2429)
  [Typescript AngularJS] fix Extra package prefix in api parameters operations (#2522)
  #1023 - [Scala] Use status family during response processing (#1024)
  Generate setters for readonly properties in server code (#1582)
  [JS] fix NPE for null string and improve Travis config file (#2553)
  [elm] Update ISO 8601 library (fixes missing time zone designator) (#2545)
  [csharp] update sample after #2528 (#2550)
  [JavaScript] fix index.js, ApiClient.js and test files generated to incorrect location (#2511)
  Aspnetcore nullable support (#2529)
  Csharp nullable support (#2528)
  [C++] [Qt5] Add enum support for client and server (#2339)
  Fixed typo in migration-from-swagger-codegen.md (#2548)
  [TypeScript Client] fix install Aurelia + fix use deprecated function (#2514)
  [KOTLIN] fix var name not correctly sanitized (#2537)
  Update swagger-parser to '2.0.11-OpenAPITools.org-1' (#2262)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants