2017-08-08 3 views
0

J'usinig jhipster pour générer un projet, maintenant Ive fixé certains critères d'évaluation avecComment activer swagger pour accepter les jetons oauth2?

@PostMapping("/myEndpoint") 
@PreAuthorize("#oauth2.hasScope('write')") 

Il fonctionne très bien mais fanfaronnades je ne vois pas où envoyer le jeton ...

Ive travaillé avec fanfaronnades avant (ne pas les configurer) et je sais est possible, mais je ne suis pas sûr si une config est swagger ou est mes points de terminaison, une idée?

+1

pouvez-vous partager votre config fanfaronnades s'il vous plaît? –

Répondre

0

Vous pouvez annoter votre méthode avec quelque chose comme

@ApiOperation(authorizations = { 
    @Authorization(value = "my_oauth", scopes = { 
     @AuthorizationScope(scope = "write") 
    }) 
}) 

Ou régler avec regexp dans un dossier de springfox avec un SecurityContext (adapter le regexp pour couvrir plusieurs points de terminaison si vous voulez)

private SecurityContext securityContext() { 
    return SecurityContext.builder() 
     .securityReferences(writeAuth()) 
     .forPaths(PathSelectors.regex("/myEndpoint")) 
     .build(); 
} 

List<SecurityReference> writeAuth() { 
    AuthorizationScope authorizationScope 
     = new AuthorizationScope("write", ""); 
    AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; 
    authorizationScopes[0] = authorizationScope; 
    return newArrayList(
     new SecurityReference("my_oauth", authorizationScopes)); 
} 

Vous devrez également probablement définir les définitions de sécurité en configurant le dossier SecuritySchemes

private OAuth oauth() { 
    AuthorizationScope authorizationScope 
     = new AuthorizationScope("write", "can write"); 
    return new OAuth("my_oauth", newArrayList(authorizationScope), newArrayList(new ResourceOwnerPasswordCredentialsGrant("/oauth/token"))); 
} 

Je pense que le dossier par défaut est maintenant configuré dans le jhipster lib de sorte que vous ne serez pas en mesure de personnaliser facilement et vous aurez probablement créer un nouveau grain de dossier pour ajouter vos SecuritySchemes et SecurityContext

@Bean 
public Docket myApi() { 
    return new Docket(DocumentationType.SWAGGER_2) 
     .groupName("alt") 
     .select() 
     ... 
     .securitySchemes(newArrayList(oauth())) 
     .securityContexts(newArrayList(securityContext())) 
     ; 
} 

votre nouvelle spécification sera disponible à http://localhost:8080/v2/api-docs?group=alt

Pour plus d'informations à ce sujet, voir le springfox doc: http://springfox.github.io/springfox/docs/current/#getting-started-spring-boot