如何为我的场景实现单点登录?

Posted

技术标签:

【中文标题】如何为我的场景实现单点登录?【英文标题】:How to achieve Single Sign On for my scenario? 【发布时间】:2017-10-08 12:40:38 【问题描述】:

我在 SpringMVC 和 Apache Shiro 框架中开发了三个 Web 应用程序,分别是 App1、App2 和 App3。

App1:App1 有自己的用户和角色 App2:App2 有自己的用户和角色

App1 和 App2 具有不同的用户和角色。

App3:App3没有自己的用户和角色,是普通应用 适用于 App1 和 App2

我的场景:

    如果一个用户登录 App1 并且该用户应该能够查看 App3 在他的角色和许可下。同时用户不应 能够查看 App2。 如果一个用户登录 App2 并且该用户应该能够查看 App3 在他的角色和许可下。同时用户不应 能够查看 App1。

如何做到这一点?请给我您宝贵的建议。

【问题讨论】:

【参考方案1】:

SP 无法控制权限。您需要在 IdP 上设置角色和权限。当 SP 向 IdP 发送 SAML 请求时,IdP 将响应 SP 用户当前是否可以访问该 SP。

【讨论】:

【参考方案2】:

据我了解,CAS 仅对用户进行身份验证并授予对您的 casified 应用程序的访问权限。与每个经过身份验证的用户的角色访问有关的任何进一步的事情都与您各自的应用程序有关,而 CAS 在当时不存在。

链接参考: https://apereo.github.io/cas/4.2.x/protocol/CAS-Protocol.html

片段:

CAS 服务器负责对用户进行身份验证并授予 访问应用程序

在您的场景中,我会考虑构建某种服务以根据您各自应用程序中的角色进行授权。

【讨论】:

以上是关于如何为我的场景实现单点登录?的主要内容,如果未能解决你的问题,请参考以下文章

DataEase 集成 CAS 实现用户单点登录

单点登录认证方案思路,求好思路回复

场景应用:图解实现单点登录系统设计

场景应用:图解实现单点登录系统设计

asp.net mvc5实现单点登录

架构之路 | 浅谈单点登录(SSO)技术实现机制