2015-05-13 16 views
5

temel auth'ı swashbuckle api'nin belgelerine nasıl entegre edebilirim?http temel auth

ben swaggerconfig dosyasında bir Temel Kimlik işlevi var olduğunu gördük:

c.BasicAuth("basic").Description("Basic HTTP Authentication"); 

i yaptık Ne:

  • önceki çizgisini uncommented ama hiçbir şey değişmedi!

Neyi özlediğim hakkında bir fikriniz var mı?

Teşekkürler!

public class AddAuthorizationHeaderParameterOperationFilter: IOperationFilter 
{ 
    public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription) 
    { 
     var filterPipeline = apiDescription.ActionDescriptor.GetFilterPipeline(); 
     var isAuthorized = filterPipeline 
             .Select(filterInfo => filterInfo.Instance) 
             .Any(filter => filter is IAuthorizationFilter); 

     var allowAnonymous = apiDescription.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any(); 

     if (isAuthorized && !allowAnonymous) 
     { 
      operation.parameters.Add(new Parameter { 
       name = "Authorization", 
       @in = "header", 
       description = "access token", 
       required = true, 
       type = "string"      
      }); 
     } 
    } 
} 

API kullanıcı alan değeri yazmak zorundadır: Temel

cevap

6

İşte ben httpbasic kimlik yapmıştım [un: pw] .tobase64.

Referanslar: swashbuckle's issue 326 swashbuckle issue 2

+0

için

filter => filter is IAuthorizationFilter 

daha genel değiştirmek isteyeceksiniz .Web.Http 4.0.0 yüklenemedi. Çerçeve kullanımı 4.6.1. Herhangi bir yardım –

5

@MarwaAhmad 'ın en mükemmel cevabı üzerine bir miktar iyileşme null parametreler için kontrol etmektir (örneğin basit bir GET veya URL tüm parametreleri içeren çağrı). Ayrıca Temel Kimlik Doğrulama için ayrıntılar eklendi. HTTPS uygulamak demek için zaten global IAuthorizationFilter kullanırsanız

Ayrıca, o zaman Sistemi hatası alınıyor belirli

filter => filter is AuthorizeAttribute 
public class AddAuthorizationHeaderParameterOperationFilter : IOperationFilter 
    { 
     public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription) 
     { 
      var filterPipeline = apiDescription.ActionDescriptor.GetFilterPipeline(); 
      var isAuthorized = filterPipeline.Select(filterInfo => filterInfo.Instance) 
       .Any(filter => filter is IAuthorizationFilter); 

      var allowAnonymous = 
       apiDescription.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any(); 

      if (isAuthorized && !allowAnonymous) 
      { 
       if (operation.parameters == null) 
        operation.parameters = new List<Parameter>(); 

       operation.parameters?.Add(new Parameter 
       { 
        name = "Authorization", 
        @in = "header", 
        description = "Basic HTTP Base64 encoded Header Authorization", 
        required = true, 
        type = "string" 
       }); 
      } 
     } 
    } 
+0

System.Web.Http 4.0.0 yüklenemedi. Çerçeve kullanımı 4.6.1. Herhangi bir yardım –

İlgili konular