在修改身份部分的Oracle® Fusion Middleware Security Guide下,写成:
要修改身份,您需要引用身份。 User,UserProfile,Role和RoleProfile类提供 以下API有助于修改身份:
user.setProperty(ModProperty prop); user.setProperties(ModProperty []道具);
ModProperty结构包括:
the field name its new value(s) the modifying operator
有效的运算符是:
ModProperty.ADD ModProperty.REMOVE ModProperty.REPLACE
在此示例中,替换了显示名称:
UserProfile usrprofile = usr.getUserProfile(); ModProperty mprop = 新的ModProperty(UserProfile.DISPLAY_NAME,“修改后的显示名称”, ModProperty.REPLACE); usrprofile.setProperty(mprop);
但没有为oracle.security.idm.RoleProfile提供样本。此界面也没有像oracle.security.idm.UserProfile这样的setProperty(ModProperty mprop)
。那么我们如何改变这个类的属性呢?
答案 0 :(得分: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
实现它,然后通过以下三个类扩展它:
oracle.security.idm.providers.stdldap.LDRole
,oracle.security.idm.providers.libovd.LibOVDRole
和oracle.security.idm.util.RoleProfileValueObject
他们所有人都有自己定义的setProperty(ModProperty modProp)
方法。其中oracle.security.idm.util.RoleProfileValueObject
类从oracle.security.idm.OperationNotSupportedException
方法抛出setProperty(ModProperty modProp)
并且它不执行任何操作。
所以解决方案是:
RoleProfile roleprofile = role.getRoleProfile();
ModProperty mprop = new ModProperty("someprop", "modified display name", ModProperty.ADD);
((LDRole)roleprofile).setProperty(mprop);
这就是所有人。 :)