推荐的 NameIdFormat 用于在 SAML 中使用用户主体名称 (UPN) 作为 NameId

Posted

技术标签:

【中文标题】推荐的 NameIdFormat 用于在 SAML 中使用用户主体名称 (UPN) 作为 NameId【英文标题】:Recommended NameIdFormat for using User Principle Name (UPN) as NameId in SAML 【发布时间】:2021-01-04 12:56:01 【问题描述】:

我们有以下名称 ID 格式可供选择。

未指定 电子邮件地址 X509SubjectName WindowsDomainQualifiedName kerberos 实体 持久 瞬态

如果我需要我的 IDP(比如 Azure 或 ADFS 等)返回用户的 UPN 值,我应该选择哪种 nameid 格式?我应该将 IDP 配置为使用“未指定”作为 nameid 格式发送 UPN 值,还是应该选择持久化?或者是否有其他推荐的 nameid 格式用于发送/请求 UPN?

【问题讨论】:

您不能使用transient,因为当您使用非透明值填充它时,它会违反 SAML 规范。但是大多数 SP 实现不会对 NameId 的值执行数据验证(可能是因为它没有在处理规则中指定) 【参考方案1】:

了解作为 SP,您通常定义使用您的服务所需的合同。很少有理由使用未指定的,除非您的联合工具支持针对格式定义对属性进行某种自动验证。

即使您的工具确实支持该验证,也不能免除您自己验证数据的责任。

因此,我会选择未指定。它提供了最大的灵活性。

【讨论】:

以上是关于推荐的 NameIdFormat 用于在 SAML 中使用用户主体名称 (UPN) 作为 NameId的主要内容,如果未能解决你的问题,请参考以下文章

是否有用于将 SAML 与 Spring Boot 应用程序集成的 Spring Boot SAML 客户端?

用于断言的 SAML 2.0 格式属性 - 联合身份

基于 SAML 的 SSO 用于身份验证和 LDAP 用于授权 - Spring Boot Security

用于多个 Web 应用程序的单个 SAML SP

当 HTTP Server 用于高可用性时 SAML 的行为

Google SAML 可以通过 HTTP 工作,还是专门用于 HTTPS?