2017-04-17 32 views
11

Mam Web API (ASP.NET Core) i staram się dostosować przechwałkę, aby wykonać z niego połączenia. Połączenia muszą zawierać nagłówek Authorization i używam uwierzytelniania na okaziciela. Połączenia z aplikacji innych firm, takich jak Listonosz itp., Są prawidłowe. Ale mam problem z ustawianiem nagłówków dla przechwałek (z jakiegoś powodu nie otrzymuję nagłówków). Jak to wygląda teraz:Konfigurowanie Swagger (ASP.NET Core) za pomocą nagłówków Authorization (Nośnik)

"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 
     } 
    }, 

Odpowiedz

21

Przede wszystkim, można użyć Swashbuckle.AspNetCore pakiet Nuget do automatycznego generowania definicji Swagger.

Po zainstalowaniu pakietu, konfiguracja go w Startup.cs w metodzie ConfigureServices

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

Następnie można użyć przycisku Autoryzuj w prawym górnym rogu strony.

przynajmniej można spróbować użyć tego pakietu do generowania poprawnej definicji Swagger

+0

Twoje wyjaśnienie rozwiązało problem dla mnie. –

+0

Dobra odpowiedź, ale gdy robię to z płytką ABP, to nie działa z Dynamic Web Api (https://aspnetboilerplate.com/Pages/Documents/Dynamic-Web-API) –

+2

@VadimK To działało idealnie, dopóki nie zaktualizowałem do .NET Core 2.0 – monty

1

Obecnie Swagger ma funkcjonalność uwierzytelniania z JWT-żeton i może automatycznie dodać znacznik w nagłówku, I odpowiedział here.