Я пытаюсь использовать перехватчик TAI для перехвата запросов, поступающих от доверенной третьей стороны, которая пытается получить доступ к моему приложению. Моя цель - не показывать пользователю страницу проверки подлинности, поскольку пользователь уже прошел аутентификацию в сторонних приложениях, которым я доверяю.
Для этого я создал простой класс, который реализует TrustAssociationInterceptor
. У меня есть пара sysouts внутри методов, таких как initialize
, isTargetInterceptor
и negotiateValidateandEstablishTrust
.
Я создал файл Jar этого и поместил его в \Appserver\lib\ext folder
.
Я также настроил свой собственный TAI в перехватчиках. Из административной консоли WebSphere Application Server перейдите в раздел Security => Global Security =>Web and SIP security => Trust association => Enable the check box
Включить объединение доверия и сохраните его => Перехватчики => Нажмите новое и Security => Global Security =>Web and SIP security => Trust association => Enable the check box
имя мой пользовательский класс TAI.
Метод initialize вызывается при запуске сервера WebSphere. Я вижу синусы в \Appserver\profiles\AppSrv1\logs\server1\SystemOut.txt
.
Я создал образец веб-приложения, которое вызывает сервлет со страницы JSP. Моя проблема в том, что мой пользовательский TAI не перехватывает посередине, и моя просьба напрямую идет к сервлету. (В SystemOut.txt я не вижу никаких sysouts)
Я что-то пропустил?
Проверьте, есть ли у вас:
Security > Global security
)Security constraints
определенные в web.xml
как вы должны получить доступ к защищенному ресурсу для TAI для перехвата. Вы можете включить трассировку com.ibm.ws.security.*=all
чтобы увидеть более подробную информацию в trace.log
во время запроса к вашему приложению.
ОБНОВИТЬ
Вот мой пример. Я использую WAS 8.5.5.1, все методы называются:
// during start
[8/6/14 20:37:09:544 CEST] 00000001 TrustAssociat A SECJ0121I: Trust Association Init class tai.TaiTest loaded successfully
[8/6/14 20:37:09:544 CEST] 00000001 SystemOut O initialize
[8/6/14 20:37:09:544 CEST] 00000001 SystemOut O getVersion
[8/6/14 20:37:09:544 CEST] 00000001 TrustAssociat A SECJ0122I: Trust Association Init Interceptor signature: 1.0
[8/6/14 20:37:09:544 CEST] 00000001 SystemOut O getType
//during stop
[8/6/14 20:40:24:338 CEST] 0000008d SystemOut O cleanup
Образец кода:
package tai;
import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ibm.websphere.security.WebTrustAssociationException;
import com.ibm.websphere.security.WebTrustAssociationFailedException;
import com.ibm.wsspi.security.tai.TAIResult;
import com.ibm.wsspi.security.tai.TrustAssociationInterceptor;
public class TaiTest implements TrustAssociationInterceptor {
@Override
public void cleanup() {
System.out.println("cleanup");
}
@Override
public String getType() {
System.out.println("getType");
return "TaiTest";
}
@Override
public String getVersion() {
System.out.println("getVersion");
return "1.0";
}
@Override
public int initialize(Properties arg0)
throws WebTrustAssociationFailedException {
System.out.println("initialize");
return 0;
}
@Override
public boolean isTargetInterceptor(HttpServletRequest arg0)
throws WebTrustAssociationException {
System.out.println("isTarget");
return false;
}
@Override
public TAIResult negotiateValidateandEstablishTrust(
HttpServletRequest arg0, HttpServletResponse arg1)
throws WebTrustAssociationFailedException {
// TODO Auto-generated method stub
System.out.println("Negotiate");
return null;
}
}