saml-2.0开始使用saml-2.0


备注

SAML2.0是一种开放标准,用于在服务提供商和身份提供商之间传输身份验证和授权数据。

最常见的用法是基于Web的SSO,其中SAML使用户能够使用来自其他系统的凭据登录到应用程序,而无需在身份验证期间让两个系统直接相互连接。

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启动的流程可通过以下工作流程大大可视化:

基于SAML的身份验证流程资料来源: 维基百科

  1. 用户尝试访问特定应用程序或网页上的资源
  2. 用户指定他尝试使用外部IdP登录。 SP将生成SAML断言,并将传递此信息(通常通过POST或GET变量),同时将您转发给IdP
  3. 用户将根据IdP进行身份验证
  4. 已签名的断言和令牌由IdP生成
  5. 签名的断言和令牌被转发回(再次使用POST或GET变量)到SP,如果成功,则在SP上启动会话
  6. 此外 ,用户能够在SP与SP进行活动会话时(即通过cookie)从SP请求更多资源,因此不必在每次请求时使用IdP进行身份验证。

SAML调试工具

由于所有请求和断言来回传递,调试SAML声明和断言的问题可能很麻烦。

在SAML中,核心原则是不需要IdP和SP之间的直接连接,用户的浏览器充当两者之间的消息载体。因此,所有通信 - 尽管都是加密的 - 通过您自己的浏览器进行。

使用各种调试工具,您可以看到正确的通信和请求,并在IdP和SP之间转发。

为了帮助您入门,这里有一些适用于各种浏览器的工具,可以帮助您入门:

火狐

SAML Tracer,用于调试SAML请求 使用例如SAML Tracer,您可以在测试和调试时实时查看已解码的SAML断言和请求