18 WebCenter Portal偽装セキュリティのカスタマイズ
この章の内容は次のとおりです。
WebCenter Portal偽装のカスタマイズについて
WebCenter Portal偽装を使用すると、指定されたユーザーが他のポータル・ユーザーになりすまし、そのユーザーとして操作を実行できます。このようなセッションは、一連のWebCenter Portal偽装式言語式(EL)および適合するJava APIを使用してカスタマイズできます。
(偽装者による)偽装セッションを開始する方法および(被偽装者による)偽装セッションを許可する方法の詳細は、『Oracle WebCenter Portalでのポータルの使用』のWebCenter Portal偽装の使用に関する項を参照してください。
WebCenter Portal偽装ELの使用
WebCenter Portal偽装では、偽装セッションのカスタマイズに使用できる一連の式言語式(EL)が提供されています。
公開されるELは、次のとおりです。
-
#{WCSecurityContext.impersonationConfigured}
: 現在のドメインで、偽装が有効化されているかどうかを返します。このELは、偽装セッションの終了が早すぎることが原因でエラーが発生したのかどうかを判別したり、セッションが終了したことを示す追加のインジケータを提供する場合に便利です。
-
#{WCSecurityContext.userInImpersonationSession}
: 現在のユーザーが偽装セッション内かどうかを返します。このELを使用して、コンテンツを保護し、偽装セッション中はアクセスできないようにレンダリングできます。たとえば、ページ上の管理タスク・フローのレンダリングされた属性をこのELにマップして、ユーザーが偽装セッションでタスク・フローを表示しない場合、タスク・フローのレンダリングのみを行うことができます。
-
#{WCSecurityContext.currentImpersonator}
: もし存在すれば、現在の偽装者を返します。このELを使用すると、ページ・テンプレートを変更して偽装者を表示したり、特定の偽装者のみにアクセスできるようにコンテンツをレンダリングできます。
偽装およびその他のELの詳細は、「偽装に関連するEL」を参照してください。
WebCenter Portal偽装APIの使用
WebCenter Portal偽装では、偽装セッションのカスタマイズに使用できるJava APIも提供されています。
oracle.webcenter.security.common.WCSecurityUtility
では、次のパブリックAPIが公開されます。
-
isImpersonationConfigured()
: 現在のドメインで、偽装が有効化されているかどうかを返します。このAPIは、エラーの原因が偽装セッションの終了が早すぎるためなのかを判定するため、またはセッション終了のインジケータを追加して提供するために役立ちます。
-
isUserInImpersonationSession()
: 現在のユーザーが偽装セッション内かどうかを返します。このAPIは、コンテンツを保護するため、また偽装セッションの間にコンテンツをアクセス不能にするために使用することをお薦めします。たとえば、認証の例外をスローするか、ユーザーが偽装セッションでタスク・フローを表示している場合に空のリストを返すかして、ページ上の管理タスク・フローの変更された属性を、このAPIにマップすることが可能です。
-
getCurrentImpersonatorId()
: もし存在すれば、現在の偽装者を返します。このAPIを使用して、偽装者を表示するようにページ・テンプレートを変更したり(次の例を参照)、特定の偽装者にかぎりアクセスできるコンテンツをいくつかレンダリングすることが可能です。
これらのAPIおよびその他のAPIの詳細は、Oracle WebCenter PortalのWebCenter Portal Javadoc API Java APIリファレンスを参照してください。
例: getCurrentImpersonatorId API
import oracle.webcenter.security.common.WCSecurityUtility; if (WCSecurityUtility.isUserInImpersonationSession()) { String impersonator =WCSecurityUtility.getCurrentImpersonatorId(); String currentUser =ADFContext.getCurrent().getSecurityContext().getUserName(); //Code to be executed when the user is in an impersonation session. ..log("User " +impersonator +" is impersonating as user " +currentUser); }