簡體   English   中英

JSTL和經過身份驗證的Web服務

[英]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>

如果要使用標簽庫來消耗某些Web服務 ,則可以使用Java社區的JSP Web服務標簽庫

JSTL == JSP標准標記庫? 如果是這樣,我看不出JSTL和JSP有何不同。

如果將令牌添加到HTML或SOAP頭中,則假定Web服務知道如何獲取令牌以及如何使用令牌。 基於表單的身份驗證使用j_username和j_password作為表單元素參數名稱。

我想說安全性應該是一個跨領域的問題。 過濾器或方面應該能夠從HTTP標頭中獲取這些值並為您進行身份驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM