Apache Shiro(授权)+ SiteMinder(认证)
Posted
技术标签:
【中文标题】Apache Shiro(授权)+ SiteMinder(认证)【英文标题】:Apache Shiro (Authorization) + SiteMinder (Authentication) 【发布时间】:2015-12-01 05:18:10 【问题描述】:我有一个已经完成的 j2ee(jsf, cdi, jpa) 应用程序,它完美地使用了 Apache Shiro,它工作得很好,我很喜欢 shiro 注释(hasRole、hasPermission 等)。
现在,这个项目还必须能够通过 SiteMinder 进行身份验证,我的问题来了:
如何在不丢失 Shiro 授权的情况下设置 Realm 来处理 SiteMinder 身份验证(似乎 SiteMinder 会在 HTTP Header 中给我用户名和角色名) 如果我创建一个自定义领域,执行“doGetAuthenticationInfo”并将用户登录到会话中,SiteMinder 会话会发生什么? 如果我设置“subject.getSession().setTimeout(1000);”在 Shiro 中,已经定义超时的 SiteMinder Session 会发生什么?我的目的是使用 SiteMinder 进行身份验证(并控制我的会话)并让 Shiro 仅用于授权。 Shiro 不能侵入 SiteMinder 会话。
【问题讨论】:
【参考方案1】:如何在不丢失 Shiro 授权的情况下设置 Realm 来处理 SiteMinder 身份验证(似乎 SiteMinder 会在 HTTP Header 中给我用户名和角色名)
在这种情况下,您需要有 2 个领域,一个用于处理身份验证,另一个用于处理授权,请查看 this one 了解如何
如果我创建一个自定义领域,执行“doGetAuthenticationInfo”并将用户登录到一个会话中,SiteMinder 会话会发生什么?
您的自定义实体将负责成为 SiteMinder 的客户端,因此 doGetAuthenticationInfo 将返回您从 SiteMinder 返回的任何内容
如果我设置“subject.getSession().setTimeout(1000);”在 Shiro 中,已经定义超时的 SiteMinder Session 会发生什么?
我认为当您使用 sso 解决方案时,会话由 sso 服务器而不是客户端管理时存在混淆
【讨论】:
以上是关于Apache Shiro(授权)+ SiteMinder(认证)的主要内容,如果未能解决你的问题,请参考以下文章