Security Current

SecurityCurrentインタフェースは、呼び出し側の識別を設定/取得するために使用されます。 認証されたプリンシパルが設定され、ターゲットPOAオブジェクトが認証をサポートする場合、ORBはクライアントからターゲットオブジェクトへIIOPサービスコンテキストを使用して自動的にAuthenticatedPrincipalを伝達します。

AuthenticatedPrincipalオブジェクトはスレッドレベルおよびORBレベルの2つの異なるレベルに関連付けることができます。スレッドレベルのプリンシパルは、そのスレッドからの呼び出しにのみ影響する一方、ORBレベルのプリンシパルは、ORBを使用するすべてのスレッドに適用されます。両方の場合、スレッドレベルおよびORBレベルのプリンシパルが設定され、スレッドレベルのプリンシパルが優先されます。

呼び出しがサーバに到達し、呼び出しにセキュリティサービスのコンテキストが含まれる場合、ORBは呼び出し者のプリンシパルにSecurityCurrentのプリンシパルを自動的に設定します。
 
 

図1:  SecurityCurrent API
メソッド
説明
setORBPrincipal
デフォルトのプリンシパルを設定します。プリンシパルがすでに設定されている場合、最初に設定解除しない限り変更できません。
getORBPrincipal
デフォルトプリンシパルをORBに関連付けます。返されるタイプはAuthenticatedPrincipalではなく、不正コードでAuthenticatedPrincipalを設定解除するために使用できないので注意してください。
unsetORBPrincipal
ORBに関連付けられたデフォルトプリンシパルを設定解除します。現在、ORBに設定されているプリンシパルは、有効なものとして渡されます。
stackThreadPrincipal
偽装サポート。スレッドのプリンシパル識別を変更します。unstackThreadPrincipalメソッドを使用して元の識別を返すことができます。
getThreadPrincipal
現在のスレッドに関連付けられたプリンシパルを取得します。返されるタイプはAuthenticatedPrincipalではなく、不正コードでAuthenticatedPrincipalを設定解除するために使用できないので注意してください。
unstackThreadPrincipal
このスレッドに関連付けられたプリンシパルのスタックを解除します。oldPrincipalがスタックされたプリンシパルと一致しない場合、例外が発せられます。
getPrincipal
現在のスレッドの有効なプリンシパルを取得します。最上位のスレッドレベルのプリンシパルが存在する場合は、それを返します。存在しない場合は、ORBレベルのプリンシパルを返します。
getInetAddress
リモートクライアントのIPアドレスを取得します。クライアントがローカル
の場合、ヌルを返します。同じリモート呼び出しの代わりに行われたネストされた呼び出しの場合、getInetAddressはヌルでない値を返し続けます。
getPort
リモートクライアントのポートを取得します。クライアントがローカルの場合、ゼロを返します。同じリモート呼び出しの代わりに行われたネストされた呼び出しの場合、getPortは引き続き有効な値を返し続けます。
getLocalAddress
この呼び出しを受信したローカルIPアドレスを取得します。  クライアントがローカルの場合、ヌルを返します。同じリモート呼び出しの代わりに行われたネストされた呼び出しの場合、getLocalAddressはヌルでない値を返し続けます。
getLocalPort
この呼び出しを受信したローカルIPポートを取得します。  クライアントがローカルの場合、ヌルを返します。同じリモート呼び出しの代わりに行われたネストされた呼び出しの場合、getLocalPortは引き続き有効な値を返し続けます。
getNegotiatedCipherSuite ネゴシエートされたCipherSuiteを取得します。クライアント側で、このメソッドはパラメータとしてオブジェクト参照を使用します。 IIOP/SSLのみ。 
getCertificateChain ピア証明書チェインを取得します。クライアント側で、このメソッドはパラメータとしてオブジェクト参照を使用します。 IIOP/SSLのみ。 

偽装

stackThreadPrincipalおよびunstackThreadPrinciaplAPIを使用して、サーバスレッドを別の識別として実行できます。特定のオブジェクトを常に固定された識別で実行するか、各オブジェクトメソッドを別の識別として実行するかを確認するために使用できます。

Copyright © 1998-2003, Novell, Inc.All rights reserved.