0

Oracle® Fusion Middleware Security Guide的修改身份部分下,它是这样写的:

为了修改身份,您需要对该身份的引用。User、UserProfile、Role 和 RoleProfile 类提供以下 API 以方便修改身份:

user.setProperty(ModProperty 道具); user.setProperties(ModProperty [] 道具);

ModProperty 结构包括:

the field name

its new value(s)

the modifying operator

有效的运算符是:

ModProperty.ADD ModProperty.REMOVE ModProperty.REPLACE

在此示例中,显示名称被替换:

用户配置文件 usrprofile = usr.getUserProfile(); ModProperty mprop = new ModProperty(UserProfile.DISPLAY_NAME, "修改后的显示名称", ModProperty.REPLACE); usrprofile.setProperty(mprop);

但是没有为oracle.security.idm.RoleProfile提供示例。此接口也没有setProperty(ModProperty mprop)类似oracle.security.idm.UserProfile。那么我们如何改变这个类的属性呢?

4

1 回答 1

1

要使用该setProperty(ModProperty mprop)方法,您需要RoleProfile使用类强制转换实例oracle.security.idm.providers.stdldap.LDRole(我没有找到它的文档或 javadoc)。事实上,接口oracle.security.idm.RoleProfile扩展oracle.security.idm.Role,抽象类oracle.security.idm.spi.AbstractRoleProfile实现它,而抽象类又通过以下三个类进行扩展:

  1. oracle.security.idm.providers.stdldap.LDRole,
  2. oracle.security.idm.providers.libovd.LibOVDRole
  3. oracle.security.idm.util.RoleProfileValueObject

他们都有setProperty(ModProperty modProp)自己定义的方法。其中,该类从方法中oracle.security.idm.util.RoleProfileValueObject抛出,它不做任何事情。oracle.security.idm.OperationNotSupportedExceptionsetProperty(ModProperty modProp)

所以解决方案是:

RoleProfile roleprofile = role.getRoleProfile();
ModProperty mprop = new ModProperty("someprop", "modified display name", ModProperty.ADD);
((LDRole)roleprofile).setProperty(mprop);

这就是所有人。:)

于 2012-07-02T15:04:47.960 回答