我正在Jboss Wildfly 10上使用struts2开发一个简单的Web应用程序。为了使用Picketlink和SAML2,需要使用外部身份服务器(由WSO2IS公开)。
我使用WSO2IS创建了一个自定义服务提供程序,在Web应用程序中定义了安全性,并在JBoss中配置了picketlink以使用在WSO2IS中配置的ServiceProvider。
当我尝试打开localhost:8087 / MyApp SSO工作并在WSO2IS登录页面上重定向时,安全过滤器工作正常,但在登录后,samlsso提供程序总是有一个直通,https:// localhost:9446 / samlsso,该节目重定向目标操作的页面(还带有“POST”按钮)。
问题是,或者按下按钮或自动重定向回到home.action的操作,我可以在应用程序的页面中导航。我调用的任何链接,通过网络按钮,调用正确的操作,然后通过令牌(例如https:// localhost:9446 / samlsso?SAMLRequest =令牌)重定向(我认为是picketlink)samlsso然后返回到home.action。
所有操作都有返回类型“tyles”,以及ajax调用的2 json结果。
这里详细介绍了我的配置:
JBoss的web.xml中
<jboss-web>
<context-root>MYAPP</context-root>
<security-domain>MYAPP_SD</security-domain>
</jboss-web>
Web.xml配置如下:
<security-constraint>
<web-resource-collection>
<web-resource-name>NoLock</web-resource-name>
<url-pattern>/css/*</url-pattern>
<url-pattern>/images/*</url-pattern>
<url-pattern>/img/*</url-pattern>
<url-pattern>/js/*</url-pattern>
<url-pattern>/jsp/*</url-pattern>
<url-pattern>/struts/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>MYAPPContext</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>Application/MyAppRole</role-name>
</auth-constraint>
</security-constraint>
<!-- Define the Login Configuration for this Application -->
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>Application/MyAppRole</role-name>
</security-role>
角色 Application / MyAppRole 被定义到配置名为MyAppRole的新服务推荐器的wso2 Identity Server中。我在其上添加了一些用户。
在Jboss中,在configuration-&gt; subsystem-&gt; security中,我创建了一个安全域 MyApp_SD ,其验证码为“
org.picketlink.identity.federation.bindings.jboss.auth.SAML2LoginModule“
即使在Jboss中,在configuration-&gt; picketlink中,我通过安全域“ MyApp_SD ”(受信任域localhost:8087)创建了一个新的“MyApp_Federation”,并进入了我创建的联盟一个名为 MyApp.war 的新服务提供商,甚至通过 MyApp_SD 作为安全域,并且SAMLHandler配置如下:
那么,我的配置有问题吗?是web.xml约束,struts2操作配置还是picketlink配置的问题?
答案 0 :(得分:0)
所以,我发现了问题,并且在firefox中使用了隐身模式。使用正常模式,动作链接会自动使用jsessionid进行修改,并且所有工作都很好。但是,我必须编辑生成url的所有javascript方法和添加jsessionid的ajax操作js。