|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
このインタフェースでは、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)
起動側の ID が受け入れ側に公開されないように要求します。 |
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)
ストリームを使用して、確立されたセキュリティコンテキストにメッセージごとのセキュリティサービスを適用します。 |
フィールドの詳細 |
public static final int DEFAULT_LIFETIME
public static final int INDEFINITE_LIFETIME
Integer.MAX_VALUE
に設定する必要があります。
メソッドの詳細 |
public 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
を含むpublic 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
を含むpublic 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
- inToken 内のオフセット。この位置からトークンが開始する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
を含むpublic 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
を含むpublic boolean isEstablished()
true
。public void dispose() throws GSSException
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むpublic 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
を含むpublic 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
を含むpublic 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
を含むpublic 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
を含むpublic 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
を含むpublic 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
を含むpublic 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
を含むpublic 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
を含むpublic 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
を含むpublic byte[] export() throws GSSException
このメソッドは、セキュリティコンテキストを終了し、プロセス間トークンを作成します。このトークンが別のプロセスの GSSManager.createContext
に渡されると、そのプロセスでそのコンテキストが再起動します。特定のコンテキストのインスタンスは、1 度に 1 つしか起動できません。このため、コンテキストのエクスポート側でエクスポートされたセキュリティコンテキストにアクセスしようとすると、失敗します。
この実装では、プロセス間トークンをインポートするプロセスが、ローカルセキュリティポリシーまたは実装の設定によって制限されることがあります。たとえば、同じアカウントで動作するプロセス間にだけコンテキストが渡されたり、同じプロセスグループのプロセス間にだけ渡されたりします。
プロセス間トークンには、機密情報 (暗号化鍵など) が含まれていることがあります。これらの機密情報は、できるだけプロセス間トークンに含めないようにするか、トークンを暗号化してからアプリケーションに返してください。ただし、標準的な GSS-API の実装では、こうした対応を適用できないことがあります。このため、アプリケーションでプロセス間トークンを使用する場合は、セキュリティに十分に配慮し、信頼できるプロセスに転送してください。
セキュリティコンテキストのプロセス間転送は、サポートされていないことがあります。isTransferable
メソッドを呼び出せば、コンテキストオブジェクトを転送できるかどうかを確認できます。
エクスポートできないコンテキストに対してこのメソッドを呼び出すと、エラーコード GSSException.UNAVAILABLE
を含む GSSException がスローされます。
GSSException
- メジャーエラーコード GSSException.UNAVAILABLE
、GSSException.CONTEXT_EXPIRED
、GSSException.NO_CONTEXT
、GSSException.FAILURE
を含むGSSManager.createContext(byte[])
public void requestMutualAuth(boolean state) throws GSSException
initSecContext
を最初に呼び出す前に行う必要があります。
GSS-API 機構によっては、相互認証がサポートされていないことがあります。また、GSS-API 機構は相互認証を必要としないが、アプリケーションが必要とする場合もあります。このため、この要求が受け付けられたかどうかを、アプリケーションで getMutualAuthState
メソッドを使用して確認する必要があります。
state
- 相互認証を使用するかどうかを示す boolean 値
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetMutualAuthState()
public void requestReplayDet(boolean state) throws GSSException
initSecContext
を最初に呼び出す前に行う必要があります。コンテキストが確立している間は、リプレイ検出はオプションではなく、配下の機構の機能になります。
GSS-API 機構によっては、リプレイ検出がサポートされていないことがあります。また、GSS-API 機構はリプレイ検出を必要としないが、アプリケーションが必要とする場合もあります。このため、この要求が受け付けられたかどうかを、アプリケーションで getReplayDetState
メソッドを使用して確認する必要があります。リプレイ検出が有効になっている場合、MessageProp.isDuplicateToken
および MessageProp.isOldToken
メソッドは、unwrap
または verifyMIC
メソッドに渡される MessageProp
オブジェクトに対して有効な結果を返します。
state
- 確立したコンテキストに対してリプレイ検出を有効にするかどうかを示す boolean 値
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetReplayDetState()
public void requestSequenceDet(boolean state) throws GSSException
initSecContext
を最初に呼び出す前に行う必要があります。コンテキストが確立している間は、シーケンスチェックはオプションではなく、配下の機構の機能になります。
GSS-API 機構によっては、シーケンスチェックがサポートされていないことがあります。また、GSS-API 機構はシーケンスチェックを必要としないが、アプリケーションが必要とする場合もあります。このため、この要求が受け付けられたかどうかを、アプリケーションで getSequenceDetState
メソッドを使用して確認する必要があります。シーケンスチェックが有効になっている場合、MessageProp.isDuplicateToken
、MessageProp.isOldToken
、MessageProp.isUnseqToken
、および MessageProp.isGapToken
メソッドは、unwrap
または verifyMIC
メソッドに渡される MessageProp
オブジェクトに対して有効な結果を返します。
state
- 確立されたコンテキストに対してシーケンスチェックを有効にするかどうかを示す boolean 値
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetSequenceDetState()
public void requestCredDeleg(boolean state) throws GSSException
initSecContext
を最初に呼び出す前に行う必要があります。GSS-API 機構によっては、資格の委譲がサポートされていないことがあります。このため、この要求が受け付けられたかどうかを、アプリケーションで getCredDelegState
メソッドを使用して確認する必要があります。資格の委譲を使用できない場合、GSS-API 機構がその要求を受け付け、委譲は行われません。通常は、サービスが要求されなかった場合でも、そのサービスは有効になりますが、この場合は例外です。
state
- 資格を委譲するかどうかを示す boolean 値
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetCredDelegState()
public void requestAnonymity(boolean state) throws GSSException
initSecContext
を最初に呼び出す前に行う必要があります。GSS-API 機構によっては、起動側の匿名がサポートされていないことがあります。このため、アプリケーションで getAnonymityState
メソッドを使ってこの要求が受け付けられたかどうかをチェックする必要があります。このため、この要求が受け付けられたかどうかを、アプリケーションで getAnonymityState
メソッドを使用して確認する必要があります。。
state
- 起動側が受け入れ側に匿名主体として認証されるかどうかを示す boolean 値
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetAnonymityState()
public void requestConf(boolean state) throws GSSException
wrap
メソッドに対してデータの機密性が有効になるよう要求します。この要求は、コンテキストの起動側から、initSecContext
を最初に呼び出す前に行う必要があります。GSS-API 機構によっては、機密性がサポートされていないことがあります。また、GSS-API 機構では機密性が有効になっているが、アプリケーションが機密性を要求しない場合もあります。この要求が受け付けられたかどうかは、アプリケーションで getConfState
メソッドを使用して確認する必要があります。機密性が有効になっている場合、GSS-API 機構は wrap
メソッドに渡された MessageProp
オブジェクトのプライバシの要求を受け付けます。
機密性を有効にすると、完全性も自動的に有効になります。
state
- 機密性を有効にするかどうかを示す boolean 値
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetConfState()
,
getIntegState()
,
requestInteg(boolean)
,
MessageProp
public void requestInteg(boolean state) throws GSSException
wrap
および getMIC
メソッドに対してデータの完全性が有効になるように要求します。この要求は、コンテキストの起動側から、initSecContext
を最初に呼び出す前に行う必要があります。GSS-API 機構によっては、完全性がサポートされていないことがあります。また、GSS-API 機構では完全性が有効になっているが、アプリケーションが完全性を要求しない場合もあります。この要求が受け付けられたかどうかは、アプリケーションで getIntegState
メソッドを使用して確認する必要があります。
完全性を無効にすると、機密性も自動的に無効になります。
state
- 完全性を有効にするかどうかを示す boolean 値
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetIntegState()
public void requestLifetime(int lifetime) throws GSSException
initSecContext
を最初に呼び出す前に行う必要があります。
コンテキストの実際の寿命は、配下の機構の性能によって変わるため、アプリケーションで getLifetime
メソッドを呼び出して確認する必要があります。
lifetime
- コンテキストの目標寿命 (秒単位)。無期限の寿命を要求する場合は INDEFINITE_LIFETIME
を使用し、デフォルトの寿命を要求する場合は DEFAULT_LIFETIME
を使用する
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むgetLifetime()
public void setChannelBinding(ChannelBinding cb) throws GSSException
initSecContext
を最初に呼び出す前に行う必要があります。受け入れ側から呼び出すときは、acceptSecContext
を最初に呼び出す前に行う必要があります。
cb
- 使用するチャネルバインディング
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むpublic boolean getCredDelegState()
requestCredDeleg
メソッドはその要求を受け付け、その時点から起動側に対して false
を返します。
requestCredDeleg(boolean)
public boolean getMutualAuthState()
requestMutualAuth(boolean)
public boolean getReplayDetState()
requestReplayDet(boolean)
public boolean getSequenceDetState()
requestSequenceDet(boolean)
public boolean getAnonymityState()
initSecContext
によってその時点までに生成されたコンテキスト確立トークンのいずれかに、起動側の ID が公開されているかどうかが検査されます。匿名としての認証が必要な場合は、initSecContext
を呼び出してからこのメソッドを呼び出し、生成されたトークンをピアに送信するか、そのコンテキストを中止するかを決定する必要があります。受け入れ側からこのメソッドを呼び出した場合は、acceptSecContext
によってその時点まで処理されたトークンのいずれかに、起動側の ID が公開されているかどうかが検査されます。
requestAnonymity(boolean)
public boolean isTransferable() throws GSSException
export
メソッドを使用して、このコンテキストをほかのプロセスに転送できるかどうかを検査します。この呼び出しは、完全に確立されたコンテキストでだけ有効です。
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むpublic boolean isProtReady()
wrap
、unwrap
、getMIC
、verifyMIC
などのメソッドを使用できる場合は true、そうでない場合は falsepublic boolean getConfState()
isProtReady
または isEstablished
から true
が返されたあとでなければなりません。このメソッドが true
を返した場合は、getIntegState
も true
を返します。
requestConf(boolean)
public boolean getIntegState()
isProtReady
または isEstablished
から true
が返されたあとでなければなりません。getConfState
が true を返した場合は、このメソッドも true
を返します。
requestInteg(boolean)
public int getLifetime()
isEstablished
から true が返されたあとでなければなりません。
requestLifetime(int)
public GSSName getSrcName() throws GSSException
isProtReady
または isEstablished
から true
が返されたあとでのみ有効になります。
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むGSSName
public GSSName getTargName() throws GSSException
isProtReady
または isEstablished
から true
が返されたあとでのみ有効になります。
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むpublic Oid getMech() throws GSSException
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むpublic GSSCredential getDelegCred() throws GSSException
getCredDelegState
を使用します。
null
GSSException
- メジャーエラーコード GSSException.FAILURE
を含むpublic boolean isInitiator() throws GSSException
GSSException
- メジャーエラーコード GSSException.FAILURE
を含む
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.