泽西安全文摘与基本认证

时间:2014-03-01 17:11:10

标签: java web-services authentication jersey digest

有人可以向我解释为什么基本身份验证工作正常,而且摘要无法正常工作或者无法显示在服务器上的http标头中。

public String login(UserDTO user)
{
        ClientConfig clientConfig = new DefaultClientConfig();
        clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
        Client client = Client.create(clientConfig);
        //    client.addFilter(new HTTPBasicAuthFilter(user.getUsername(), user.getPassword()));
        client.addFilter(new HTTPDigestAuthFilter(user.getUsername(), user.getPassword()));
        ClientResponse response = client.resource(url + "user/login").accept("application*json").type("application/json").get(ClientResponse.class);

        System.out.println(response.toString());

        return null;
}

如果我使用:

client.addFilter(new HTTPBasicAuthFilter(user.getUsername(), user.getPassword()));

我在服务器上获得了一个授权标题:

USER LOGIN REQUEST
request:uri: /StambomenWebAPI/rest/user/login
method: GET
QueryString: null
Parameters:
Headers:
Name: accept    Value: application*json
Name: content-type  Value: application/json
Name: authorization Value: Basic QXhsOkxvbA==
Name: user-agent    Value: Java/1.7.0_51
Name: host  Value: localhost:8084
Name: connection    Value: keep-alive
USER AND PASS[XXXXX, XXXXX]

但是当我使用

 client.addFilter(new HTTPDigestAuthFilter(user.getUsername(), user.getPassword()));

我没有得到授权标题字段......:s?

使用带有tomcat v7的球衣

我的问候和提前帮助

1 个答案:

答案 0 :(得分:2)

由于摘要式身份验证工作流,您未获得授权标头字段。有关详细信息,请参阅here,但基本上是:

  1. 客户端发出没有Authorization标题
  2. 的请求
  3. 服务器响应401状态和WWW-Authenticate标题,如下所示:

    Digest realm="testrealm@host.com",
    qop="auth,auth-int",
    nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
    opaque="5ccc069c403ebaf9f0171e9517f40e41"
    
  4. 客户端使用正确的Authorization标头重复请求,因为它具有来自服务器的摘要信息

  5. 从客户端来看,这一切都由Jersey HTTPDigestAuthFilter处理。因此,过滤器首先发出没有Authorization标头的请求,并且您的服务器应返回401状态,其中WWW-Authenticate标头具有必要的摘要信息。然后,过滤器使用正确的Authorization标头重复请求,您的服务器应进行身份验证并返回内容。

    在初始握手之后,HTTPDigestAuthFilter会记住必要的摘要信息,因此对于第一次请求后的所有请求,都会包含Authorization标题。