首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TAI的isTargetInterceptor方法没有被调用

TAI的isTargetInterceptor方法没有被调用
EN

Stack Overflow用户
提问于 2014-07-31 06:02:20
回答 1查看 2.1K关注 0票数 1

我试图使用TAI拦截器来拦截来自可信第三方的请求,第三方试图访问我的应用程序。我的目的是避免向用户显示身份验证页面,因为用户已经在我信任的第三方应用程序中进行了身份验证。

为此,我创建了一个实现TrustAssociationInterceptor的简单类。我在initializeisTargetInterceptornegotiateValidateandEstablishTrust等方法中有几个sysout。

我已经创建了一个Jar文件,并将其放在\Appserver\lib\ext folder中。

我还在拦截器中配置了我的自定义TAI。从WebSphere应用服务器管理控制台,导航到启用信任关联的Security => Global Security =>Web and SIP security => Trust association => Enable the check box并保存它,=>拦截器=>单击new并输入我的自定义TAI类的名称。

初始化方法在WebSphere服务器启动时被调用。我可以在\Appserver\profiles\AppSrv1\logs\server1\SystemOut.txt中看到sysouts。

我已经创建了一个示例web应用程序,它从JSP页面调用servlet。我的问题是,我的自定义TAI不会在中间截取,我的请求将直接发送到servlet。(我在SystemOut.txt中没有看到任何系统)

我在这里有遗漏什么吗?

EN

回答 1

Stack Overflow用户

发布于 2014-07-31 07:48:12

检查你是否有:

  • 启用应用程序安全性(在控制台-Security > Global security中)
  • 您的应用程序在Security constraints中定义了web.xml,因为您必须访问受保护的资源才能拦截TAI。

您可以启用跟踪com.ibm.ws.security.*=all,以便在对应用程序的请求期间在trace.log中查看更多详细信息。

更新

这是我的样品。我使用的是WAS8.5.5.1,所有方法都称为:

代码语言:javascript
复制
// 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

样本代码:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25051799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档