当前位置: 首页 > 知识库问答 >
问题:

OpenAM联合的问题(以apacheds作为数据存储)

黄泰宁
2023-03-14

请帮我解决这个问题:我正在尝试在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.这里有什么我完全错过的吗?

共有1个答案

戈巴英
2023-03-14

根据SAML NameID格式,OpenAM将尝试将联邦信息保存在用户数据存储中。默认情况下,这些属性是"sun-fm-saml2-nameid-info"和"sun-fm-saml2-nameid-infokey",但是您可以将属性名称更改为您想要的配置-

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

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

在任何其他情况下,OpenAM将尝试保存/使用帐户联邦到/从数据存储,这意味着它也将尝试更改/读取数据存储中的属性。如果您的数据存储无法识别这些属性,那么它将抛出一个错误,正如您所提到的。另外,当您使用OpenDJ时,OpenAM模式很可能被加载在那里,因此属性可以被保存。

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

所以你目前的选择是:

  • 将设置中的NameID格式更改为瞬态/未指定,如前所述
  • 将配置中的属性名更改为属性,这些属性实际上存在于ApacheDS模式中
 类似资料:
  • 我定义了一个表作为一个联合表,它指的是一个谷歌表。当我从谷歌bigQuery网络用户界面查询它时,它工作得非常好。但是,如果我尝试使用Tableau Software BigQuery驱动程序查询它,我会收到以下错误消息:未找到访问Google Drive的合适凭据。请联系表所有者寻求帮助。 有关我的设置的一些事实: 在Tableau中使用BigQuery驱动程序时,我使用进入BigQuery w

  • 我想连接两个不同的数据和数据类型相同的表。 在表A中,列col1具有varchar数据类型,即123,而在表B中,列col1具有varchar数据类型,即ABC-123 是否有任何方法通过将ABC作为前缀添加到表1中的col1中,或者通过将前缀ABC从col1表2中移除来连接这两个列。

  • 我有3个表(SuccessOrder、FailedOrder和PendingOrder)具有相同的列。每个表都有超过200万条记录。我需要组合来自这3个表的所有数据,并按CreatedDate对它们进行排序,以显示在我的门户中。我正在使用UNION ALL组合所有表的结果。 如果我执行每个子查询,在1或2秒内得到结果。如果我执行整个查询(带有UNION ALL的3个子查询),则需要超过5分钟。 除

  • 使用Elasticsearch用kibana的devp搜索“a的productID或(b的productID和c的price)”这是我的代码:(什么是对的?)

  • 对容器类型为泛型的 trait 有类型规范需要——trait 的成员必须指出全部关于它的泛型类型。 在下面例子中,Contains trait 允许使用泛型类型 A 或 B。然后这个 trait 针对 Container 类型实现,指定 i32 为 A 和 B,因而它可以用到 fn difference()。(本段原文:In the example below, the Contains trai

  • ApacheDS (Apache Directory Server)的核心是目录服务,可以保存数据,并对不同类型的数据进行搜索操作。协议的实现在目录服务器顶层工作,提供与数据存储、搜索和检索有关的 Internet 服务。 ApacheDS 最重要的特性可能是利用不同协议公开目录服务的能力...