|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
public interface GSSContext
このインタフェースは、GSS-API のセキュリティコンテキストをカプセル化し、そのコンテキストで利用できるセキュリティサービスを提供します。セキュリティコンテキストは、ローカルに取得した資格を使用してピア間に確立されます。1 組のピア間には、同じ資格または異なる資格を使用する複数のコンテキストが同時に存在する場合があります。GSS-API は、ピア間のセキュリティコンテキストによって生成されるトークンを転送するときに、配下の転送プロトコルには依存せず、その呼び出し側アプリケーションに依存します。
呼び出し側がデフォルトの GSSManager
インスタンスを使用してコンテキストをインスタンス化する場合は、Kerberos v5 GSS-API 機構を使用してコンテキストが確立されます。この機構は、OID「1.2.840.113554.1.2.2」として識別され、RFC 1964 に定義されています。
コンテキストの確立処理が開始される前に、確立されるコンテキストの特性を起動側が要求する場合があります。呼び出し側が要求した特性が、配下の機構によってサポートされていないことがあります。コンテキストが確立すると、呼び出し側はさまざまなクエリメソッドを使用して、そのコンテキストから提供された実際の特性やサービスを確認できます。デフォルトの GSSManager
インスタンスから提供される Kerberos v5 GSS-API 機構を使用しているときは、すべてのオプションサービスをローカルに利用できます。たとえば、相互認証、資格の委譲、機密性と整合性の保護、メッセージごとのリプレイ検出や順序付けなどを利用できます。GSS-API では、メッセージの機密性を保護するには、メッセージの整合性を保護する必要があります。
コンテキストが確立するまで、起動側による initSecContext
呼び出しと受け入れ側による acceptSecContext
呼び出しが繰り返されます。このループは、コンテキストが確立すると終了します。このループの処理中に、initSecContext
および acceptSecContext
メソッドがトークンを生成し、アプリケーションはそのトークンをピアに送信します。ピアは、acceptSecContext
または initSecContext
に対して適切なトークンを入力として渡します。
コンテキストが完全に確立する前でも、isProtReady
メソッドを呼び出して、wrap
および getMIC
によるメッセージごとの操作にコンテキストを使用できるかどうかを確認できます。この方法を使えば、完全に確立される前のコンテキストに対してメッセージごとの操作を使用できます。
コンテキストの確立が完了した後、つまり isProtReady
メソッドから true
が返された後には、確立されたコンテキストの実際の特性やサービスを確認するためにクエリルーチンを呼び出せます。また、wrap
および getMIC
のメッセージごとのメソッドを使用して、アプリケーションが提供するデータに対して暗号化操作を行うこともできます。
コンテキストが不要になったら、dispose
を呼び出して、そのコンテキストが使用しているシステム資源をすべて解放する必要があります。
セキュリティコンテキストは通常、処理するトークンに関する順序付けとリプレイ検出情報を保持しています。このため、トークンがこのコンテキストに渡されて処理される順序が重要になります。また、このインタフェース内のメソッドは同期化されません。複数のスレッド間で GSSContext
を共有するときは、なんらかのアプリケーションレベルの同期化を行う必要があります。
GSS-API コンテキストを使用するときのセキュリティ制限は、GSS-API 機構プロバイダによって異なります。これらの制限については、各機構プロバイダのドキュメントを参照してください。これらのセキュリティ制限を機構層で検査する場合は、アプリケーションに適切な権限が付与されている必要があります。
次に示すコード例は、起動側ピアの GSSContext
インタフェースの使用法を示しています。GSSContext
オブジェクトに対して、オブジェクトのインスタンス化、指定したいフラグの設定、コンテキストの確立、実際のコンテキストフラグの照会、アプリケーションデータに対するメッセージごとの操作、コンテキストの最終検出などを行っています。
// Create a context using default credentials // and the implementation specific default mechanism GSSManager manager ... GSSName targetName ... GSSContext context = manager.createContext(targetName, null, null, GSSContext.INDEFINITE_LIFETIME); // set desired context options prior to context establishment context.requestConf(true); context.requestMutualAuth(true); context.requestReplayDet(true); context.requestSequenceDet(true); // establish a context between peers byte []inToken = new byte[0]; // Loop while there still is a token to be processed while (!context.isEstablished()) { byte[] outToken = context.initSecContext(inToken, 0, inToken.length); // send the output token if generated if (outToken != null) sendToken(outToken); if (!context.isEstablished()) { inToken = readToken(); } // display context information System.out.println("Remaining lifetime in seconds = " + context.getLifetime()); System.out.println("Context mechanism = " + context.getMech()); System.out.println("Initiator = " + context.getSrcName()); System.out.println("Acceptor = " + context.getTargName()); if (context.getConfState()) System.out.println("Confidentiality (i.e., privacy) is available"); if (context.getIntegState()) System.out.println("Integrity is available"); // perform wrap on an application supplied message, appMsg, // using QOP = 0, and requesting privacy service byte [] appMsg ... MessageProp mProp = new MessageProp(0, true); byte []tok = context.wrap(appMsg, 0, appMsg.length, mProp); sendToken(tok); // release the local-end of the context context.dispose();
フィールドの概要 | |
---|---|
static int |
DEFAULT_LIFETIME
コンテキストのデフォルトの寿命を表す寿命定数です。 |
static int |
INDEFINITE_LIFETIME
コンテキストの寿命が無期限であることを表す寿命定数です。 |
メソッドの概要 | |
---|---|
byte[] |
acceptSecContext(byte[] inToken,
int offset,
int len)
ピアからトークンが着信したときに、コンテキストの受け入れ側によって呼び出されます。 |
void |
acceptSecContext(InputStream inStream,
OutputStream outStream)
コンテキストの受け入れ側によって呼び出されるメソッドです。 |
void |
dispose()
コンテキストオブジェクトに格納されているシステム資源と暗号化情報をすべて解放し、そのコンテキストを無効にします。 |
byte[] |
export()
このコンテキストをエクスポートして、別のプロセスがインポートできるようにします。 |
boolean |
getAnonymityState()
コンテキストの起動側がコンテキストの受け入れ側に匿名として認証されているかどうかを判定します。 |
boolean |
getConfState()
このコンテキストでデータの機密性を利用できるかどうかを検査します。 |
boolean |
getCredDelegState()
このコンテキストで資格の委譲が有効になっているかどうかを判定します。 |
GSSCredential |
getDelegCred()
コンテキストの起動側からコンテキストの受け入れ側に委譲された資格を取得します。 |
boolean |
getIntegState()
このコンテキストでデータの整合性を利用できるかどうかを検査します。 |
int |
getLifetime()
このコンテキストの残りの寿命を検査します。 |
Oid |
getMech()
このコンテキストに使用されている機構を検査します。 |
byte[] |
getMIC(byte[] inMsg,
int offset,
int len,
MessageProp msgProp)
指定されたメッセージの暗号化 MIC (メッセージ整合性コード) を含むトークンを返します。 |
void |
getMIC(InputStream inStream,
OutputStream outStream,
MessageProp msgProp)
ストリームを使用して、指定されたメッセージの暗号化 MIC を含むトークンを返します。 |
boolean |
getMutualAuthState()
このコンテキストで相互認証が有効になっているかどうかを判定します。 |
boolean |
getReplayDetState()
このコンテキストのメッセージごとのセキュリティサービスでリプレイ検出が有効になっているかどうかを判定します。 |
boolean |
getSequenceDetState()
このコンテキストのメッセージごとのセキュリティサービスでシーケンスチェックが有効になっているかどうかを判定します。 |
GSSName |
getSrcName()
コンテキストの起動側の名前を返します。 |
GSSName |
getTargName()
コンテキストの受け入れ側の名前を返します。 |
int |
getWrapSizeLimit(int qop,
boolean confReq,
int maxTokenSize)
wrap に渡すことができるメッセージサイズの制限を決めるときに使用します。 |
byte[] |
initSecContext(byte[] inputBuf,
int offset,
int len)
コンテキストの起動側によって呼び出されるメソッドです。 |
int |
initSecContext(InputStream inStream,
OutputStream outStream)
コンテキストの起動側によって呼び出されるメソッドです。 |
boolean |
isEstablished()
コンテキストを確立する前に、コンテキストの状態を確認するときに使用します。 |
boolean |
isInitiator()
このピアがコンテキストの起動側であるかどうかを検査します。 |
boolean |
isProtReady()
このコンテキストでメッセージごとの操作をすぐに開始できるかどうかを検査します。 |
boolean |
isTransferable()
export メソッドを使用してこのコンテキストをほかのプロセスに転送できるかどうかを検査します。 |
void |
requestAnonymity(boolean state)
起動側の資格を受け入れ側に公開しないように要求します。 |
void |
requestConf(boolean state)
wrap メソッドでデータの機密性を有効にするように要求します。 |
void |
requestCredDeleg(boolean state)
コンテキストの確立の際に起動側の資格を受け入れ側に委譲するように要求します。 |
void |
requestInteg(boolean state)
wrap メソッドと getMIC メソッドでデータの整合性を有効にするように要求します。 |
void |
requestLifetime(int lifetime)
コンテキストの寿命を秒単位で要求します。 |
void |
requestMutualAuth(boolean state)
コンテキストが確立しているときに、相互認証が行われるように要求します。 |
void |
requestReplayDet(boolean state)
コンテキストが確立したあとで、メッセージごとのセキュリティサービスのリプレイ検出が有効になるように要求します。 |
void |
requestSequenceDet(boolean state)
コンテキストが確立したあとで、メッセージごとのセキュリティサービスのシーケンスチェックが有効になるように要求します。 |
void |
setChannelBinding(ChannelBinding cb)
コンテキストが確立しているときにチャネルバインディングが使用されるように設定します。 |
byte[] |
unwrap(byte[] inBuf,
int offset,
int len,
MessageProp msgProp)
コンテキストの相手側のピアで wrap メソッドによって生成されたトークンを処理するために使用します。 |
void |
unwrap(InputStream inStream,
OutputStream outStream,
MessageProp msgProp)
ストリームを使用して、コンテキストの相手側のピアで wrap メソッドによって生成されたトークンを処理します。 |
void |
verifyMIC(byte[] inToken,
int tokOffset,
int tokLen,
byte[] inMsg,
int msgOffset,
int msgLen,
MessageProp msgProp)
トークンパラメータに含まれる暗号化 MIC を、指定されたメッセージに対して検査します。 |
void |
verifyMIC(InputStream tokStream,
InputStream msgStream,
MessageProp msgProp)
ストリームを使用して、トークンパラメータに含まれる指定されたメッセージの暗号化 MIC を検証します。 |
byte[] |
wrap(byte[] inBuf,
int offset,
int len,
MessageProp msgProp)
確立されたセキュリティコンテキストに対してメッセージごとのセキュリティサービスを適用します。 |
void |
wrap(InputStream inStream,
OutputStream outStream,
MessageProp msgProp)
ストリームを使用して、確立されたセキュリティコンテキストにメッセージごとのセキュリティサービスを適用します。 |
フィールドの詳細 |
---|
static final int DEFAULT_LIFETIME
static final int INDEFINITE_LIFETIME
Integer.MAX_VALUE
に設定する必要があります。
メソッドの詳細 |
---|
byte[] initSecContext(byte[] inputBuf, int offset, int len) throws GSSException
acceptSecContext
メソッドによって生成されたトークンを処理します。このメソッドから返される出力トークンは、ピアの acceptSecContext
メソッドで処理してもらうためにアプリケーションからピアに送信する必要があります。アプリケーションは isEstablished
を呼び出すことにより、コンテキストのこちら側でコンテキストの確立処理が完了したかどうかを確認できます。isEstablished
から戻り値 false
が返された場合は、initSecContext
にさらにトークンを提供する必要があることを示しています。コンテキストの確立が完了したら、利用可能なコンテキストオプションを get メソッドを使用して照会できます。
initSecContext
メソッドからピアのトークンが返され、isEstablished
からも true
が返されることがあります。この場合、トークンはピアに送信する必要がありますが、コンテキストの相手側はその時点で完全に確立されています。
一部の機構プロバイダでは、セキュリティコンテキストを起動するアクセス権が呼び出し側に付与されている必要があります。アクセス権の確認に失敗した場合、このメソッドから SecurityException
がスローされます。
inputBuf
- ピアによって生成されたトークン。最初の呼び出しでは、ピアからトークンを受信しないため、このパラメータは無視されるoffset
- inputBuf 内のオフセット。この位置からトークンが開始するlen
- トークンの長さ
null
の場合は、トークンが生成されないことを示す
GSSException
- メジャーエラーコード GSSException.DEFECTIVE_TOKEN
、GSSException.BAD_MIC
、GSSException.NO_CRED
、GSSException.CREDENTIALS_EXPIRED
、GSSException.BAD_BINDINGS
、GSSException.OLD_TOKEN
、GSSException.DUPLICATE_TOKEN
、GSSException.BAD_NAMETYPE
、GSSException.BAD_MECH
、GSSException.FAILURE
を含むint initSecContext(InputStream inStream, OutputStream outStream) throws GSSException
acceptSecContext
メソッドによって生成されたトークンをストリームを使用して処理します。このメソッドから OutpuStream
に書き出された出力トークンは、ピアの acceptSecContext
呼び出しで処理してもらうためにアプリケーションからピアに送信する必要があります。通常は、この処理を確実に行うために、OutputStream
に対して flush
メソッドを呼び出して 2 つのピア間の接続をカプセル化します。トークンが OutputStream に書き出されたかどうかは、このメソッドの戻り値から判断できます。戻り値 0
は、トークンが書き出されなかったことを示します。コンテキストのこちら側でコンテキストの確立処理が完了したかどうかは、isEstablished
を呼び出して確認できます。isEstablished
から戻り値 false
が返された場合は、initSecContext
にさらにトークンを提供する必要があることを示しいます。コンテキストの確立が完了したら、利用可能なコンテキストオプションを get メソッドを使用して照会できます。
initSecContext
メソッドからピアのトークンが返され、isEstablished
からも true
が返されることがあります。この場合、トークンはピアに送信する必要がありますが、コンテキストの相手側はその時点で完全に確立されています。
GSS-API の認証トークンには、開始トークンと終了トークンが定義されています。このメソッドが呼び出されるたびに、これらのトークンが 1 つずつ読み込まれます。トークンの一部が読み込まれなかった場合、そのストリームはブロックされます。ほかのすべての点では、このメソッドは byte 配列をベースにした initSecContext
と等価です。
一部の機構プロバイダでは、セキュリティコンテキストを起動するアクセス権が呼び出し側に付与されている必要があります。アクセス権の確認に失敗した場合、このメソッドから SecurityException
がスローされます。
次のコード例は、このメソッドの使用方法を示しています。
InputStream is ... OutputStream os ... GSSContext context ... // Loop while there is still a token to be processed while (!context.isEstablished()) { context.initSecContext(is, os); // send output token if generated os.flush(); }
inStream
- ピアによって生成されたトークンを含む InputStream。最初の呼び出しでは、ピアから受信するトークンがないため、このパラメータは無視されるoutStream
- 出力トークンが書き出される OutputStream。コンテキスト確立の最終段階では、書き出されるバイトがないこともある
GSSException
- メジャーエラーコード GSSException.DEFECTIVE_TOKEN
、GSSException.BAD_MIC
、GSSException.NO_CRED
、GSSException.CREDENTIALS_EXPIRED
、GSSException.BAD_BINDINGS
、GSSException.OLD_TOKEN
、GSSException.DUPLICATE_TOKEN
、GSSException.BAD_NAMETYPE
、GSSException.BAD_MECH
、GSSException.FAILURE
を含むbyte[] acceptSecContext(byte[] inToken, int offset, int len) throws GSSException
initSecContext
メソッドに送信する必要があります。
アプリケーションは、isEstablished
を呼び出すことにより、このピアでコンテキストの確立処理が完了したかどうかを確認できます。isEstablished
から戻り値 false
が返された場合は、このメソッドにさらにトークンを提供する必要があることを示しています。コンテキストの確立が完了したら、利用可能なコンテキストオプションを get メソッドを使用して照会できます。
acceptSecContext
メソッドからピアのトークンが返され、isEstablished
からも true
が返されることがあります。この場合、トークンはピアに送信する必要がありますが、コンテキストの相手側はその時点で完全に確立されています。
一部の機構プロバイダでは、セキュリティコンテキストを受け入れるアクセス権が呼び出し側に付与されている必要があります。アクセス権の確認に失敗した場合、このメソッドから SecurityException
がスローされます。
次のコード例は、このメソッドの使用方法を示しています。
byte[] inToken; byte[] outToken; GSSContext context ... // Loop while there is still a token to be processed while (!context.isEstablished()) { inToken = readToken(); outToken = context.acceptSecContext(inToken, 0, inToken.length); // send output token if generated if (outToken != null) sendToken(outToken); }
inToken
- ピアによって生成されたトークンoffset
- inMsg 内のオフセット。この位置からトークンが開始するlen
- トークンの長さ
null
の場合は、トークンが生成されないことを示す
GSSException
- メジャーエラーコード GSSException.DEFECTIVE_TOKEN
、GSSException.BAD_MIC
、GSSException.NO_CRED
、GSSException.CREDENTIALS_EXPIRED
、GSSException.BAD_BINDINGS
、GSSException.OLD_TOKEN
、GSSException.DUPLICATE_TOKEN
、GSSException.BAD_MECH
、GSSException.FAILURE
を含むvoid acceptSecContext(InputStream inStream, OutputStream outStream) throws GSSException
OutpuStream
に書き出された出力トークンは、ピアの initSecContext
メソッドで処理してもらうためにアプリケーションからピアに送信する必要があります。通常は、この処理を確実に行うために、OutputStream
に対して flush
メソッドを呼び出して 2 つのピア間の接続をカプセル化します。コンテキストのこちら側でコンテキストの確立処理が完了したかどうかは、isEstablished
を呼び出して確認できます。isEstablished
から戻り値 false
が返された場合は、acceptSecContext
にさらにトークンを提供する必要があることを示しています。コンテキストの確立が完了したら、利用可能なコンテキストオプションを get メソッドを使用して照会できます。
acceptSecContext
メソッドからピアのトークンが返され、isEstablished
からも true
が返されることがあります。この場合、トークンはピアに送信する必要がありますが、コンテキストの相手側はその時点で完全に確立されています。
GSS-API の認証トークンには、開始トークンと終了トークンが定義されています。このメソッドが呼び出されるたびに、これらのトークンが 1 つずつ読み込まれます。トークンの一部が読み込まれなかった場合、そのストリームはブロックされます。ほかのすべての点では、このメソッドは byte 配列をベースにした acceptSecContext
と等価です。
一部の機構プロバイダでは、セキュリティコンテキストを受け入れるアクセス権が呼び出し側に付与されている必要があります。アクセス権の確認に失敗した場合、このメソッドから SecurityException
がスローされます。
次のコード例は、このメソッドの使用方法を示しています。
InputStream is ... OutputStream os ... GSSContext context ... // Loop while there is still a token to be processed while (!context.isEstablished()) { context.acceptSecContext(is, os); // send output token if generated os.flush(); }
inStream
- ピアによって生成されたトークンを含む InputStreamoutStream
- 出力トークンが書き出される OutputStream。コンテキスト確立の最終段階では、書き出されるバイトがないこともある
GSSException
- メジャーエラーコード GSSException.DEFECTIVE_TOKEN
、GSSException.BAD_MIC
、GSSException.NO_CRED
、GSSException.CREDENTIALS_EXPIRED
、GSSException.BAD_BINDINGS
、GSSException.OLD_TOKEN
、GSSException.DUPLICATE_TOKEN
、GSSException.BAD_MECH
、GSSException.FAILURE
を含むboolean isEstablished()
true
。void dispose() throws GSSException
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むint getWrapSizeLimit(int qop, boolean confReq, int maxTokenSize) throws GSSException
wrap
に渡すことができるメッセージサイズの制限を決めるときに使用します。このメソッドは、最大メッセージサイズを返します。confReq
および qop
パラメータが同じ wrap
メソッドにこのサイズのメッセージを渡すと、maxTokenSize
バイト以下の出力トークンが生成されます。アプリケーションでこのメソッドを使用する場合は、最大メッセージサイズを使用するプロトコルを介して通信することを前提としています。このメソッドを使用すれば、メッセージを断片化してから保護を適用できます。
GSS-API 実装では、getWrapSizeLimit
を呼び出したときに、QOP 値が有効かどうかを検出するように推奨しています。ただし、必須ではありません。このルーチンでは、最大メッセージサイズだけが保証され、メッセージ保護に指定した QOP 値を利用できるかどうかについては保証されません。
qop
- ラップに要求する保護レベルconfReq
- ラップにプライバシを要求する場合は、true
。要求しない場合は、false
maxTokenSize
- ラップによって生成されるトークンの最大サイズとして指定する値
GSSException
- メジャーエラーコード GSSException.CONTEXT_EXPIRED
、GSSException.BAD_QOP
、GSSException.FAILURE
を含むbyte[] wrap(byte[] inBuf, int offset, int len, MessageProp msgProp) throws GSSException
MessageProp オブジェクトは、アプリケーションによってインスタンス化されます。このオブジェクトを使用して、暗号化アルゴリズムを選択するための QOP 値や、任意指定でメッセージを暗号化するためのプライバシサービスを指定します。この呼び出しに使用される配下の機構では、このプライバシサービスを提供できない場合があります。その場合は、配下の機構が提供する実際のプライバシサービスが、この MessageProp オブジェクトに設定されます。呼び出し側は、復帰したらすぐにプライバシサービスを照会する必要があります。配下の機構が要求された QOP を提供できない場合は、BAD_QOP コードが設定された GSSException がスローされます。
アプリケーションレベルのプロトコルには、ラップによって生成されたトークンを使用して「セキュアフレーミング」を提供するものがあるため、実装では長さ 0 のメッセージのラップをサポートする必要があります。
アプリケーションは、このトークンをピアに送信します。
inBuf
- 保護されるアプリケーションデータoffset
- inBuf 内のオフセット。この位置からデータが開始するlen
- データの長さmsgProp
- MessageProp のインスタンス。必要な QOP とプライバシ状態を設定するためにアプリケーションが使用する。デフォルトの QOP を要求する場合は、指定する QOP として 0 を設定する。このメソッドから復帰すると、このオブジェクトには配下の機構によってメッセージに適用された実際のプライバシ状態が格納される
GSSException
- メジャーエラーコード GSSException.CONTEXT_EXPIRED
、GSSException.BAD_QOP
、GSSException.FAILURE
を含むvoid wrap(InputStream inStream, OutputStream outStream, MessageProp msgProp) throws GSSException
wrap
メソッドと等価です。
アプリケーションは、このトークンをピアに送信する必要があります。通常は、この処理を確実に行うために、OutputStream
に対して flush
メソッドを呼び出して 2 つのピア間の接続をカプセル化します。
MessageProp オブジェクトは、アプリケーションによってインスタンス化されます。このオブジェクトを使用して、暗号化アルゴリズムを選択するための QOP 値や、任意指定でメッセージを暗号化するためのプライバシサービスを指定します。この呼び出しに使用される配下の機構では、このプライバシサービスを提供できない場合があります。その場合は、配下の機構が提供する実際のプライバシサービスが、この MessageProp オブジェクトに設定されます。呼び出し側は、復帰したらすぐにプライバシサービスを照会する必要があります。配下の機構が要求された QOP を提供できない場合は、BAD_QOP コードが設定された GSSException がスローされます。
アプリケーションレベルのプロトコルには、ラップによって生成されたトークンを使用して「セキュアフレーミング」を提供するものがあるため、実装では長さ 0 のメッセージのラップをサポートする必要があります。
inStream
- 保護されるアプリケーションデータを含む InputStream。InStream 内の利用できるデータがすべて使用されるoutStream
- 保護されたメッセージを書き出す OutputStreammsgProp
- MessageProp のインスタンス。必要な QOP とプライバシ状態を設定するためにアプリケーションが使用する。デフォルトの QOP を要求する場合は、指定する QOP として 0 を設定する。このメソッドから復帰すると、このオブジェクトには配下の機構によってメッセージに適用された実際のプライバシ状態が格納される
GSSException
- メジャーエラーコード GSSException.CONTEXT_EXPIRED
、GSSException.BAD_QOP
、GSSException.FAILURE
を含むbyte[] unwrap(byte[] inBuf, int offset, int len, MessageProp msgProp) throws GSSException
wrap
メソッドによって生成されたトークンを処理するために使用します。このメソッドは、ピアアプリケーションからそのラップ呼び出しに渡されたメッセージを返し、同時にそのメッセージに埋め込まれた MIC を検査します。MessageProp オブジェクトは、アプリケーションによってインスタンス化されます。このオブジェクトは、QOP、メッセージに機密性が適用されているかどうか、およびメッセージの状態に関するその他の補足情報を呼び出し側に返すために、配下の機構によって使用されます。
アプリケーションレベルのプロトコルには、ラップによって生成されたトークンを使用して「セキュアフレーミング」を提供するものがあるため、実装では長さ 0 のメッセージのラップおよびラップ解除をサポートする必要があります。
inBuf
- ピアから受信したラップトークンを含む byte 配列offset
- トークンが開始するオフセットlen
- トークンの長さmsgProp
- このメソッドから復帰すると、このオブジェクトには、適用された QOP、メッセージのプライバシ状態、およびトークンの補足情報 (重複している、古い、順序が正しくない、ギャップのあとに着信したかどうか) が格納される
GSSException
- メジャーエラーコード GSSException.DEFECTIVE_TOKEN
、GSSException.BAD_MIC
、GSSException.CONTEXT_EXPIRED
、GSSException.FAILURE
を含むvoid unwrap(InputStream inStream, OutputStream outStream, MessageProp msgProp) throws GSSException
wrap
メソッドによって生成されたトークンを処理します。このメソッドは、ピアアプリケーションからそのラップ呼び出しに渡されたメッセージを返し、同時にそのメッセージに埋め込まれた MIC を検査します。MessageProp オブジェクトは、アプリケーションによってインスタンス化されます。このオブジェクトは、QOP、メッセージに機密性が適用されているかどうか、およびメッセージの状態に関するその他の補足情報を呼び出し側に返すために、配下の機構によって使用されます。
アプリケーションレベルのプロトコルには、ラップによって生成されたトークンを使用して「セキュアフレーミング」を提供するものがあるため、実装では長さ 0 のメッセージのラップおよびラップ解除をサポートする必要があります。
このメソッドが読み取る入力トークンの形式は、使用する配下の機構の仕様に定義されています。このメソッドが呼び出されるたびに、これらのトークンが 1 つずつ読み込まれます。この機構のトークンに開始トークンと終了トークンが定義されている場合、一部のトークンが読み込まれなかったときは、InputStream
はブロックされます。開始トークンと終了トークンが定義されていない場合は、使用できるすべてのバイトがそのトークンの一部と見なされます。
入力ストリームのブロックが発生することがある点を除けば、このメソッドは byte 配列をベースにした unwrap
メソッドと等価です。
inStream
- ピアによって生成されたラップトークンを含む InputStreamoutStream
- アプリケーションメッセージを書き出す OutputStreammsgProp
- このメソッドから復帰すると、このオブジェクトには、適用された QOP、メッセージのプライバシ状態、およびトークンの補足情報 (重複している、古い、順序が正しくない、ギャップのあとに着信したかどうか) が格納される
GSSException
- メジャーエラーコード GSSException.DEFECTIVE_TOKEN
、GSSException.BAD_MIC
、GSSException.CONTEXT_EXPIRED
、GSSException.FAILURE
を含むbyte[] getMIC(byte[] inMsg, int offset, int len, MessageProp msgProp) throws GSSException
プライバシは、ラップを呼び出したときにだけ適用されます。
アプリケーションレベルのプロトコルには、getMIC によって生成されたトークンを使用して「セキュアフレーミング」を提供するものがあるため、実装では長さ 0 のメッセージから派生した MIC をサポートする必要があります。
inMsg
- MIC の生成の対象となるメッセージoffset
- inMsg 内のオフセット。この位置からメッセージが開始するlen
- メッセージの長さmsgProp
- MessageProp
のインスタンス。必要な QOP を設定するためにアプリケーションが使用する。デフォルトの QOP を要求する場合は、msgProp
に指定する QOP として 0
を設定するか、msgProp
に null
を渡す
GSSException
- メジャーエラーコード GSSException.CONTEXT_EXPIRED
、GSSException.BAD_QOP
、GSSException.FAILURE
を含むvoid getMIC(InputStream inStream, OutputStream outStream, MessageProp msgProp) throws GSSException
getMIC
メソッドと等価です。
プライバシは、ラップを呼び出したときにだけ適用されます。アプリケーションレベルのプロトコルには、getMIC によって生成されたトークンを使用して「セキュアフレーミング」を提供するものがあるため、実装では長さ 0 のメッセージから派生した MIC をサポートする必要があります。
inStream
- MIC の生成の対象となるメッセージを含む InputStream。InStream 内で利用できるデータがすべて使用されるoutStream
- 出力トークンを書き出す OutputStreammsgProp
- MessageProp
のインスタンス。必要な QOP を設定するためにアプリケーションが使用する。デフォルトの QOP を要求する場合は、msgProp
に指定する QOP として 0
を設定するか、msgProp
に null
を渡す
GSSException
- メジャーエラーコード GSSException.CONTEXT_EXPIRED
、GSSException.BAD_QOP
、GSSException.FAILURE
を含むvoid verifyMIC(byte[] inToken, int tokOffset, int tokLen, byte[] inMsg, int msgOffset, int msgLen, MessageProp msgProp) throws GSSException
MessageProp オブジェクトは、アプリケーションによってインスタンス化されます。このオブジェクトは、メッセージに適用された保護の強さを示す QOP、およびメッセージの状態に関するその他の補足情報を呼び出し側に返すために、配下の機構によって使用されます。
アプリケーションレベルのプロトコルには、getMIC によって生成されたトークンを使用して「セキュアフレーミング」を提供するものがあるため、実装では長さ 0 のメッセージに対する MIC を計算および検査する必要があります。
inToken
- ピアの getMIC メソッドによって生成されたトークンtokOffset
- inMsg 内のオフセット。この位置からトークンが開始するtokLen
- トークンの長さinMsg
- 暗号化 MIC の検査の対象となるアプリケーションメッセージmsgOffset
- inMsg 内のオフセット。この位置からメッセージが開始するmsgLen
- メッセージの長さmsgProp
- このメソッドから復帰すると、このオブジェクトには、適用された QOP、およびトークンの補足情報 (重複している、古い、順序が正しくない、ギャップのあとに着信したかどうか) が格納される
GSSException
- メジャーエラーコード GSSException.DEFECTIVE_TOKEN
、GSSException.BAD_MIC
、GSSException.CONTEXT_EXPIRED
、GSSException.FAILURE
を含むvoid verifyMIC(InputStream tokStream, InputStream msgStream, MessageProp msgProp) throws GSSException
verifyMIC
メソッドと等価です。
MessageProp オブジェクトは、アプリケーションによってインスタンス化されます。このオブジェクトは、メッセージに適用された保護の強さを示す QOP、およびメッセージの状態に関するその他の補足情報を呼び出し側に返すために、配下の機構によって使用されます。アプリケーションレベルのプロトコルには、getMIC によって生成されたトークンを使用して「セキュアフレーミング」を提供するものがあるため、実装では長さ 0 のメッセージに対する MIC を計算および検査する必要があります。
このメソッドが読み取る入力トークンの形式は、使用する配下の機構の仕様に定義されています。このメソッドが呼び出されるたびに、これらのトークンが 1 つずつ読み込まれます。この機構のトークンに開始トークンと終了トークンが定義されている場合、一部のトークンが読み込まれなかったときは、InputStream
はブロックされます。開始トークンと終了トークンが定義されていない場合は、使用できるすべてのバイトがそのトークンの一部と見なされます。
入力ストリームのブロックが発生することがある点を除けば、このメソッドは byte 配列をベースにした verifyMIC
メソッドと等価です。
tokStream
- ピアの getMIC メソッドによって生成されたトークンを含む InputStreammsgStream
- 暗号化 MIC の検査の対象となるアプリケーションメッセージを含む InputStream。msgStream 内で利用できるデータがすべて使用されるmsgProp
- このメソッドから復帰すると、このオブジェクトには、適用された QOP、およびトークンの補足情報 (重複している、古い、順序が正しくない、ギャップのあとに着信したかどうか) が格納される
GSSException
- メジャーエラーコード GSSException.DEFECTIVE_TOKEN
、GSSException.BAD_MIC
、GSSException.CONTEXT_EXPIRED
、GSSException.FAILURE
を含むbyte[] export() throws GSSException
このメソッドは、セキュリティコンテキストを終了し、プロセス間トークンを作成します。このプロセス間トークンを別のプロセスの GSSManager.createContext
に渡すと、そのプロセスでそのコンテキストが再度起動されます。特定のコンテキストのインスタンスは、1 度に 1 つしか起動できません。このため、エクスポートしたセキュリティコンテキストをコンテキストのエクスポート側でアクセスしようとすると、失敗します。
この実装では、プロセス間トークンをインポートするプロセスが、ローカルセキュリティポリシーまたは実装の設定によって制限されることがあります。たとえば、同じアカウントで動作するプロセス間にだけコンテキストが渡されたり、同じプロセスグループのプロセス間にだけ渡されたりします。
プロセス間トークンには、機密情報 (暗号化鍵など) が含まれていることがあります。これらの機密情報は、できるだけプロセス間トークンに含めないようにするか、トークンを暗号化してからアプリケーションに返してください。ただし、標準的な GSS-API の実装では、こうした対応を適用できないことがあります。このため、アプリケーションでプロセス間トークンを使用する場合は、セキュリティに十分に配慮し、信頼できるプロセスに転送してください。
セキュリティコンテキストのプロセス間転送は、実装によってはサポートされていないことがあります。isTransferable
メソッドを呼び出せば、コンテキストオブジェクトを転送できるかどうかを確認できます。
エクスポートできないコンテキストに対してこのメソッドを呼び出すと、エラーコード GSSException.UNAVAILABLE
を含む例外がスローされます。
GSSException
- メジャーエラーコード GSSException.UNAVAILABLE
、GSSException.CONTEXT_EXPIRED
、GSSException.NO_CONTEXT
、GSSException.FAILURE
を含むGSSManager.createContext(byte[])
void requestMutualAuth(boolean state) throws GSSException
initSecContext
を最初に呼び出す前に行う必要があります。
認証機構によっては相互認証がサポートされていないことがあります。また、アプリケーションは相互認証を必要としていなくても、認証機構が相互認証を必要としている場合もあります。そのため、この要求が受け付けられたかどうかを確認するため、アプリケーションで getMutualAuthState
メソッドを使用する必要があります。
state
- 相互認証を使用するかどうかを示す boolean 値
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetMutualAuthState()
void requestReplayDet(boolean state) throws GSSException
initSecContext
を最初に呼び出す前に行う必要があります。コンテキストが確立している間は、リプレイ検出はオプションではなく、配下の機構の機能になります。
認証機構によってはリプレイ検出がサポートされていないことがあります。また、アプリケーションはリプレイ検出を必要としていなくても、認証機構がリプレイ検出を必要としている場合もあります。そのため、この要求が受け付けられたかどうかを確認するため、アプリケーションで getReplayDetState
メソッドを使用する必要があります。リプレイ検出が有効になっている場合、MessageProp.isDuplicateToken
メソッドと MessageProp.isOldToken
メソッドは、unwrap
メソッドまたは verifyMIC
メソッドに渡される MessageProp
オブジェクトに対して有効な結果を返します。
state
- 確立したコンテキストに対してリプレイ検出を有効にするかどうかを示す boolean 値
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetReplayDetState()
void requestSequenceDet(boolean state) throws GSSException
initSecContext
を最初に呼び出す前に行う必要があります。コンテキストが確立している間は、シーケンスチェックはオプションではなく、配下の機構の機能になります。
認証機構によってはシーケンスチェックがサポートされていないことがあります。また、アプリケーションはシーケンスチェックを必要としていなくても、認証機構がシーケンスチェックを必要としている場合もあります。そのため、この要求が受け付けられたかどうかを確認するため、アプリケーションで getSequenceDetState
メソッドを使用する必要があります。シーケンスチェックが有効になっている場合、MessageProp.isDuplicateToken
、MessageProp.isOldToken
、MessageProp.isUnseqToken
、MessageProp.isGapToken
の各メソッドは、unwrap
メソッドまたは verifyMIC
メソッドに渡される MessageProp
オブジェクトに対して有効な結果を返します。
state
- 確立されたコンテキストに対してシーケンスチェックを有効にするかどうかを示す boolean 値
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetSequenceDetState()
void requestCredDeleg(boolean state) throws GSSException
initSecContext
を最初に呼び出すより前に行う必要があります。
認証機構によっては、資格の委譲がサポートされていないことがあります。そのため、委譲を必要とするアプリケーションは、要求が受け付けられたかどうかを確認するために getCredDelegState
メソッドを使用する必要があります。委譲を使用してはならないとアプリケーションから示された場合、機構はその要求を受け、委譲は行われません。これは一般規則に対する例外で、あるサービスが要求されなくても機構がそのサービスを有効にすることがあるということです。
state
- 資格を委譲するかどうかを示す boolean 値
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetCredDelegState()
void requestAnonymity(boolean state) throws GSSException
initSecContext
を最初に呼び出すより前に行う必要があります。
認証機構によっては、起動側の匿名がサポートされていないことがあります。そのため、要求が受け付けられたかどうかを確認するため、アプリケーションで getAnonymityState
メソッドを使用する必要があります。
state
- 起動側が受け入れ側に匿名主体として認証されるかどうかを示す boolean 値
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetAnonymityState()
void requestConf(boolean state) throws GSSException
wrap
メソッドでデータの機密性を有効にするように要求します。この要求は、コンテキストの起動側からのみ行うことができ、initSecContext
を最初に呼び出すより前に行う必要があります。
認証機構によっては、機密性をサポートしていないものや、アプリケーションから要求されない場合でも機密性を有効にするものがあります。要求が受け付けられたかどうかを確認するには、アプリケーションで getConfState
メソッドを使用します。機密性が有効されている場合に限り、wrap
メソッドに渡された MessageProp
オブジェクトに含まれるプライバシ要求を認証機構が受け付けます。機密性を有効にすると、整合性も自動的に有効になります。
state
- 機密性を有効にするかどうかを示す boolean 値
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetConfState()
,
getIntegState()
,
requestInteg(boolean)
,
MessageProp
void requestInteg(boolean state) throws GSSException
wrap
メソッドと getMIC
メソッドでデータの整合性を有効にするように要求します。この要求は、コンテキストの起動側からのみ行うことができ、initSecContext
を最初に呼び出すより前に行う必要があります。
認証機構によっては整合性がサポートされていないことがあります。また、アプリケーションが整合性を要求しなくても、認証機構が整合性を有効にする場合もあります。この要求が受け付けられたかどうかを確認するには、アプリケーションで getIntegState
メソッドを使用します。整合性を無効にすると、機密性も自動的に無効になります。
state
- 整合性を有効にするかどうかを示す boolean 値
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetIntegState()
void requestLifetime(int lifetime) throws GSSException
initSecContext
を最初に呼び出す前に行う必要があります。
コンテキストの実際の寿命は配下の機構の機能によって異なるため、アプリケーションで getLifetime
メソッドを呼び出して確認する必要があります。
lifetime
- コンテキストに指定したい寿命 (秒単位)。無期限の寿命を要求する場合は INDEFINITE_LIFETIME
を使用し、デフォルトの寿命を要求する場合は DEFAULT_LIFETIME
を使用する
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetLifetime()
void setChannelBinding(ChannelBinding cb) throws GSSException
initSecContext
を最初に呼び出す前に行う必要があります。受け入れ側から呼び出すときは、acceptSecContext
を最初に呼び出す前に行う必要があります。
cb
- 使用するチャネルバインディング
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むboolean getCredDelegState()
requestCredDeleg
メソッドはその要求を受け付け、その時点から起動側に対して false
を返します。
requestCredDeleg(boolean)
boolean getMutualAuthState()
requestMutualAuth(boolean)
boolean getReplayDetState()
requestReplayDet(boolean)
boolean getSequenceDetState()
requestSequenceDet(boolean)
boolean getAnonymityState()
initSecContext
によってその時点までに生成されたコンテキスト確立トークンのいずれかに、起動側の ID が公開されているかどうかが検査されます。匿名としての認証が必要な場合は、initSecContext
を呼び出してからこのメソッドを呼び出し、生成されたトークンをピアに送信するか、そのコンテキストを中止するかを決定する必要があります。受け入れ側からこのメソッドを呼び出した場合は、acceptSecContext
によってその時点まで処理されたトークンのいずれかに、起動側の ID が公開されているかどうかが検査されます。
requestAnonymity(boolean)
boolean isTransferable() throws GSSException
export
メソッドを使用してこのコンテキストをほかのプロセスに転送できるかどうかを検査します。この呼び出しは、完全に確立されたコンテキストに対してのみ有効です。
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むboolean isProtReady()
wrap
、unwrap
、getMIC
、verifyMIC
などのメソッドを使用できる場合は true、そうでない場合は falseboolean getConfState()
isProtReady
または isEstablished
から true
が返された後でなければなりません。このメソッドが true
を返す場合は、getIntegState
も true
を返します。
requestConf(boolean)
boolean getIntegState()
isProtReady
または isEstablished
から true
が返された後でなければなりません。getConfState
が true
を返す場合は、このメソッドも true
を返します。
requestInteg(boolean)
int getLifetime()
isEstablished
から true が返された後でなければなりません。
requestLifetime(int)
GSSName getSrcName() throws GSSException
isProtReady
または isEstablished
から true
が返された後でのみ有効です。
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むGSSName
GSSName getTargName() throws GSSException
isProtReady
または isEstablished
から true
が返された後でのみ有効です。
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むOid getMech() throws GSSException
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むGSSCredential getDelegCred() throws GSSException
getCredDelegState
を使用します。
null
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むboolean isInitiator() throws GSSException
GSSException
- メジャーエラーコード GSSException.FAILURE
を含む
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。