有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

以下是它的工作原理:

我导航到我的web应用url localhost:8080/PersonPortal/index。jsp,其中包含两个用于输入的文本框和一个提交按钮

当我在浏览器中转到那里时,它会自动重定向到我的登录。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 action类中,我调用我的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) 个答案