使用setProperty方法修改oracle.security.idm.RoleProfile的标识

时间:2012-07-02 15:04:47

标签: java oracle-fusion-middleware

在修改身份部分的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)。那么我们如何改变这个类的属性呢?

1 个答案:

答案 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实现它,然后通过以下三个类扩展它:

  1. oracle.security.idm.providers.stdldap.LDRole
  2. oracle.security.idm.providers.libovd.LibOVDRole
  3. oracle.security.idm.util.RoleProfileValueObject
  4. 他们所有人都有自己定义的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);
    

    这就是所有人。 :)