如何在JAX-RS服务中读取授权标头

帕万劳特克

我是Authorization标头的新手,尝试使用JAX-RS服务创建授权(和身份验证)

我的JavaScript代码段如下所示:

            sUrl = getURL() + "/com.cabRoutePlanner.Login/Login";  
            var oHeaders = {};
            oHeaders['Authorization'] = "Basic " + btoa(getUserName() + ":" + getPassword());

            var request = {
                headers : oHeaders,
                requestUri : sUrl,
                data: connectionData,
                method : "POST"
            };
            OData.request(request, onSuccessForRegister, onRegError);

现在,我想在JAX-RS服务中读取此授权标头,即,在Java Rest服务中返回用户名和密码,并检查数据库。我感到困惑的是,我不知道如何使用此授权标头。如果有人可以向我展示REST服务中函数的声明,并只是访问我的用户名和passwrd,那将是很棒的。

我以某种方式编写了代码,并获得了Eclipse的一些直觉和大力帮助

@Path("/Log")
@POST
@Produces(MediaType.APPLICATION_JSON)
public Response log(HttpServletRequest req)throws JSONException
{
    JSONObject returnObject = new JSONObject();
    String authorization = req.getHeader("Authorization");
    if (authorization != null && authorization.startsWith("Basic")) 
    {
        //byte[] message = authorization.substring("Basic".length()).trim().getBytes();
        String credentials = authorization.substring("Basic".length()).trim();
        byte[] decoded = DatatypeConverter.parseBase64Binary(credentials);
        String decodedString = new String(decoded);
        String[] actualCredentials = decodedString.split(":");
        String ID = actualCredentials[0];
        String Password = actualCredentials[1];
        String Result = actualLog(ID, Password);
        if(Result.equals("ID Does not exist"))
        {
            returnObject.put("Result", "ID Does not exist");
            return Response.status(401).entity(returnObject).build();

        }
        else if(Result.equals("Password incorrect for given User"))
        {
            returnObject.put("Result", "Password incorrect for given User");
            return Response.status(401).entity(returnObject).build();
        }
        else
        {
            returnObject.put("Result", Result);
            return Response.status(200).entity(returnObject).build();
        }
    }
    else
    {
        returnObject.put("Result", "Authorization header wrong");
        return Response.status(401).entity(returnObject).build();
    }
}

