340.3. 在 API 中添加安全定义

可作为 Camel 2.22.0 提供

Rest DSL 现在支持在生成的 API 文档中声明 Swagger securityDefinitions。例如,如下所示:

rest("/user").tag("dude").description("User rest service")
    // setup security definitions
    .securityDefinitions()
        .oauth2("petstore_auth").authorizationUrl("http://petstore.swagger.io/oauth/dialog").end()
        .apiKey("api_key").withHeader("myHeader").end()
    .end()
    .consumes("application/json").produces("application/json")

此处已设置两个安全定义

  • OAuth2 - 带有提供的 url 的隐式授权
  • API Key - 使用来自名为 myHeader的 HTTP 标头的 api 键

然后,您需要通过引用密钥(petstore_auth 或 api_key)来指定安全使用的剩余操作。

.get("/{id}/{date}").description("Find user by id and date").outType(User.class)
    .security("api_key")

...

.put().description("Updates or create a user").type(User.class)
    .security("petstore_auth", "write:pets,read:pets")

此处的 get 操作使用 Api Key 安全性,而 放置操作则正在使用 OAuth 安全性,具有允许的读取和写入宠物。