web-dev-qa-db-fra.com

Swagger 2.0 où déclarer un schéma d'authentification de base

Comment définir l'authentification de base à l'aide d'annotations Swagger 2.0 et l'afficher dans l'interface utilisateur Swagger. 

Dans la ressource j'ai:

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

J'ai regardé ici:

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

Et il indique "Une fois que vous avez déclaré et configuré les schémas d'autorisation que vous prenez en charge dans votre API, vous pouvez utiliser ces annotations pour indiquer le schéma d'autorisation requis pour une ressource ou une opération spécifique" Mais je ne trouve rien qui parle de où déclarer et configurer les schémas d'autorisation.

Mettre à jour:

J'ai trouvé du code sur la façon de déclarer le schéma, mais je ne vois toujours aucune information sur le schéma d'authentification dans l'interface utilisateur. Je ne sais pas ce qui me manque

@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

À l'aide des annotations Springfox 2.6, vous devez d'abord définir l'authentification de base comme l'un des schémas de sécurité lorsque vous configurez le dossier dans votre configuration, comme suit:

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

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

Vous pouvez ensuite utiliser les annotations Springfox dans votre service pour définir l'authentification de base pour l'opération pour laquelle vous souhaitez exiger une authentification:

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

J'ai lutté avec cela aussi. Dans mon cas, j'ai utilisé le plugin swagger-maven-plugin. Pour résoudre ce problème, j'ai ajouté ceci dans le plugin maven:

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

Après cela, j'ai pu l'ajouter à ma ressource comme ceci:

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

Le fichier json généré incluait l'élément de sécurité pour chaque noeud final:

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

Et la définition de la sécurité:

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

J'espère que cela aide les autres aussi.

5
kukudas
0
Laurent Picquet