现在,这是我正在获取的当前异常,我无法理解它:

 Oct 06, 2014 4:13:59 PM com.sun.jersey.spi.container.ContainerRequest getEntity
 SEVERE: A message body reader for Java class javax.servlet.http.HttpServletRequest, and Java type interface javax.servlet.http.HttpServletRequest, and MIME media type application/octet-stream was not found.
 The registered message body readers compatible with the MIME media type are:
 application/octet-stream ->
 com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
 com.sun.jersey.core.impl.provider.entity.FileProvider
 com.sun.jersey.core.impl.provider.entity.InputStreamProvider
 com.sun.jersey.core.impl.provider.entity.DataSourceProvider
 com.sun.jersey.core.impl.provider.entity.RenderedImageProvider
 */* ->
 com.sun.jersey.core.impl.provider.entity.FormProvider
 com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider
 com.sun.jersey.core.impl.provider.entity.StringProvider
 com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
 com.sun.jersey.core.impl.provider.entity.FileProvider
 com.sun.jersey.core.impl.provider.entity.InputStreamProvider
 com.sun.jersey.core.impl.provider.entity.DataSourceProvider
 com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
 com.sun.jersey.core.impl.provider.entity.ReaderProvider
 com.sun.jersey.core.impl.provider.entity.DocumentProvider
 com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader
 com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader
 com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader
 com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$General
 com.sun.jersey.json.impl.provider.entity.JSONArrayProvider$General
 com.sun.jersey.json.impl.provider.entity.JSONObjectProvider$General
 com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
 com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
 com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General
 com.sun.jersey.core.impl.provider.entity.EntityHolderReader
 com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$General
 com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$General
 com.sun.jersey.json.impl.provider.entity.JacksonProviderProxy
气体

您应该使用@Context HttpServletRequest request注入方法中的请求,如下所示:

public Response log(@Context HttpServletRequest req) throws JSONException

可以使用其他有用的对象进行注入@Context(有关详细信息,请参见JAX-RS规范):

  • Application
  • UriInfoHttpHeaders
  • SecurityContext
  • ProvidersRequest
  • ServletConfigServletContextHttpServletRequestHttpServletResponse

所以你的情况你也可以使用@Context HttpHeaders headers,然后

List<String> authHeaders = headers.getRequestHeader(HttpHeaders.AUTHORIZATION);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何验证nestjs中的授权标头?

来自分类Dev

如何从请求中删除授权标头

来自分类Dev

如何在AFNetworking中设置授权标头

来自分类Dev

如何在JAX-RS(Jersey)中读取cookie

来自分类Dev

如何在PeopleSoft中的REST调用中添加HTTP授权标头?

来自分类Dev

如何在Vuejs和Node中设置授权标头和保护路由

来自分类Dev

如何在Angular的api调用中传递授权标头令牌

来自分类Dev

Django如何在请求中传递基本授权标头?

来自分类Dev

如何在Leaflet中为平铺请求添加自定义授权标头

来自分类Dev

如何在wso2 esb中为不同的端点设置不同的授权标头

来自分类Dev

如何在getTileUrl中为ImageMapType Javascript添加授权标头

来自分类Dev

如何在Android上发布授权标头,令牌存储在共享首选项中

来自分类Dev

如何在 Volley 的 GET 请求中传递参数并添加授权标头

来自分类Dev

如何使用授权标头PHP

来自分类Dev

如何在HTML表单或A href上设置授权标头

来自分类Dev

如何在JAX-RS中管理状态?

来自分类Dev

如何在Jax-RS WriterInterceptor中中止REST请求?

来自分类Dev

如何在JAX-RS过滤器中读取JSON有效载荷

来自分类Dev

如何在GAS中的授权标头错误中解决无效的键=值对(缺少等号)的问题

来自分类Dev

如何在jax-rs Restful Web服务中获取Json对象

来自分类Dev

如何在JAX-RS Web服务中以XML返回响应?

来自分类Dev

如何在JSF框架中实现JAX-RS RESTful服务

来自分类Dev

如何在jax-rs Restful Web服务中获取Json对象

来自分类Dev

如何将授权标头WSO2(API管理器)传递给我的后端服务?

来自分类Dev

如何使用Retrofit2 + RxJava添加授权标头

来自分类Dev

如何使用Android的httpURLconnection设置授权标头

来自分类Dev

如何在JAX / Python中解析ValueError`vector :: reserve`?

来自分类Dev

如何在Swagger UI中发送带有请求的授权标头?

来自分类Dev

如何在背景图片上设置授权标头:url()?

Related 相关文章

  1. 1

    如何验证nestjs中的授权标头?

  2. 2

    如何从请求中删除授权标头

  3. 3

    如何在AFNetworking中设置授权标头

  4. 4

    如何在JAX-RS(Jersey)中读取cookie

  5. 5

    如何在PeopleSoft中的REST调用中添加HTTP授权标头?

  6. 6

    如何在Vuejs和Node中设置授权标头和保护路由

  7. 7

    如何在Angular的api调用中传递授权标头令牌

  8. 8

    Django如何在请求中传递基本授权标头?

  9. 9

    如何在Leaflet中为平铺请求添加自定义授权标头

  10. 10

    如何在wso2 esb中为不同的端点设置不同的授权标头

  11. 11

    如何在getTileUrl中为ImageMapType Javascript添加授权标头

  12. 12

    如何在Android上发布授权标头,令牌存储在共享首选项中

  13. 13

    如何在 Volley 的 GET 请求中传递参数并添加授权标头

  14. 14

    如何使用授权标头PHP

  15. 15

    如何在HTML表单或A href上设置授权标头

  16. 16

    如何在JAX-RS中管理状态?

  17. 17

    如何在Jax-RS WriterInterceptor中中止REST请求?

  18. 18

    如何在JAX-RS过滤器中读取JSON有效载荷

  19. 19

    如何在GAS中的授权标头错误中解决无效的键=值对(缺少等号)的问题

  20. 20

    如何在jax-rs Restful Web服务中获取Json对象

  21. 21

    如何在JAX-RS Web服务中以XML返回响应?

  22. 22

    如何在JSF框架中实现JAX-RS RESTful服务

  23. 23

    如何在jax-rs Restful Web服务中获取Json对象

  24. 24

    如何将授权标头WSO2(API管理器)传递给我的后端服务?

  25. 25

    如何使用Retrofit2 + RxJava添加授权标头

  26. 26

    如何使用Android的httpURLconnection设置授权标头

  27. 27

    如何在JAX / Python中解析ValueError`vector :: reserve`?

  28. 28

    如何在Swagger UI中发送带有请求的授权标头?

  29. 29

    如何在背景图片上设置授权标头:url()?

热门标签

归档