JavaTM Platform
Standard Ed. 6

java.net
クラス SocketPermission

java.lang.Object
  上位を拡張 java.security.Permission
      上位を拡張 java.net.SocketPermission
すべての実装されたインタフェース:
Serializable, Guard

public final class SocketPermission
extends Permission
implements Serializable

このクラスは、ソケットを通じたネットワークへのアクセス権を表します。SocketPermission は、ホストの指定と、そのホストへの接続方法を指定したアクションの集合からなります。ホストは、次のように指定します。

host = (hostname | IPv4address | iPv6reference) [:portrange]
portrange = portnumber | -portnumber | portnumber-[portnumber]
 
ホストは、DNS 名、数値による IP アドレス、localhost (ローカルマシンの場合) のどれかで表されます。DNS 名によるホストの指定では、ワイルドカード「*」を 1 つだけ使うことができます。これを使う場合は、「*.sun.com」のように一番左の位置に使います。  

IPv6reference の形式は、「RFC 2732: Format for Literal IPv6 Addresses in URLs」で指定されている形式に従います。

ipv6reference = "[" IPv6address "]"
たとえば、次のように SocketPermission インスタンスを構築できます。
String hostAddress = inetaddress.getHostAddress();
if (inetaddress instanceof Inet6Address) {
sp = new SocketPermission("[" + hostAddress + "]:"+ port, action);
} else {
sp = new SocketPermission("[" + hostAddress + "]:"+ port, action);
    }
 
または
String host = url.getHost();
sp = new SocketPermission(host + ":"+ port, action);
 

IPv6 リテラルアドレスの「非圧縮形式」も有効です。  

ポートまたはポート範囲は省略可能です。ポートを「N-」(N はポート番号) という形で指定した場合は、ポート番号 N とそれより上のすべてのポート番号を表します。また、「-N」という形で指定した場合は、ポート番号 N とそれより下のすべてのポート番号を表します。  

ホストへの接続方法としては、次のどれかを指定できます。

accept
connect
listen
resolve
 
listen アクションは、localhost とともに使用した場合だけ意味を持ちます。「resolve」アクションは、ほかのアクションのいずれかが存在する場合には暗黙的に指定されます。アクション「resolve」は、ホスト/IP のネームサービス検索を指します。

SocketPermissions の作成およびその意味を例に示します。

p1 = new SocketPermission("puffin.eng.sun.com:7777", "connect,accept");
 
あるコードに対して上のアクセス権が認められた場合、これはそのコードが、puffin.eng.sun.com のポート 7777 への接続、およびそのポート上での接続の受け入れを行うことを許可します。

同様に、

p1 = new SocketPermission("puffin.eng.sun.com:7777", "connect,accept");
p2 = new SocketPermission("localhost:1024-", "accept,connect,listen");
 
あるコードに対して上のアクセス権が認められた場合、そのコードは、ローカルホスト上の 1024 〜 65535 のポートに対して、接続の受け入れ、接続、待機を行うことを許可されます。

注:リモートホストへの接続要求を受け付けるためのアクセス権やリモートホストへ接続するためのアクセス権をコードに与えると、悪意のあるコードが、そのようなアクセス権がなければそのデータにアクセスできないホスト間で、機密データをより簡単に転送および共有できるようになるため危険です。

関連項目:
Permissions, SocketPermission

コンストラクタの概要
SocketPermission(String host, String action)
          指定されたアクションを持つ新しい SocketPermission オブジェクトを生成します。
 
メソッドの概要
 boolean equals(Object obj)
          2 つの SocketPermission オブジェクトが等しいかどうかを判定します。
 String getActions()
          アクションの正規の文字列表現を返します。
 int hashCode()
          このオブジェクトのハッシュコード値を返します。
 boolean implies(Permission p)
          指定されたアクセス権が、このソケットアクセス権オブジェクトに含まれているかどうかを判定します。
 PermissionCollection newPermissionCollection()
          SocketPermission オブジェクトを格納するための、新しい PermissionCollection オブジェクトを返します。
 
