web-dev-qa-db-ja.com

基本認証スキーマを宣言するSwagger 2.0

Swagger 2.0アノテーションを使用して基本認証を定義し、それをswagger UIに表示するにはどうすればよいですか。

私が持っているリソースには:

@ApiOperation(value = "Return list of categories", response=Category.class, responseContainer="List", httpMethod="GET", authorizations = {@Authorization(value="basicAuth")})
public Response getCategories();

私はここを見ました:

https://github.com/swagger-api/swagger-core/wiki/Annotations#authorization-authorizationscope

また、「APIでサポートする認可スキームを宣言および構成したら、これらのアノテーションを使用して、リソースまたは特定の操作に必要な認可スキームを確認できます」と表示されますが、説明するものは見つかりません認可スキームを宣言および構成する場所。

更新:

スキーマの宣言方法に関するコードを見つけましたが、UIに認証スキーマに関する情報が表示されません。私は何が欠けているのか分かりません

@SwaggerDefinition
public class MyApiDefinition implements ReaderListener {
    public static final String BASIC_AUTH_SCHEME = "basicAuth";

    @Override
    public void beforeScan(Reader reader, Swagger swagger) {
    }

    @Override
    public void afterScan(Reader reader, Swagger swagger) {
        BasicAuthDefinition basicAuthDefinition = new BasicAuthDefinition();
        swagger.addSecurityDefinition(BASIC_AUTH_SCHEME, basicAuthDefinition);
    }
}
18
mad_fox

Springfox 2.6アノテーションを使用して、構成でDocketをセットアップするとき、次のように、最初にセキュリティスキームの1つとして基本認証を定義する必要があります。

List<SecurityScheme> schemeList = new ArrayList<>();
schemeList.add(new BasicAuth("basicAuth"));

return new 
  Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo)
                                     .securitySchemes(schemeList)
                                     ...

次に、サービスでSpringfoxアノテーションを使用して、認証を必要とする操作の基本認証を設定できます。

@ApiOperation(value = "Return list of categories", response=Category.class, responseContainer="List", httpMethod="GET", authorizations = {@Authorization(value="basicAuth")})
public Response getCategories();
17
lreeder

私もこれに苦労しました。私の場合、私はswagger-maven-pluginを使用しました。これを解決するために、これをmavenプラグイン内に追加しました。

<securityDefinitions>
  <securityDefinition>
    <name>basicAuth</name>
    <type>basic</type>
  </securityDefinition>
</securityDefinitions>

その後、次のようにリソースに追加できました。

@Api(value = "My REST Interface", authorizations = {@Authorization(value="basicAuth")})

生成されたjsonには、各エンドポイントのセキュリティ要素が含まれていました。

"security":[{
  "basicAuth" : []
 }]

そしてセキュリティの定義:

  "securityDefinitions" : {
    "basicAuth" : {
      "type" : "basic"
    }
  }

これが他の人にも役立つことを願っています。

5
kukudas
0
Laurent Picquet