相关疑难解决方法(0)

如何使用Jersey Client对启用了JAAS的Web服务器进行身份验证?

我有以下场景:

服务器:Jetty(配置JAAS)

客户端:通过JUnit调用Jersey(通过Maven)

我在Web服务器中设置了JAAS.我使用客户端部分作为测试.

在服务器端,用户通过具有通过JAAS处理的基本身份验证的表单进行身份验证.显然,用户需要在能够查看某些页面之前进行身份验证.

我想在尝试访问安全页面之前能够通过Jersey登录.如何才能做到这一点?我已经检查过你可以定义一个过滤器,但我不太清楚如何使用它.并且 - 一旦用户通过表单登录,我该如何进行(从客户端)到我真正感兴趣的页面?

我真的很感激,如果有人能告诉我一个例子如何在泽西岛的客户端做到这一点.

我有以下JUnit测试用例方法:

@Test
public void testLogin()
        throws IOException
{
    String URL_LOGIN = "http://localhost:9080/foo/auth.html";
    Client client = Client.create();

    String username = "me";
    String password = "me";

    final HTTPBasicAuthFilter authFilter = new HTTPBasicAuthFilter(username, password);
    client.addFilter(authFilter);
    client.addFilter(new LoggingFilter());

    WebResource webResource = client.resource(URL_LOGIN);
    // I even tried:
    // webResource.header("Authorization", "Basic " + "base64encoded_userid:password").type("application/xml");

    String page = webResource.post(String.class);

    System.out.println(page);
}
Run Code Online (Sandbox Code Playgroud)

请注意:

1)http:// localhost:9080/foo/auth.html是我应该在成功验证后看到的页面.

2)我实际上看到了http:// localhost:9080/foo/login.html的输出.

3)显然,通过浏览器,我可以通过login.html页面成功登录.

我似乎错过了什么?

java jersey maven

11
推荐指数
2
解决办法
4万
查看次数

使用Jersey的RESTful Web服务的会话管理

我正在我的应用程序和MySQL 之间使用Jersey开发Restful Web ServiceAndroid, iPhone.我还Hibernate用来将数据映射到数据库.

我有一个sessionId(键).它是在用户登录系统时生成的.

User课堂上:

public Session daoCreateSession() {
    if (session == null) {
        session = new Session(this);
    } else {
        session.daoUpdate();
    }
    return session;
}
Run Code Online (Sandbox Code Playgroud)

Session课堂上:

Session(User user) {
    this.key = UUID.randomUUID().toString();
    this.user = user;
    this.date = new Date();
}

void daoUpdate() {
    this.key = UUID.randomUUID().toString();
    this.date = new Date();
}
Run Code Online (Sandbox Code Playgroud)

当用户成功登录系统时,我将此sessionId发送到移动应用客户端.然后,当我想根据登录用户从数据库中获取一些信息时,我将此会话密钥作为in the REST Services每个请求的身份验证.

例如,对于用户参与的项目列表,我使用 client.GET(SERVER_ADDRESS/project/get/{SessionID})

不确定的client.GET(SERVER_ADDRESS/project/get/{username}).

如果它不是有效的会话密钥,我将向客户端发送403禁止代码.你也可以看看这里 …

rest spring hibernate jersey spring-security

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

jersey ×2

hibernate ×1

java ×1

maven ×1

rest ×1

spring ×1

spring-security ×1