1

我正在使用 NSwagStudio 从 Swagger 2.0 JSON 文件生成客户端类/代码。

以前,它用于生成以下身份验证代码:

//Authentication
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes("username:password");
string encodedAuth = System.Convert.ToBase64String(plainTextBytes);
request_.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", encodedAuth);

现在它没有生成上述Authorization标题。我应该在 JSON 文件中进行哪些更改以确保生成的代码具有如上的身份验证代码?

4

1 回答 1

0

为了定义身份验证,OpenAPI 2.0 规范使用了两个关键字:

  • securityDefinitions
  • security

securityDefinitions描述安全类型(例如 Basic、API 密钥等),并将security其应用于所有或特定操作。没有security,securityDefinitions没有任何效果。

如果所有操作都使用基本身份验证,security则在根级别应用:

{
  "swagger": "2.0",

  "securityDefinitions": {
    "basicAuth": {
      "type": "basic"
    }
  },
  "security": [
    {
      "basicAuth": []
    }
  ],
  ...
}

如果特定操作使用基本身份验证,则应用于security该特定操作:

{
  "swagger": "2.0",

  "securityDefinitions": {
    "basicAuth": {
      "type": "basic"
    }
  },
  "paths": {
    "/foo": {
      "get": {
        "security": [
          {
            "basicAuth": []
          }
        ],
        ...
      }
    }
  },
  ...
}

更多信息:基本身份验证 (OpenAPI 2.0)

于 2019-02-04T22:55:08.557 回答