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);
}
}
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();
私もこれに苦労しました。私の場合、私は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"
}
}
これが他の人にも役立つことを願っています。
@SwaggerDefinitionを使用できます http://swagger.io/customizing-your-auto-generated-swagger-definitions-in-1-5-x/
または、swaggerオブジェクトを直接設定できます。ここに例を示します http://www.programcreek.com/Java-api-examples/index.php?source_dir=rakam-master/rakam/src/main/Java/ org/rakam/WebServiceRecipe.Java