如何验证SM_USER头在春季安全的预认证的SiteMinder的(How to validate

2019-09-27 13:29发布

我试图创建一个使用预认证安全的SiteMinder的安全春天REST API。

我已经试过一个解决方案,我越来越SM_USER,当我在邮递员测试它通过添加新的头SM_USER随机值似乎很好地工作。

如果你不提供头,我得到一个错误org.springframework.security.web.authentication.preauth.PreAuthenticatedCredentialsNotFoundException:在申请有效期未发现SM_USER头。

但是,我怎么能肯定,这是安全的? 如果有人知道我的REST API的URL可以调用这个没有问题。 我应该检查别的东西在春季或仅提供SiteMinder的用户认证?

Answer 1:

前端SiteMinder Web代理是会话是有效的担保-你必须通过你的应用程序不能直接访问而无需首先通过SiteMinder Web代理服务器/网络配置肯定。

此外,SiteMinder的断言多个头。 SM_USER不宜单独使用,因为它可以在某些情况下,Web代理断言当用户实际上并没有一个有效的会话。 相反,你应该首先寻找的存在(非空白) SM_SERVERSESSIONID ,只有会话是否有效存在。

最后,我一般尽量避免SM_USER可言-因为SM_USER其实并不是在所有的用户属性,而是“用于身份验证的登录标识”。 如果SiteMinder的认证通过联合(例如SAML)或X509认证用户, SM_USER会比如果使用一个登录表单而不同。 相反,它在SiteMinder的最好设置一个“通用ID”,即用户属性,并出现在标题为SM_UNIVERSALID 。 你的SiteMinder管理员会知道如何做到这一点(和可能已经有-看看,如果你有一个SM_UNIVERSALID可用标题的话)。

另一项值得注意的,在某些SiteMinder的配置,下划线不会在头名(用下划线被称为SiteMinder的“遗产”首标模式),所以你可能想使你的应用程序配置相对于标头名,例如SMSERVERSESSIONIDSMUSERSMUNIVERSALID等。

如果你想以编程方式重新验证会话,你可以使用的SiteMinder代理API或REST API,或在我公司的产品“SSO /休息”,它提供了一套全面的统一REST接口SiteMinder和也等SSO商希望( http://www.idfconnect.com )。

HTH!

-Richard



文章来源: How to validate SM_USER header in Spring Security preauthentication for siteminder