3

请帮我解决这个问题:我正在尝试在 openam 中设置一个 idp 和一个 sp 的联盟。正在使用的数据存储是 ApacheDS。我正在尝试按照以下教程进行相同的操作。

http://fczaja.blogspot.com/2012/06/idp-initiated-sso-and-identity.html

在测试联合连接(来自控制台)期间,我在 openam 日志中收到以下错误* *

libSAML2:10/30/2012 06:48:41:399 PM IST: Thread[http-8080-1,5,main]
AccountUtils.setAccountFederation:  set fedinfo {sun-fm-saml2-nameid-info=[http://www.idp.com:8080/openam_10.0.0|http://www.sp.com:8090/openam_10.0.0|WC++1dcclPD//rTlgpYLD0EEISg2|http://www.idp.com:8080/openam_10.0.0|urn:oasis:names:tc:SAML:2.0:nameid-format:persistent|null|http://www.sp.com:8090/openam_10.0.0|IDPRole|false], sun-fm-saml2-nameid-infokey=[http://www.idp.com:8080/openam_10.0.0|http://www.sp.com:8090/openam_10.0.0|WC++1dcclPD//rTlgpYLD0EEISg2]} userID = id=appu,ou=user,dc=opensso,dc=java,dc=net
libPlugins:10/30/2012 06:48:41:543 PM IST: Thread[http-8080-1,5,main]
ERROR: IdRepoDataStoreProvider.setAttribute(): IdRepo exception
Message:Plug-in com.sun.identity.idm.plugins.ldapv3.LDAPv3Repo encountered an ldap exception.  LDAP Error 16: The specified attribute could not be found.
                        at com.sun.identity.idm.plugins.ldapv3.LDAPv3Repo.handleLDAPException(LDAPv3Repo.java:6117)
                        at com.sun.identity.idm.plugins.ldapv3.LDAPv3Repo.setAttributes(LDAPv3Repo.java:4141)
                        at com.sun.identity.idm.plugins.ldapv3.LDAPv3Repo.setAttributes(LDAPv3Repo.java:3921)
                        at com.sun.identity.idm.server.IdServicesImpl.setAttributes(IdServicesImpl.java:1701)

这可能意味着 openam 试图使用一些不存在的 LDAP 属性(因为我在 ApacheDS 中创建了最小属性集)。所以我去了 IDP 和 SP 中的数据存储设置,并从 LDAP 用户属性中删除了不可用的属性。现在它给出以下错误:

WARNING: IdServicesImpl.setAttributes: Unable to modify identity in the following repository com.sun.identity.idm.plugins.ldapv3.LDAPv3Repo :: Illegal arguments: One or more required arguments is null or empty
amIdm:10/31/2012 10:20:26:362 AM IST: Thread[http-8080-1,5,main]
IdServicesImpl.setAttributes: Unable to set attributes in the following repository com.sun.identity.idm.plugins.internal.SpecialRepo :: Plug-in com.sun.identity.idm.plugins.internal.SpecialRepo does not support operation edit for type {2}
amIdm:10/31/2012 10:20:26:362 AM IST: Thread[http-8080-1,5,main]
WARNING: IdServicesImpl.setAttributes: Unable to set attributes  for identity user::appu in any configured data store
Message:Illegal arguments: One or more required arguments is null or empty
                        at com.sun.identity.idm.plugins.ldapv3.LDAPv3Repo.setAttributes(LDAPv3Repo.java:4039)
                        at com.sun.identity.idm.plugins.ldapv3.LDAPv3Repo.setAttributes(LDAPv3Repo.java:3921)

一些论坛说需要 sun-fm-saml2-nameid-info 和 sun-fm-saml2-nameid-infokey 等属性。但我无法将它们添加到我的数据存储中,因为它们与架构不匹配。此外,我无法将 openam 安装中给出的 LDIF 导入 Apache DS。我有两个问题: 1. 我正朝着正确的方向前进(向 Apache ds 数据存储添加属性会有所帮助)?如果是,我如何在 Apache ds 中推送与 openam 相关的 schmea 项目?2.我在这里完全缺少什么。

4

1 回答 1

2

根据 SAML NameID 格式,OpenAM 将尝试将联合信息保存在用户数据存储中。默认情况下,这些属性是“sun-fm-saml2-nameid-info”和“sun-fm-saml2-nameid-infokey”,但您可以在配置 -> 全局 -> 上将属性名称更改为您想要的任何名称SAMLv2 服务配置页面。

如果您的 SP 使用临时 NameID 格式,则不会保存此信息。

如果您的 SP 使用未指定的 NameID 格式,则在“断言内容”页面上的远程 SP 配置中,您可以使用名为“如果未指定 NameID 格式,则禁用联合持久性”的选项来禁用此数据存储更新。

在任何其他情况下,OpenAM 将尝试在数据存储中保存/使用 Account Federation,这意味着它也会尝试更改/读取数据存储中的属性。如果您的数据存储无法识别这些属性,那么它将引发您提到的错误。此外,当您使用 OpenDJ 时,很可能会在此处加载 OpenAM 模式,因此可以保存该属性。

在 OpenAM 10.1.0 中,如果正在使用忽略的用户配置文件模式,将有一个禁用此更新的选项:https ://bugster.forgerock.org/jira/browse/OPENAM-1427 。

因此,您当前的选择是:

  • 如前所述,将设置中的 NameID-Format 更改为瞬态/未指定
  • 将配置中的属性名更改为实际存在于 ApacheDS 模式中的属性
于 2012-11-01T07:42:11.343 回答