【问题标题】:Integrating SSO with an Application with Native Authentication将 SSO 与具有本机身份验证的应用程序集成
【发布时间】:2018-09-07 21:42:29
【问题描述】:

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

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

【问题讨论】:

    标签: spring-mvc spring-security integration saml


    【解决方案1】:

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

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

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

    希望这对其他人有所帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 2019-11-28
      相关资源
      最近更新 更多