- 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とそれより下のすべてのポート番号を表します。 特殊なポート値
0
は、一時的なポートの範囲全体を指します。 これは固定のポート範囲です。システムではこの範囲から動的ポートを割り当てることができます。 実際の範囲はシステムによって異なります。ホストへの接続方法としては、次のどれかを指定できます。
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への接続、およびそのポート上での接続の受け入れを行うことを許可します。同様に、
p2 = new SocketPermission("localhost:1024-", "accept,connect,listen");
あるコードに対して上のアクセス権が認められた場合、そのコードは、ローカル・ホスト上の1024から65535のポートに対して、接続の受け入れ、接続、待機を行うことを許可されます。注: リモート・ホストへの接続要求を受け付けるためのアクセス権やリモート・ホストへ接続するためのアクセス権をコードに与えると、悪意のあるコードが、そのようなアクセス権がなければそのデータにアクセスできないホスト間で、機密データをより簡単に転送および共有できるようになるため危険です。
- 導入されたバージョン:
- 1.2
- 関連項目:
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
-
-
-
-
コンストラクタの詳細
-
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を返します。
- pがSocketPermissionのインスタンスである。
- pのアクションは、このオブジェクトのアクションの適切なサブセットである
- pのポート範囲が、このポート範囲に収まる。 注: pにアクション「resolve」しか含まれていない場合、ポート範囲は無視される。
implies
は、次の条件を順番に確認し、条件に該当する場合は、それぞれについてtrueを返します。- このオブジェクトが単一のIPアドレスで初期化されている場合に、pのIPアドレスの1つが、このオブジェクトのIPアドレスと等しい。
- このオブジェクトが、*.sun.comのようにワイルドカードを含むドメイン名である場合に、pの正規の名前(*文字を除いた名前)が、このオブジェクトの正式なホスト名で終わる。 たとえば、*.sun.comは*.eng.sun.comを含む。
- このオブジェクトが複数のIPアドレスでは初期化されている場合に、このオブジェクトのIPアドレスの1つが、pのIPアドレスの1つと等しい。
- この(オブジェクトの)正式な名前が、pの正規の名前と等しい。
implies
はfalseを返します。- 定義:
implies
、クラス:Permission
- パラメータ:
p
- チェック対象のアクセス権。- 戻り値:
- 指定されたアクセス権がこのオブジェクトに含まれる場合はtrue、そうでない場合はfalse。
-
equals
public boolean equals(Object obj)
2つのSocketPermissionオブジェクトが等しいかどうかを判定します。- 定義:
equals
、クラス:Permission
- パラメータ:
obj
- このオブジェクトと等しいかどうかが判定されるオブジェクト。- 戻り値:
- objがSocketPermissionであり、このSocketPermissionオブジェクトと同じホスト名、ポート範囲、およびアクションを持つ場合はtrue。 ただし、objにアクション「resolve」しか含まれていない場合は、比較時にポート範囲が無視されます。
- 関連項目:
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
このオブジェクトのハッシュ・コード値を返します。- 定義:
hashCode
、クラス:Permission
- 戻り値:
- このオブジェクトのハッシュ・コード値。
- 関連項目:
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
getActions
public String getActions()
アクションの正規の文字列表現を返します。 現在のアクションを、常に次の順序で返します。connect、listen、accept、resolve。- 定義:
getActions
、クラス:Permission
- 戻り値:
- アクションの正規の文字列表現。
-
newPermissionCollection
public PermissionCollection newPermissionCollection()
SocketPermissionオブジェクトを格納するための、新しいPermissionCollectionオブジェクトを返します。SocketPermissionオブジェクトの格納形式は、同オブジェクトを任意の順番でコレクションに挿入でき、さらに、PermissionCollectionの
implies
メソッドが効率的かつ矛盾のないように実装できる形式である必要があります。- オーバーライド:
newPermissionCollection
、クラス:Permission
- 戻り値:
- SocketPermissionsを格納するのに適切な新しいPermissionCollectionオブジェクト。
-
-