代码之家  ›  专栏  ›  技术社区  ›  Mike Kantor

带有用户名/密码的SAML断言——消息到底是什么样子的?

  •  11
  • Mike Kantor  · 技术社区  · 17 年前

    我需要创建一些SAML 2.0断言,但我很难找到XML应该是什么样子。大多数文档似乎都是关于使用特定工具的,而不是关于消息的。我有模式,有很多可能性,但我找不到一个例子来说明相关消息在实践中的实际情况。

    业务规则规定:为了创建共享身份,用户告诉系统a他们在系统B上的用户名和密码。系统a需要将此信息(以及一些人口统计信息)传达给系统B。系统B验证信息并传递回唯一标识符,然后该标识符可用于指代此用户。

    FWW,我正在使用C#,需要以排除使用第三方工具的方式传递XML。

    1 回复  |  直到 16 年前
        1
  •  27
  •   Michael van der Westhuizen    16 年前

    我不确定你的用例是否与SAML 2.0完全相同。

    您所描述的业务规则实际上看起来像是身份配置的用例,而不是访问管理。

    这些名称标识符几乎可以是任何东西,但它们大致分为两类:暂时的和持久的。临时名称标识符仅在当前会话的上下文中有用(本质上只表示“我知道这个人是谁”),并且往往用于保护主体的身份,同时允许某种类型的特权访问。持久标识符可以是不透明的(与使用OpenID访问SO的方式类似),其中断言方可以在不披露其身份的情况下重复验证原则的身份,同时在断言方和依赖方之间保持动态但稳定的共享标识符,也可以是更实质的标识符,例如Active Directory UPN(可以提前预先商定)。

    现在,回到你的商业规则。..

    • 用户访问应用程序,点击按钮使用身份提供者的身份
    • 应用程序生成身份验证请求,并将用户定向到身份提供者,携带该身份验证请求
    • 身份提供者要么登录用户,要么重用现有的身份会话(如果用户有)。IdP生成一个包含关于用户的断言的响应消息。在您的情况下,此断言应至少包含一个持久名称标识符。身份提供者将用户引导回应用程序,并携带响应消息。
    • 应用程序处理响应消息。如果传递的持久标识符存在映射条目,则从该映射中识别用户并作为该本地应用程序用户登录。如果不存在映射条目,可以要求用户在本地登录,在成功本地登录后,可以生成映射条目,或者可以自动创建用户帐户,并要求用户输入其他信息(姓名、电子邮件地址等)。“公司”用例是不允许自动链接或创建帐户,映射必须提前存在。

    OASIS Security Services Technical Committee 有一个zip文件下载,其中包含XML模式各部分的详细文档,包括示例。阅读协议和配置文件文档也是非常值得的,因为这些文档描述了身份对话中各方之间的消息流。

    SAML v2.0 Basics Eve Maler帮助我开始意识到SAML v2.0试图解决什么问题。本演示文稿包括断言的示例。网站上有更新的演示文稿和其他资源的链接 saml.xml.org .

    推荐文章