クラス java.security.Permission から継承されたメソッド
checkGuard, getName, toString
 
クラス java.lang.Object から継承されたメソッド
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

SocketPermission

public SocketPermission(String host,
                        String action)
指定されたアクションを持つ新しい SocketPermission オブジェクトを生成します。ホストは、DNS 名、数値による IP アドレスのいずれかで表されます。オプションで、ポートまたはポート範囲も指定できます (DNS 名または IP アドレスとの間はコロンで区切る)。  

ローカルマシンを指定するには、「localhost」を host として使用します。注 -空の host 文字列 (「」) は、「localhost」と等価です。  

actions パラメータには、指定されたホスト (および 1 つ以上のポート) に許可するアクションのコンマ区切りリストが含まれます。指定可能なアクションは、「connect」、「listen」、「accept」、「resolve」、またはそれらの任意の組み合わせです。「resolve」は、ほかの 3 つのいずれかが指定された場合には自動的に追加されます。  

SocketPermission のインスタンス生成の例を次に示します。

nr = new SocketPermission("www.catalog.com", "connect");
nr = new SocketPermission("www.sun.com:80", "connect");
nr = new SocketPermission("*.sun.com", "connect");
nr = new SocketPermission("*.edu", "resolve");
nr = new SocketPermission("204.160.241.0", "connect");
nr = new SocketPermission("localhost:1024-65535", "listen");
nr = new SocketPermission("204.160.241.0:1024-65535", "connect");
 

パラメータ:
host - コンピュータのホスト名または IP アドレス。必要に応じて、コロンのあとに、ポート番号またはポート番号の範囲を指定できる
action - アクションの文字列
メソッドの詳細

implies

public boolean implies(Permission p)
指定されたアクセス権が、このソケットアクセス権オブジェクトに含まれているかどうかを判定します。  

具体的には、このメソッドは最初に、次の条件が true であることを確認します。これらの条件が 1 つでも true でない場合、このメソッドは false を返します。

次に、implies は、次の条件を順番に確認し、条件に該当する場合は、それぞれについて true を返します。

以上が 1 つも true でない場合、implies は false を返します。

定義:
クラス Permission 内の implies
パラメータ:
p - チェック対象のアクセス権
戻り値:
指定されたアクセス権がこのオブジェクトに含まれる場合は true、 そうでない場合は false

equals

public boolean equals(Object obj)
2 つの SocketPermission オブジェクトが等しいかどうかを判定します。  

定義:
クラス Permission 内の equals
パラメータ:
obj - このオブジェクトと等しいかどうかが判定されるオブジェクト
戻り値:
obj が SocketPermission であり、この SocketPermission オブジェクトと同じホスト名、ポート範囲、およびアクションを持つ場合は true。ただし、obj にアクション「resolve」しか含まれていない場合は、比較時にポート範囲が無視される
関連項目:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
このオブジェクトのハッシュコード値を返します。

定義:
クラス Permission 内の hashCode
戻り値:
このオブジェクトのハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

getActions

public String getActions()
アクションの正規の文字列表現を返します。現在のアクションを、常に次の順序で返します。connect、listen、accept、resolve。

定義:
クラス Permission 内の getActions
戻り値:
アクションの正規の文字列表現

newPermissionCollection

public PermissionCollection newPermissionCollection()
SocketPermission オブジェクトを格納するための、新しい PermissionCollection オブジェクトを返します。  

SocketPermission オブジェクトの格納形式は、同オブジェクトを任意の順番でコレクションに挿入でき、さらに、PermissionCollection の implies メソッドが効率的かつ矛盾のないように実装できる形式でなければなりません。

オーバーライド:
クラス Permission 内の newPermissionCollection
戻り値:
SocketPermissions を格納するのに適切な新しい PermissionCollection オブジェクト

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。