将SSO与具有本机身份验证的应用程序集成

问题描述 投票:0回答:1

我的任务是为现有应用程序集成单点登录,因此我一直致力于几个演示。第一个是Spring Security的标准演示,我得到了它的工作。现在我正在尝试进行概念验证演示,我只用两个屏幕创建了一个有问题的应用程序的玩具版本:一个用于登录,另一个用于显示有关登录用户的一些信息。我想要将SSO与此应用程序集成,以便用户有两种方式进行身份验证:通过直接在登录屏幕中输入凭据或通过SSO SAML请求...

所以我将标准SSO演示中的SAML库和配置复制到我的概念验证应用程序中,我似乎有SSO工作,虽然有点太好了,因为我无法再进入我的登录屏幕,即,我仍然希望这是某人输入应用程序的基本URL的默认行为。我如何配置我的应用程序来实现这一目标?

spring-mvc spring-security integration saml
1个回答
0
投票

我解决问题的方法是更改​​Spring Security配置,以便不使用通用/**来为应用程序的大多数页面要求SSO身份验证,它只需要对单个HTML页面sso.htm进行此类身份验证。该“页面”实际上由应用程序翻译为对处理SSO请求的特定于应用程序的处理的控制器的请求。应用程序的初始页面redirect.jsp现在包含一些逻辑,用于根据用户是否直接访问该页面来选择应该将用户重定向到哪个页面(即,通过键入应用程序的默认URL)或通过来自可信身份提供者的SAML消息。

注意:为此,初始页面无法在Spring Security配置中指定为安全页面或不安全页面。如果它是安全的,那么只有在SSO身份验证之后才能访问此页面,因此用户将无法进行非SSO登录。如果不安全,则无法从该页面访问安全上下文,因此页面逻辑将无法确定相关用户是否具有SAML凭据,并且永远无法满足应用程序的SSO身份验证请求。

一旦用户通过在登录屏幕中输入的凭证或通过SSO请求进行了认证,从那时起,应用程序继续认证该用户以查看其页面是相同的,即,不进行进一步的SSO认证。但是,当用户从应用程序注销(或由于会话超时而注销)时,将进行检查,以查看是否已为该用户执行SSO身份验证。如果是,则除了从应用程序注销之外,还为用户完成本地SSO注销,即,终止应用程序的SSO认证会话,但是用户仍然使用他或她的身份提供者登录。因此,这样的用户可以直接通过应用程序的登录屏幕或通过让身份提供者发出新的SAML消息来重新登录到相关应用程序。

希望这有助于其他人......

© www.soinside.com 2019 - 2024. All rights reserved.