httpbin-rs 0.1.0

使用 Rust 实现 httpbin
# auth

在 openapi 中,集成接口认证。

首先,我们需要自定义安全认证的插件,例如 `SecurityAddon`,并为其实现 `Modify` trait,参考以下代码:

```rust
#[derive(OpenApi)]
#[openapi(
    ...
    modifiers(&SecurityAddon)
)]
pub(crate) struct ApiDoc;

struct SecurityAddon;

impl Modify for SecurityAddon {
    fn modify(&self, openapi: &mut utoipa::openapi::OpenApi) {
        let components = openapi.components.as_mut().unwrap();

        components.add_security_scheme(
            "bearerAuth",
            SecurityScheme::Http(
                HttpBuilder::new()
                    .scheme(HttpAuthScheme::Bearer)
                    .bearer_format("JWT")
                    .build(),
            ),
        );

        components.add_security_scheme(
            "basicAuth",
            SecurityScheme::Http(HttpBuilder::new().scheme(HttpAuthScheme::Basic).build()),
        );
    }
}
```

然后,我们可以在使用 `#[utoipa::path]` 宏时,为其添加安全认证,参考以下代码:

```rust
#[utoipa::path(
    tag = TAG,
    get,
    path = "/bearer",
    responses(
        (status=200, description="Sucessful authentication."),
        (status=401, description="Unsuccessful authentication.")
    ),
    security(
        (),
        ("bearerAuth" = [])
    )
)]
...
```