在 SAML 中,用户名和委托人的 NameID 之间有区别吗?

In SAML, is there a difference between usernames and a principal's NameID?

NameID是服务提供者和身份提供者用来识别主体(系统用户)的标识符。

假设我要求一个服务提供商的用户在登录时输入用户名和密码,在另一个服务提供商上输入他们的 SSN 和密码,在第三个服务提供商上输入他们的用户名和密码。多个服务提供商是否可以使用不同的用户名,但使用相同的 NameID 来标识 SAML 会话?

此外,是否可以让服务提供商在它们之间使用不同的 NameID 格式,或者它们是否必须具有相同的值才能引用相同的委托人?

名称标识符可以是任何东西;电子邮件地址或 Kerberos 主体名称是此类信息的常见示例。它们并不总是等于用户名。

直接来自 Shib documentation。因此,您可以将 NameID 从您的 IdP 返回为与用户名完全无关的东西。

要回答您的同一个问题,这完全取决于您将服务提供商连接到哪些身份提供商。更有可能的是,听起来您想要的是返回相同 NameID 格式的多个身份提供者。

在 SAML 2.0 中,您可以指定 NameID 可以返回的格式,这样您就可以在身份提供者之间拥有一个通用模式,并防止使用疯狂的逻辑来解析每个可能返回的 NameID。