[英]JSTL and authenticated web services
我可以使用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"/>
http://my.service.com/api/xml
是需要基於表單的身份驗證的Web服務-如果嘗試在瀏覽器中訪問它,系統會提示我輸入Web表單中的用戶名和密碼,而不是彈出窗口。
抱歉,我不是Web服務專家,您可以告訴我-雙手合十為一個簡單的解決方案:)
@Brabster如@duffymo所說,jstl與Web服務身份驗證無關。
如果您需要避免在某些JSP中顯示身份驗證頁面,也許您可以繞過一個用於處理身份驗證的自定義標簽。 您如何使用主要方法在簡單的控制台程序中對Web服務進行身份驗證? 如果您知道該怎么做,則將代碼集成到自定義標簽中很容易。
這是一個開放源代碼庫http://spnego.sourceforge.net/protected_soap_service.html ,其中有一個示例,說明如何連接到受集成Windows身份驗證保護的Web服務。
該庫被實現為Servlet過濾器。
與直接從JSP / JSTL頁面進行操作相比,從JSTL調用Web服務進行身份驗證的目的是什么,例如:
<%@ 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>
JSTL == JSP標准標記庫? 如果是這樣,我看不出JSTL和JSP有何不同。
如果將令牌添加到HTML或SOAP頭中,則假定Web服務知道如何獲取令牌以及如何使用令牌。 基於表單的身份驗證使用j_username和j_password作為表單元素參數名稱。
我想說安全性應該是一個跨領域的問題。 過濾器或方面應該能夠從HTTP標頭中獲取這些值並為您進行身份驗證。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.