2012-07-02 34 views
0

在章節的Oracle® Fusion Middleware Security Guide修改的身份,它寫的是:修改爲標識使用oracle.security.idm.RoleProfile setProperty方法

爲了修改一個身份,你需要身份的參考。 用戶,用戶配置,Role和RoleProfile類提供 下列API,以便修改身份:

user.setProperty(ModProperty丙); user.setProperties(ModProperty [] props);

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提供樣品。此外這個界面沒有setProperty(ModProperty mprop)oracle.security.idm.UserProfile。那麼我們該如何改變這個班級的財產?

回答

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類從setProperty(ModProperty modProp)方法拋出oracle.security.idm.OperationNotSupportedException方法,它不會做任何事情。

因此,解決辦法是:

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

這是所有鄉親。 :)