当前位置: 首页 > 知识库问答 >
问题:

如何在由Swagger Codegen 3生成的Python API客户端中设置承载令牌。十、

吕森
2023-03-14

我已经通过使用在线Swagger Codigen为该API生成了一个Python客户端库https://generator.swagger.io/.该API使用承载身份验证:

openapi: 3.0.0
...

paths:
  /sandbox/register:
    post:
      ...
      security:
        - sso_auth: []
      ...

components:
  securitySchemes:
    sso_auth:
      type: http
      scheme: bearer

但是,生成的Python客户端中的配置类没有访问令牌字段。

使用生成的客户端库时,如何填充承载访问令牌?


codegenendpointPOST/gen/clients/{language}具有authorizationValuesecurityDefinition参数——我是否需要以某种方式配置这些参数

"authorizationValue": {
  "value": "string",
  "type": "string",
  "keyName": "string"
},
"securityDefinition": {
  "type": "string",
  "description": "string"
}

共有1个答案

严开宇
2023-03-14

首先,由于您的API是OpenAPI 3.0,因此需要使用Swagger Codegen 3。x、 即。https://generator3.swagger.io或swagger-codegen-cli-3.0.11。jar。发电机在https://generator.swagger.io适用于OpenAPI 2.0(swagger:'2.0')。

也就是说,Swagger Codegen 3的Python生成器中有一个bug。x、 它不会生成OpenAPI 3.0定义中的承载身份验证代码。请在https://github.com/swagger-api/swagger-codegen-generators/issues

[CNNVD]OpenAPI文件安全定义漏洞(CNNVD-200512-436)AuthizationValuesecurity定义/gen/Client参数与OpenAPI文件中的安全定义无关。


作为一种解决方法,编辑OpenAPI YAML文件并替换此部件

  securitySchemes:
    sso_auth:
      type: http
      scheme: bearer

与:

  securitySchemes:
    sso_auth:
      type: apiKey
      in: header
      name: Authorization

然后根据修改后的API定义生成一个新的Python客户端。

现在,一旦您按照自述文件中的说明安装了客户端软件包。md,您应该能够按如下方式设置令牌:

import swagger_client
...

# Configure API key authorization: sso_auth
configuration = swagger_client.Configuration()
configuration.api_key['Authorization'] = 'YOUR_BEARER_TOKEN'
configuration.api_key_prefix['Authorization'] = 'Bearer'

# create an instance of the API class
api_instance = swagger_client.MarketApi(swagger_client.ApiClient(configuration))
...
 类似资料:
  • 问题内容: 我有一个使用elasticsearch-jetty项目的嵌入式Elasticsearch,并且我需要设置为比默认值更好地使用标记器。我想使用关键字标记器。 我一辈子都想不通如何通过配置文件来做到这一点。谁能指出我通过配置文件执行此操作的方法? 顺便说一句,是否可以通过对索引执行POST来在启动和运行时调整索引?我真的很想了解如何使用它,谢谢。 编辑/更新:我在将curl -XPUT或-

  • 头未与Apollo一起发送。这会导致 我需要在我的文件中对自己进行身份验证,该文件现在位于中 这对我来说有点麻烦。我不确定这是唯一的方法,但这是我的大脑带我去的地方。我正在将apollo.serverless.js`,以便能够访问Cookie中的承载令牌。 这可能就像我的apollo.client的设置不正确一样简单。 我正在直接测试链接,因为带区webhook将使用查询参数直接访问此url。 因

  • 我已经创建了一个WebApi和一个Cordova应用程序。我正在使用HTTP请求在Cordova应用程序和WebAPI之间进行通信。在WebAPI中,我实现了OAuth承载令牌的生成。 这在实现中 在Cordova应用程序成功地向API发出登录请求后,我会收到以下JSON 问题是,我需要更多关于用户的信息。例如,我在数据库中有一个UserGuid字段,我想在登录成功时将其发送给Cordova应用程

  • 我有两个站点,一个用户登录并管理他们的帐户的站点和一个没有UI的站点,只不过是一个存储和检索内容的API。这两个站点都使用相同的Owin ASP. Net Idreal 2.0设置。UI站点使用cookie的原因很明显,API站点使用承载令牌。我需要能够使用当前用户身份验证从UI站点调用API方法/url。简而言之,我需要在UI站点中生成一个有效的承载令牌,以便在进行Rest API调用时添加到H

  • 我有一个REST API服务提供者,用PHP编写。我在《邮递员》中成功地测试了它,它在那里工作正常。 现在我要为它准备API留档,我正在使用Swagger UI 3。我正确地设置了它,我可以用顶部的授权按钮处理授权。 成功登录后,我希望endpoint设置并使用相应的承载令牌。但这不会发生,当我尝试任何endpoint时,REST服务器都会抱怨缺少授权头。我测试了网络流量,HTTP请求中没有令牌。

  • 我是stackoverflow的新手,因此这是我的第一篇文章。请原谅我英语不好。。。我花了几个小时在相关的话题上,但没有一个能满足我的需要。我正在编写一个通讯簿,我希望我的用户能够随时下载pdf联系人列表。一切似乎都很顺利,但实际上客户端从未下载pdf文件,尽管我可以在使用chrome开发者工具的请求中看到它。这是我的密码: 当检查响应时,我得到如下结果: 有没有人好心告诉我出了什么事?