1

我可以使用 JSTL 访问经过身份验证的 Web 服务吗?(基于表单的身份验证)

如果我不能使用 JSTL 来做到这一点,还有其他方法可以从 JSP 中做到吗?


也许我需要提供更多信息。我正在使用核心库:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

和导入标签,如:

<c:import var="xml" url="http://my.service.com/api/xml"/>

需要基于表单的身份验证的 Web 服务在哪里http://my.service.com/api/xml- 如果我尝试在浏览器中访问它,系统会提示我在 Web 表单中输入用户名和密码,而不是弹出窗口。

抱歉,正如您所知,我不是网络服务专家 - 祈祷一个简单的解决方案 :)

4

4 回答 4

0

JSTL == JSP 标准标签库?如果是这样,我看不出 JSTL 和 JSP 有何不同。

如果将标记添加到 HTML 或 SOAP 标头,则假设 Web 服务知道如何获取它们以及如何使用它们。基于表单的身份验证使用 j_username 和 j_password 作为表单元素参数名称。

我想说安全应该是一个跨领域的问题。过滤器或方面应该能够从 HTTP 标头中获取这些值并为您进行身份验证。

于 2009-01-23T16:42:21.513 回答
0

@Brabster 正如@duffymo 所说,jstl 与Web 服务身份验证无关。

如果您需要避免在某些 JSP 中显示身份验证页面,也许您可​​以使用处理身份验证的自定义标记。您将如何使用 main 方法在一个简单的控制台程序中对您的 Web 服务进行身份验证?如果您知道怎么做,那么将该代码集成到自定义标签中就很容易了。

于 2009-06-21T07:13:49.457 回答
0

这是一个开源库http://spnego.sourceforge.net/protected_soap_service.html,其中有一个关于连接到通过集成 Windows 身份验证保护的 Web 服务的示例。

该库被实现为一个 servlet 过滤器。

于 2009-11-16T08:19:27.333 回答
0

从 JSTL 调用 Web 服务进行身份验证的目的是什么,而不是直接从 JSP/JSTL 页面进行,例如:

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>

<c:remove var="validUser" scope="session"/>
<c:if test="${empty param.user_name || empty param.password}">
 <c:redirect url="login.jsp"/>
</c:if> 

<sql:query var="users">
 SELECT 1 FROM users WHERE user_name = ? AND password = ?
 <sql:param value="${param.user_name}" />
 <sql:param value="${param.password}" />
</sql:query>
<c:if test="${users.rowCount == 0}">
 <c:redirect url="login.jsp"/>
</c:if>

请记住,为了实现表单身份验证,您必须在 web.xml 文件中指明它:

<login-config>
 <auth-method>FORM</auth-method>
 <form-login-config>
  <form-login-page>/main/login.jsp</form-login-page>
 </form-login-config>
</login-config>

如果您想要使用标记库来使用一些 Web 服务,您可以使用 Java 社区的 JSP标记库用于 Web 服务

于 2010-11-28T00:14:15.137 回答