2017-04-17 10 views
11

Ich habe eine Web-API (ASP.NET-Core) und ich versuche, den Swagger anzupassen, um die Anrufe von ihm zu machen. Die Aufrufe müssen den Berechtigungsheader enthalten, und ich verwende die Bearer-Authentifizierung. Die Anrufe von Drittanbieter-Apps wie Postman, etc. gehen gut. Aber ich habe das Problem mit dem Einrichten der Header für Swagger (aus irgendeinem Grund bekomme ich nicht die Header). Dies ist, wie es jetzt aussieht:Einrichten von Swagger (ASP.NET Core) mithilfe der Berechtigungsheader (Bearer)

"host": "localhost:50352", 
    "basePath": "/" , 
    "schemes": [ 
    "http", 
    "https" 
    ], 
"securityDefinitions": { 
    "Bearer": { 
     "name": "Authorization", 
     "in": "header", 
     "type": "apiKey", 
     "description": "HTTP/HTTPS Bearer" 
    } 
    }, 
    "paths": { 
    "/v1/{subAccountId}/test1": { 
     "post": { 
     "tags": [ 
      "auth" 
     ], 
     "operationId": "op1", 
     "consumes": ["application/json", "application/html"], 
     "produces": ["application/json", "application/html"], 
     "parameters": [ 
      { 
      "name": "subAccountId", 
      "in": "path", 
      "required": true, 
      "type": "string" 
      } 
     ], 
     "security":[{ 
      "Bearer": [] 
     }], 
     "responses": { 
      "204": { 
      "description": "No Content" 
      }, 
      "400": { 
      "description": "BadRequest", 
      "schema": { 
       "$ref": "#/definitions/ErrorResponse" 
      } 
      }, 
      "401": { 
      "description": "Unauthorized", 
      "schema": { 
       "$ref": "#/definitions/ErrorResponse" 
      } 
      }, 
      "500": { 
      "description": "InternalServerError", 
      "schema": { 
       "$ref": "#/definitions/ErrorResponse" 
      } 
      } 
     }, 
     "deprecated": false 
     } 
    }, 

Antwort

21

Zu allererst Sie Swashbuckle.AspNetCore nuget Paket für die automatische Generierung Ihrer Prahlerei Definition verwenden können.

Nachdem Sie Paket installiert haben, Setup es in Startup.cs in Verfahren ConfigureServices

services.AddSwaggerGen(c => { 
c.AddSecurityDefinition("Bearer", new ApiKeyScheme() { In = "header", Description = "Please insert JWT with Bearer into field", Name = "Authorization", Type = "apiKey" }); 

Dann können Sie Autorisieren Button oben rechts auf der Webseite.

Mindestens können Sie versuchen, dieses Paket zu verwenden gültige Prahlerei Definition für die Authentifizierung mit JWT-Token

+0

Ihre Erklärung hat das Problem für mich gelöst. –

+0

Gute Antwort, aber wenn ich das mit ABP Boilerplate mache, funktioniert es nicht mit Dynamic Web API (https://aspnetboilerplate.com/Pages/Documents/Dynamic-Web-API) –

+2

@VadimK Das hat perfekt funktioniert, bis ich aktualisiert habe .NET Core 2.0 – monty

1

Derzeit Swagger hat Funktionalität zu generieren und Token in Header automatisch hinzufügen, ich here beantwortet haben.

Verwandte Themen