将JAAS表单身份验证传递给REST服务

时间:2014-05-20 14:04:01

标签: java rest authentication jaas

我正在使用JAAS表单身份验证构建struts2 Web应用程序。该项目包含一些JSP页面和REST服务。我的身份验证对我的jsp页面正常工作,但是在我的一个JSP页面中,我正在调用REST服务,似乎身份验证没有传递给REST服务。

以下是它的工作原理:

我导航到我的网络应用程序网址localhost:8080 / PersonPortal / index.jsp,其中包含几个输入文本框和一个提交按钮。

当我在浏览器中访问时,它会按预期自动重定向到我的login.jsp页面:

<form method="post" action="j_security_check">
user:<input type="text" name="j_username"/>
pass:<input type="text" name="j_password"/>
<input type="submit" value="Submit"/>
</form>

登录后。我按预期进入索引页面。现在问题。在我的索引页面上,我有几个文本框和提交按钮。我正在将我的用户输入表单提交给struts操作。在我的struts动作类中,我正在调用我的REST服务:

//Create entity from user input
User user = new User();
user.setName(name);
user.setSsn(ssn);

//Call REST service
ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target("http://localhost:8080/PersonPortal/api/User");
Response response = target.request().post(Entity.entity(user, MediaType.APPLICATION_JSON));

//get output
String output = response.readEntity(String.class);

这是问题所在。我没有在输出中获得正确的响应,而是获取了JAAS登录页面的HTML代码。

即使我在我第一次在Web浏览器中访问应用程序时已经过身份验证,它在尝试访问REST服务时再次要求身份验证。知道如何将当前登录凭据传递给REST服务吗?

另一点信息:登录后,如果我直接在浏览器地址栏中键入Web服务URL,它将使用该服务而不要求进行身份验证,但如果我从resteasy调用该服务,它会请求身份验证客户端。

0 个答案:

没有答案