我试图使用TAI拦截器来拦截来自可信第三方的请求,第三方试图访问我的应用程序。我的目的是避免向用户显示身份验证页面,因为用户已经在我信任的第三方应用程序中进行了身份验证。
为此,我创建了一个实现TrustAssociationInterceptor的简单类。我在initialize、isTargetInterceptor和negotiateValidateandEstablishTrust等方法中有几个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中没有看到任何系统)
我在这里有遗漏什么吗?
发布于 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,所有方法都称为:
// 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;
}
}https://stackoverflow.com/questions/25051799
复制相似问题