it-swarm.com.de

Swagger 2.0, wo das Basic Auth Schema deklariert wird

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);
    }
}
16
mad_fox

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();
14
lreeder

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.

5
kukudas
0
Laurent Picquet