SAML2.0 身份验证流程
SAML 指定了三个关键角色:
-
身份提供者(IdP)
提供和维护用户身份的一方。这可以是 ADFS 等目录服务或自定义数据库解决方案。
-
服务提供商(SP)
服务提供者是用户尝试登录的实际服务。这可以是网站,应用程序或用户应该需要登录的任何服务。
-
校长/用户
实际用户发起请求,或尝试从服务提供商 (SP) 访问资源。
主要的 SAML 用例是基于 Web 的 SSO ,其中 SAML 过程由用户浏览器内的一组重定向进行,其中用户充当 IdP 和 SP 之间的令牌载体。
使用 SAML 的 Web Based SSO 有两个流程 :
-
身份提供商(IdP)已启动
用户登录 IdP,然后转发到选择的 SP。例如,用户登录到企业内部网并向其显示所有可用的应用程序。
-
服务提供商(SP)发起
用户尝试登录到应用程序,但转发到 IdP 以执行实际身份验证。例如,用户尝试登录到远程 SaaS 应用程序,但转发到公司 IdP,以便用户可以使用其公司凭据登录到远程应用程序。
SP 启动的流程可通过以下工作流程大大可视化:
资料来源: 维基百科
- 用户尝试访问特定应用程序或网页上的资源
- 用户指定他尝试使用外部 IdP 登录。SP 将生成 SAML 断言,并将传递此信息(通常通过 POST 或 GET 变量),同时将你转发给 IdP
- 用户将根据 IdP 进行身份验证
- 已签名的断言和令牌由 IdP 生成
- 签名的断言和令牌被转发回(再次使用 POST 或 GET 变量)到 SP,如果成功,则在 SP 上启动会话
- 此外,用户能够在 SP 与 SP 进行活动会话时(即通过 cookie)从 SP 请求更多资源,因此不必在每次请求时使用 IdP 进行身份验证。