Я работаю над сервисом REST-сервиса dropwizard. я добавил проверку подлинности с JWT с использованием https://bitbucket.org/b_c/jose4j/wiki/HomeДобавить аннотацию swagger для удостоверения на предъявителя
Маркер должен быть в заголовке Authorization
Authorization: Bearer [TOKEN]
Я хотел бы найти хороший способ, чтобы добавить некоторые чванство аннотаций иметь заголовок авторизации на чванство-щ.
Я нашел работу вокруг, скрывая параметры аутентификации и добавление фиктивных параметров с @HeaderParam
@POST
@Path("/test/")
public Foo postBar(
@Auth @ApiParam(hidden = true) Principal user,
@ApiParam("data") Foo bar,
@HeaderParam(value="Authorization")String dummy)
Это добавит в параметры:
{
"name" : "Authorization",
"in" : "header",
"required" : false,
"type" : "string"
}
Если я поставил @HeadParam
для Principal user
Я получаю во время работы:
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=[]}']
Есть ли лучший способ сделать это?
Если у вас есть несколько файлов ресурсов, где я должен предоставить эту аннотацию @SwaggerDefinition –