Wie definiere ich die grundlegende Authentifizierung mithilfe von Swagger 2.0-Anmerkungen und lässt sie in der Swagger-Benutzeroberfläche anzeigen?
In der Ressource habe ich:
@ApiOperation(value = "Return list of categories", response=Category.class, responseContainer="List", httpMethod="GET", authorizations = {@Authorization(value="basicAuth")})
public Response getCategories();
Ich habe hier gesucht:
https://github.com/swagger-api/swagger-core/wiki/Annotationen#authorization-authorizationscope
Und es heißt "Wenn Sie einmal festgelegt und konfiguriert haben, welche Berechtigungsschemas Sie in Ihrer API unterstützen, können Sie anhand dieser Anmerkungen feststellen, welches Berechtigungsschema für eine Ressource oder einen bestimmten Vorgang erforderlich ist." Wo werden die Autorisierungsschemata angegeben und konfiguriert?.
Update:
Ich habe Code zum Deklarieren des Schemas gefunden, sehe jedoch immer noch keine Informationen zum Authentifizierungsschema in der Benutzeroberfläche. Ich bin mir nicht sicher, was ich vermisse
@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);
}
}
Bei der Verwendung von Springfox 2.6-Anmerkungen müssen Sie zunächst die Standardauthentifizierung als eines der Sicherheitsschemata definieren, wenn Sie das Docket in Ihrer Konfiguration einrichten.
List<SecurityScheme> schemeList = new ArrayList<>();
schemeList.add(new BasicAuth("basicAuth"));
return new
Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo)
.securitySchemes(schemeList)
...
Dann können Sie die Springfox-Anmerkungen in Ihrem Dienst verwenden, um Basic Auth für den Vorgang festzulegen, für den Sie eine Authentifizierung anfordern möchten:
@ApiOperation(value = "Return list of categories", response=Category.class, responseContainer="List", httpMethod="GET", authorizations = {@Authorization(value="basicAuth")})
public Response getCategories();
Ich habe auch damit zu kämpfen. In meinem Fall habe ich das Swagger-Maven-Plugin verwendet. Um dieses Problem zu lösen, habe ich dieses in das maven-Plugin eingefügt:
<securityDefinitions>
<securityDefinition>
<name>basicAuth</name>
<type>basic</type>
</securityDefinition>
</securityDefinitions>
Danach konnte ich es wie folgt auf meiner Ressource hinzufügen:
@Api(value = "My REST Interface", authorizations = {@Authorization(value="basicAuth")})
Der generierte Json enthielt das Sicherheitselement für jeden Endpunkt:
"security":[{
"basicAuth" : []
}]
Und die Sicherheitsdefinition:
"securityDefinitions" : {
"basicAuth" : {
"type" : "basic"
}
}
Ich hoffe, das hilft auch anderen.
Sie können die @SwaggerDefinition verwenden http://swagger.io/customizing-your-auto-generated-swagger-definitions-in-1-5-x/
oder Sie können das Swagger-Objekt direkt konfigurieren. Hier ein Beispiel http://www.programcreek.com/Java-api-examples/index.php?source_dir=rakam-master/rakam/src/main/ Java/org/rakam/WebServiceRecipe.Java