isTargetInterceptor метод TAI не вызывается

1

Я пытаюсь использовать перехватчик 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)

Я что-то пропустил?

Теги:
single-sign-on
websphere-8

1 ответ

0

Проверьте, есть ли у вас:

  • Защита приложений включена (в консоли - 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;
    }
}
  • 0
    Безопасность приложения была отключена. Я попытался включить его с помощью мастера настройки безопасности и получил исключение - SecurityAdmin E SECJ0074E: Ошибка создания реестра пользователей. Исключение составляет com.ibm.ws.security.registry.nt.NTException: доступ запрещен. Думаю, проблема в том, что я не имею привилегий администратора моей системы.
  • 0
    Какой реестр вы используете? У вас есть WebSphere, определенный как служба Windows?
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню