2016-04-03 43 views
3

için dayı açıklama ekleyin. BenBen dropwizard REST hizmete üzerinde çalışıyorum taşıyıcı auth

Authorization: Bearer [TOKEN] 

ben yetkilendirme başlığa sahip bazı swagger açıklamaları eklemek için iyi bir yol bulmak istiyoruz Yetkilendirme başlığına olmak belirteç vardır https://bitbucket.org/b_c/jose4j/wiki/Home

kullanarak JWT'de ile kimlik doğrulaması eklemiş çalım-ui.

Kimlik doğrulama param gizleme ve bu parametrelere katacak @HeaderParam

@POST 
@Path("/test/") 
public Foo postBar(
     @Auth @ApiParam(hidden = true) Principal user, 
     @ApiParam("data") Foo bar, 
     @HeaderParam(value="Authorization")String dummy) 

ile bir kukla param ekleyerek, geçici bir çözüm bulduk: Ben Principal user için @HeadParam koyarsanız

{ 
    "name" : "Authorization", 
    "in" : "header", 
    "required" : false, 
    "type" : "string" 
} 

Ben çalışma zamanında almak:

Caused by: org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization. 

[[FATAL] No injection source found for a parameter of type public java.util.Map com.foo.bar.AppResource.get(java.security.Principal) at index 0.; source='ResourceMethod{httpMethod=GET, consumedTypes=[], producedTypes=[application/json], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class com.mykronoz.data.tracking.resources.AppResource, handlerConstructors=[[email protected]]}, definitionMethod=public java.util.Map com.foo.bar.AppResource.get(java.security.Principal), parameters=[Parameter [type=interface java.security.Principal, source=Authorization, defaultValue=null]], responseType=java.util.Map<java.lang.String, java.lang.Object>}, nameBindings=[]}'] 

bunu daha iyi bir yolu var mı?

cevap

1

Bir swaggerdefinition eklerseniz

@SwaggerDefinition(
    securityDefinition = @SecurityDefinition(
    apiKeyAuthDefinitions = { 
     @ApiKeyAuthDefinition(key = "user", name = "Authorization", in = ApiKeyLocation.HEADER) 
    } 
) 
) 

sonra dayı ui ait yetkilendirmesi 'özelliğine erişim elde eder. Bir API anahtarı olarak "Hamiline XXX ...." dizesini ekleme ardından son nokta istediğiniz şekilde ve değere ayarlanmış kullanıcı alanını ayarlamak Yetki başlığıyla çağrılmasına neden olmalıdır.

Uyarı: Ben belirteci kendisi ile sorunlar yaşıyorum çünkü henüz bu çalışma uçtan uca görmedim ama ben geçirildi doğru şeyleri alıyorum anlaşılmaktadır.

+1

i bu @SwaggerDefinition ek açıklama vermek zorundayım birkaç kaynak dosyaları varsa –