0

Oracle® Fusion Middleware Security Guide』の「ID の変更」セクションには、次のように書かれています。

ID を変更するには、ID への参照が必要です。User、UserProfile、Role、および RoleProfile クラスは、ID の変更を容易にする次の API を提供します。

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

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のサンプルは提供されていません。また、このインターフェースにはoracle.security.idm.UserProfilesetProperty(ModProperty mprop)のようなものはありません。では、このクラスのプロパティを変更するにはどうすればよいでしょうか。

4

1 に答える 1

1

メソッドを使用するには、クラスでインスタンスsetProperty(ModProperty mprop)をキャストする必要があります(そのドキュメントや javadoc は見つかりませんでした)。実際には、インターフェースが拡張され、抽象クラスがそれを実装します。これは、次の 3 つのクラスによって拡張されます。RoleProfileoracle.security.idm.providers.stdldap.LDRoleoracle.security.idm.RoleProfileoracle.security.idm.Roleoracle.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.OperationNotSupportedExceptionからスローし、setProperty(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 に答える