2015-10-30 15 views
9

Ich bin neu bei Swagger.Swagger UI übergibt Authentifizierungstoken an API-Aufruf in Header

Ich benutze Swagger UI, um Swagger-Dokumentation zu generieren. Ich habe zwei API-Aufrufe. Der erste Aufruf besteht darin, ein Token basierend auf dem Benutzernamen und dem Passwort zu generieren. Der zweite Anruf benötigt das vom ersten Anruf generierte Token.

Wie setze ich dieses Token für den zweiten Anruf mit Swagger UI?

+1

Versuchen Sie und lassen Sie wissen, –

Antwort

16

@ApiImplicitParams und @ApiImplicitParam den Trick:

@GET 
@Produces("application/json") 
@ApiImplicitParams({ 
    @ApiImplicitParam(name = "Authorization", value = "Authorization token", 
        required = true, dataType = "string", paramType = "header") 
}) 
public String getUser(@PathParam("username") String userName) { 
    ... 
} 

Lesen Sie mehr here.

Die Swagger-Benutzeroberfläche wird aktualisiert, damit Sie Ihr Token von dort senden können. Änderungen an HTML sind nicht erforderlich.


Hinweis: Vor einiger Zeit, wenn ein REST-API mit Swagger zu dokumentieren, wurde mir klar, dass nur das Hinzufügen @ApiImplicitParam nicht genug ist (auch wenn Sie nur einen Parameter hat). Wie auch immer, Sie müssen auch @ApiImplicitParams hinzufügen.

+0

wie Token von POST/OAUTH/Token durch Hinzufügen von Parametern wie Benutzername, Passwort und Grant-Typ erhalten? weil in swagger UI nur parameters Knoten aufgeführt ist, wie benutzerdefinierte Parameter dort hinzugefügt werden? –

1

Sie müssten die swagger index page anpassen, um das zu erreichen, glaube ich.

Sie können die Eingabe 'input_apiKey' ausblenden und zwei Eingaben für Benutzername und Passwort hinzufügen. Dann machen Sie einen Ajax-Aufruf, um die versteckte Eingabe mit Ihrem Token zu aktualisieren.

1

Dies ist eine alte Frage, aber das ist, wie ich es vor kurzem mit Version 2.7.0 für meine JWT gelöst Token

In Ihrer Prahlerei Konfiguration fügt unten SecurityConfiguration Bohne. Wichtiger Teil, bei dem das fünfte Argument leer oder null bleibt.

@Bean 
    public SecurityConfiguration securityInfo() { 
     return new SecurityConfiguration(null, null, null, null, "", ApiKeyVehicle.HEADER,"Authorization",""); 
    } 

securitySchemes(Lists.newArrayList(apiKey())) zu Ihrem Haupt-Docket bean hinzufügen.

@Bean 
    public Docket docket() 
    { 
     return new Docket(DocumentationType.SWAGGER_2).select() 
      .....build().apiInfo(...).securitySchemes(Lists.newArrayList(apiKey())); 
    } 


    private ApiKey apiKey() { 
     return new ApiKey("Authorization", "Authorization", "header"); 
    } 

Dann in UI, müssen Sie auf Autorisieren Taste und Eingang "Bearer access_token" (für Authorization Textfeld) klicken, wo access_token Token von JWT Token-Server zur Verfügung gestellt wird.

Sobald diese Autorisierung gespeichert ist, wird diese für alle Endpunkte wirksam. Das Hinzufügen eines separaten Textfelds für jeden Endpunkt sieht sehr umständlich aus.