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(认证)的主要内容,如果未能解决你的问题,请参考以下文章

Apache Shiro学习----授权

Apache Shiro 认证+授权

Shiro-Spring 授权操作

Apache shiro - 我怎么知道缓存正在为授权工作?

如何仅使用 Apache Shiro 进行授权?

Apache Shiro(授权)+ SiteMinder(认证)