【问题标题】:"No local user being mapped error" when using unspecified NameId format" in OpenAM SAML2在 OpenAM SAML2 中使用未指定的 NameId 格式时出现“没有本地用户被映射错误”
【发布时间】:2020-02-15 02:49:44
【问题描述】:

我们使用 OpenAM 版本 13.0.0

我们在使用 urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified 时遇到了以下错误

错误:spAssertionConsumer.jsp:SSO 失败。 com.sun.identity.saml2.common.SAML2Exception:没有本地用户被映射。在 com.sun.identity.saml2.profile.SPACSUtils.processResponse(SPACSUtils.java:1225) 在 org.apache.jsp.saml2.jsp.spAssertionConsumer_jsp._jspService(spAssertionConsumer_jsp.java:284) 在 org.apache.jasper.runtime .HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)

【问题讨论】:

    标签: saml-2.0 openam


    【解决方案1】:

    托管 SP 首先使用 NameID 映射从传入 SAML 断言的主题(保存 NameID)中提取“用户名”,然后使用它在配置的用户数据存储中搜索用户身份主题(使用配置的用户搜索属性)。如果失败,它会使用配置的帐户映射器从属性语句中提取“用户名”属性。这里自动联合配置也很重要。

    --> 遇到此错误的原因取决于 SAML 响应和 OpenAM 配置。如果没有看到 SAML 响应和 OpenAM 配置,就不可能说出根本原因。您可以通过(加密)电子邮件将其发送给我。

    【讨论】:

    • 我从您的问题中了解到,启用未指定的 NamId 格式。我们必须将用户信息存储在 openAM DataStore 中。此外,我们必须启用自动联合配置并使用用户别名将 openAM 身份验证设置(用户配置文件)从 required 修改为 Dynamic。这是真的?我注意到启用未指定的 NameID 与启用持久联合相同。但我正在寻找一种方法来支持未指定的 NamId 格式,而无需像瞬态联合这样的 openAM 数据存储中的持久用户。 @Bernhard Thalmayr
    • 在一篇简短的文章中详细解释所有内容并不容易。在 SAML 中,基本上有两个用例...... SSO 和帐户链接。对于这两种用例,都可以预见特定的 NameID 格式。对于 SSO,这将是“瞬态”NameID 格式。用于帐户链接“持久”名称 ID 格式。 “帐户链接”意味着有两个身份孤岛,一个在 IdP 端,一个在 SP 端。 “自动联合”是一种“帐户链接”,您可以通过 SAML 流在 SP 端填充身份孤岛。所以你实际上首先必须考虑你的用例。
    • 遗憾的是,并非所有 SAML 实现都支持所有 NameID 格式或无法正确处理它们,例如我已经看到 IdP 发送电子邮件地址或用户 ID 作为“持久”NameID 的值 .... 这不符合 SAML 规范。如果使用“未指定”NameID 格式,则当“用户配置文件”设置为“必需”时,OpenAM 会尝试在其身份库中查找匹配条目(OpenAM 称为此用户数据存储),因为基于 AuthContext 的身份验证(使用联合身份验证模块)被执行以生成 SSO 会话。它类似于任何其他 OpenAM 身份验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多