JavaTM 2
Platform
Std. Ed. v1.4.0

java.net
クラス SocketPermission

java.lang.Object
  |
  +--java.security.Permission
        |
        +--java.net.SocketPermission
すべての実装インタフェース:
Guard, Serializable

public final class SocketPermission
extends Permission
implements Serializable

このクラスは、ソケットによるネットワークへのアクセスを表します。SocketPermission は、ホストの指定と、ホストに接続する方法を指定する一連のアクションから構成されます。ホストは、次のようにして指定します。

    host = (hostname | IPv4address | iPv6reference) [:portrange]
    portrange = portnumber | -portnumber | portnumber-[portnumber]
 
host には、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 リテラルアドレスの「非圧縮形式」も有効です。

port または portrange の指定は任意です。ポート番号 N について「N-」と指定した場合は、番号が N 以上のすべてのポートを表します。「-N」と指定した場合は、N 以下のすべてのポートを表します。

ホストへの接続方法には、次の種類があります。

 accept (受信)
 connect (接続)
 listen (待機)
 resolve (解決)
待機アクションは、ローカルホスト (localhost) で使用した場合にだけ意味があります。解決アクション (ホストと 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 アドレスのあとに、コロンで区切って指定してください。

ローカルマシンを指定するには、host に「localhost」と指定してください。また、host を空の文字列のままにしておくと、localhost を指定したのと同じになります。

actions パラメータには、指定されたホストおよびポートに付与されるアクションのリストを、コンマで区切った形式で指定します。指定できるアクションは、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

hashCode

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

定義:
クラス Permission 内の hashCode
戻り値:
このオブジェクトのハッシュコード値

getActions

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

定義:
クラス Permission 内の getActions
戻り値:
アクションの標準的な文字列表現

newPermissionCollection

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

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

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

JavaTM 2
Platform
Std. Ed. v1.4.0

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

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.