Spring security OpenSSO和JasperReports服务器集成
我尝试集成JasperServer4.7.0和OpenSSO11.0 我选择的方法是使用OpenAM J2EE代理和Spring Security J2EEPreAuthenticatedFilter 当用户尝试访问jasper主页时,代理将其重定向到OpenAM登录页面,然后如果身份验证成功,则在HTTPServletRequest对象中填充用户主体。Spring security J2EEPreauthenticatedFilter获取主体,如果它不为null,则读取用户角色并授予对请求资源的访问权 问题是在成功进行OpenAm身份验证后,J2EEPreAuthenticatedFilter返回null,用户无法访问jasperserver主页 为什么J2EEPreAuthenticatedFilter无法从HttpServletRequest对象获取主体 我使用Tomcat7作为jasper服务器 这是web.xml中的OpenAm代理筛选器和安全约束:Spring security OpenSSO和JasperReports服务器集成,spring-security,jasperserver,opensso,Spring Security,Jasperserver,Opensso,我尝试集成JasperServer4.7.0和OpenSSO11.0 我选择的方法是使用OpenAM J2EE代理和Spring Security J2EEPreAuthenticatedFilter 当用户尝试访问jasper主页时,代理将其重定向到OpenAM登录页面,然后如果身份验证成功,则在HTTPServletRequest对象中填充用户主体。Spring security J2EEPreauthenticatedFilter获取主体,如果它不为null,则读取用户角色并授予对请求资源
<filter>
<filter-name>Agent</filter-name>
<display-name>Agent</display-name>
<description>OpenAM Policy Agent Filter</description>
<filter-class>com.sun.identity.agents.filter.AmAgentFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Agent</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<security-role>
<role-name>ROLE_TESTER</role-name>
</security-role>
<security-constraint>
<web-resource-collection>
<web-resource-name>Authenticated</web-resource-name>
<description></description>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>
我解决了这个问题,只需在web.xml文件中添加以下代码:
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/accessdenied.html</form-error-page>
</form-login-config>
</login-config>
形式
/login.html
/accessdenied.html
并从web.xml中删除以下代码:
<security-constraint>
<web-resource-collection>
<web-resource-name>JasperServerWebApp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
JasperServerWebApp
/*
没有一个
保密的
单独配置代理筛选器不足以为web应用程序启用声明式安全性。您还应该在web.xml.Hi中设置必要的安全约束,Peter!my web.xml中存在安全约束。我将它添加到我的第一条消息中。访问jasper的用户具有角色\u TESTER角色。
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/accessdenied.html</form-error-page>
</form-login-config>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>JasperServerWebApp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>