IDP在现有应用程序中启动了SSO实施

时间:2016-11-08 11:18:41

标签: java spring single-sign-on

我有一个现有的应用程序,突然间我被赋予了实施IDP发起的SSO的任务。有一个IDP点击它的URL请求我使用IDP提供的凭据登录,成功登录后路由移动到我们的应用程序,而我的任务开始识别用户并提供适当的访问权限。我有IDP提供的证书。我怎样才能实现这一目标?我的应用程序是一个Spring MVC Java Application。我正在使用JBOSS AS 7.我之前没有做过类似的事情。任何人都可以一步一步地清楚地说明这一点吗?我看到Spring SAML扩展,我无法正确理解它与我现有的应用程序集成。在这方面的任何帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

IdP启动的SSO

IdP-Initiated SSO with POST Binding

  1. 如果用户在IdP上没有有效的本地安全上下文,则用户将被要求将其凭据提供给IdP站点idp.example.org。
  2. 用户提供有效凭据,并为IdP用户创建本地登录安全上下文。
  3. 用户选择IdP上的菜单选项或链接以请求访问SP网站sp.example.com。这会导致调用IdP的单点登录服务。
  4. Single Sign-On Service构建一个SAML断言,表示用户的登录安全上下文。由于将使用POST绑定,因此断言在置于SAML消息中之前进行数字签名。然后将该消息作为名为SAMLResponse的隐藏表单控件放在HTML FORM中。 (如果在IdP和SP上支持在SP上标识特定应用程序资源的约定,则SP上的资源URL也使用名为RelayState的隐藏表单控件编码到表单中。)单点登录服务发送HTML表单返回HTTP响应中的浏览器。为了便于使用,HTML FORM通常包含将自动将表单发布到目标站点的脚本代码。
  5. 由于用户操作或执行“自动提交”脚本,浏览器会发出HTTP POST请求以将表单发送到SP的断言使用者服务。服务提供商的断言使用者服务从HTML FORM获取消息以进行处理。必须首先验证SAML断言上的数字签名,然后处理断言内容,以便为SP处的用户创建本地登录安全上下文。完成后,SP将检索RelayState数据(如果有)以确定所需的应用程序资源URL,并向浏览器发送HTTP重定向响应,指示它访问所请求的资源(未显示)。
  6. 进行访问检查以确定用户是否具有访问资源的正确授权。如果访问检查通过,则资源将返回到浏览器。
  7. 请参阅saml-tech-overview-2.0

    因此,如果您正在实施SP,则必须遵循步骤5和6,否则为1 - 4。

    对于实现,如果您没有使用Spring SAML扩展,则可以使用 OpenSaml