モジュール java.base
パッケージ java.security

クラスSecurity


  • public final class Security
    extends Object

    このクラスは、すべてのセキュリティ・プロパティ、および共通のセキュリティ・メソッドを集中管理します。 その主な使用目的の1つにプロバイダの管理があります。

    セキュリティ・プロパティのデフォルト値は、実装固有のロケーション(通常はJavaインストール・ディレクトリのプロパティ・ファイルconf/security/java.security)から読み取られます。

    導入されたバージョン:
    1.1
    • メソッドのサマリー

      修飾子と型 メソッド 説明
      static int addProvider​(Provider provider)
      プロバイダを可能な次の位置に追加します。
      static String getAlgorithmProperty​(String algName, String propName)
      非推奨。
      このメソッドは、アルゴリズム固有のパラメータの構文解析方法を決定するため、SUN暗号化サービス・プロバイダのマスター・ファイル内にある独自のプロパティの値を返すために使用されます。
      static Set<String> getAlgorithms​(String serviceName)
      指定したJava暗号化サービスで使用可能なアルゴリズムや型の名前(Signature、MessageDigest、Cipher、Mac、KeyStoreなど)を含むStringのSetを返します。
      static String getProperty​(String key)
      セキュリティ・プロパティ値を取得します。
      static Provider getProvider​(String name)
      指定された名前でインストールされているプロバイダを返します。
      static Provider[] getProviders()
      インストールされているすべてのプロバイダの配列を返します。
      static Provider[] getProviders​(String filter)
      指定された選択基準を満たすすべてのインストールされたプロバイダを含む配列を返します。このようなプロバイダが存在しない場合は、null。
      static Provider[] getProviders​(Map<String,​String> filter)
      指定された選択基準を満たすインストールされたすべてのプロバイダを含む配列を返します。プロバイダがインストールされていない場合はnullを返します。
      static int insertProviderAt​(Provider provider, int position)
      指定された位置に新規プロバイダを追加します。
      static void removeProvider​(String name)
      指定された名前のプロバイダを削除します。
      static void setProperty​(String key, String datum)
      セキュリティ・プロパティの値を設定します。
    • メソッドの詳細

      • getAlgorithmProperty

        @Deprecated
        public static String getAlgorithmProperty​(String algName,
                                                  String propName)
        非推奨。
        このメソッドは、アルゴリズム固有のパラメータの構文解析方法を決定するため、SUN暗号化サービス・プロバイダのマスター・ファイル内にある独自のプロパティの値を返すために使用されます。 代わりに、新しいプロバイダベースのアルゴリズムに依存しないAlgorithmParametersおよびKeyFactoryエンジン・クラス(J2SEバージョン1.2プラットフォームより導入)を使用してください。
        アルゴリズムに対する指定されたプロパティを取得します。 アルゴリズムの名前は標準名とする必要があります。 標準的なアルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」を参照してください。 特殊なアルゴリズム・パーサーが(鍵パーサーと同じように)認識されているアルゴリズムにクラスをマップするために使用することもあります。
        パラメータ:
        algName - アルゴリズム名。
        propName - 取得するプロパティの名前。
        戻り値:
        指定されたプロパティの値。
      • insertProviderAt

        public static int insertProviderAt​(Provider provider,
                                           int position)
        指定された位置に新規プロバイダを追加します。 位置は優先順になっていて、要求されたアルゴリズムに対してプロバイダがその順序で検索されます。 位置は1から始まり、1が最優先で次に2、3 ...と続きます。

        あるプロバイダが要求された場所にインストールされた場合は、それまでその場所にあったプロバイダ、およびpositionよりあとの位置のすべてのプロバイダの順位は、1つあとになり、インストールされたプロバイダ一覧の最後尾に向かって1つ移動します。

        プロバイダは、インストール済みの場合には追加できません。

        セキュリティ・マネージャが存在する場合は、SecurityManager.checkSecurityAccess(java.lang.String)メソッドがアクセス権ターゲット名"insertProvider"を指定して呼び出され、新しいプロバイダを追加してもよいかどうかが確認されます。 このアクセス権チェックが拒否された場合は、アクセス権ターゲット名"insertProvider."+provider.getName()を指定してcheckSecurityAccessが再度呼び出されます。 両方のチェックが拒否された場合は、SecurityExceptionがスローされます。

        パラメータ:
        provider - 追加されるプロバイダ。
        position - 呼出し側がこのプロバイダに要望する優先順位。
        戻り値:
        プロバイダが追加された実際の優先順位。インストール済みで追加できない場合は -1。
        例外:
        NullPointerException - providerがnullの場合
        SecurityException - セキュリティ・マネージャが存在し、そのSecurityManager.checkSecurityAccess(java.lang.String)メソッドが新しいプロバイダを追加するアクセスを許可しない場合
        関連項目:
        getProvider(java.lang.String), removeProvider(java.lang.String), SecurityPermission
      • addProvider

        public static int addProvider​(Provider provider)
        プロバイダを可能な次の位置に追加します。

        セキュリティ・マネージャが存在する場合は、SecurityManager.checkSecurityAccess(java.lang.String)メソッドがアクセス権ターゲット名"insertProvider"を指定して呼び出され、新しいプロバイダを追加してもよいかどうかが確認されます。 このアクセス権チェックが拒否された場合は、アクセス権ターゲット名"insertProvider."+provider.getName()を指定してcheckSecurityAccessが再度呼び出されます。 両方のチェックが拒否された場合は、SecurityExceptionがスローされます。

        パラメータ:
        provider - 追加されるプロバイダ。
        戻り値:
        プロバイダが追加された実際の優先順位。インストール済みで追加できない場合は -1。
        例外:
        NullPointerException - providerがnullの場合
        SecurityException - セキュリティ・マネージャが存在し、そのSecurityManager.checkSecurityAccess(java.lang.String)メソッドが新しいプロバイダを追加するアクセスを許可しない場合
        関連項目:
        getProvider(java.lang.String), removeProvider(java.lang.String), SecurityPermission
      • removeProvider

        public static void removeProvider​(String name)
        指定された名前のプロバイダを削除します。

        指定されたプロバイダが削除されると、そのプロバイダよりもあとの位置にあるすべてのプロバイダの位置が1つ前になり、インストールされたプロバイダ一覧の先頭に向かって1つ移動します。

        このメソッドは、プロバイダがインストールされていない場合、あるいはnameがnullの場合、処理を何も行わずに復帰します。

        セキュリティ・マネージャが存在する場合、まずセキュリティ・マネージャのcheckSecurityAccessメソッドが文字列"removeProvider."+nameを指定して呼び出され、プロバイダを削除してもよいかどうかが確認されます。 checkSecurityAccessのデフォルトの実装が(つまり、このメソッドはオーバーライドされません。)を使用する場合は、checkPermissionメソッドがSecurityPermission("removeProvider."+name)パーミッションで呼び出されます。

        パラメータ:
        name - 削除されるプロバイダの名前。
        例外:
        SecurityException - セキュリティ・マネージャが存在し、そのSecurityManager.checkSecurityAccess(java.lang.String)メソッドがこのプロバイダを削除するアクセスを許可しない場合
        関連項目:
        getProvider(java.lang.String), addProvider(java.security.Provider)
      • getProviders

        public static Provider[] getProviders()
        インストールされているすべてのプロバイダの配列を返します。 配列内でのプロバイダは優先順位の順になっています。
        戻り値:
        インストールされているすべてのプロバイダの配列。
      • getProvider

        public static Provider getProvider​(String name)
        指定された名前でインストールされているプロバイダを返します。 指定された名前のプロバイダがインストールされていない場合、あるいはnameがnullの場合はnullを返します。
        パラメータ:
        name - 取得するプロパティの名前。
        戻り値:
        指定された名前のプロバイダ。
        関連項目:
        removeProvider(java.lang.String), addProvider(java.security.Provider)
      • getProviders

        public static Provider[] getProviders​(String filter)
        指定された選択基準を満たすすべてのインストールされたプロバイダを含む配列を返します。このようなプロバイダが存在しない場合は、null。 返されたプロバイダの順は優先順となります。

        暗号化サービスは、常に特定のアルゴリズムまたはタイプに関連付けられています。 たとえば、デジタル署名サービスは常に特定のアルゴリズム(DSAなど)に、CertificateFactoryサービスは常に特定の証明書タイプ(X.509など)にそれぞれ関連付けられています。

        次の2種類のフォーマットのどちらかで選択基準を指定する必要があります。

        • <crypto_service>.<algorithm_or_type>

          暗号化サービス名には、ドットを含まないようにします。

          プロバイダが、指定暗号化サービス向けに指定されたアルゴリズムまたは型を実装していると、プロバイダは指定された選択基準を満たしています。

          「CertificateFactory.X.509」の場合は、X.509証明書のCertificateFactoryの実装を提供しているプロバイダであれば、その選択基準を満たしています。

        • <crypto_service>.<algorithm_or_type> <attribute_name>:<attribute_value>

          暗号化サービス名には、ドットを含まないようにします。 <algorithm_or_type><attribute_name>の間にスペース文字が1つ以上必要です。

          プロバイダが、指定暗号化サービス向けに指定されたアルゴリズムまたは型を実装していて、その実装が指定された属性名と値のペアで表記された制約を満たしている場合、プロバイダはこの選択基準を満たしています。

          たとえば、1024以上のキー・サイズを持つSHA1withDSA署名アルゴリズムを実装しているどのプロバイダも、「Signature.SHA1withDSA KeySize:1024」を満たしています。

        標準暗号化サービス名、標準アルゴリズム名、標準属性名については、「Javaセキュリティ標準アルゴリズム名指定」を参照してください。

        パラメータ:
        filter - プロバイダの選択基準。 フィルタは大文字と小文字を区別する。
        戻り値:
        選択基準を満たすインストール済みのすべてのプロバイダ。このようなプロバイダがない場合は、null。
        例外:
        InvalidParameterException - フィルタが必要な形式以外の場合
        NullPointerException - filterがnullの場合
        導入されたバージョン:
        1.3
        関連項目:
        getProviders(java.util.Map)
      • getProviders

        public static Provider[] getProviders​(Map<String,​String> filter)
        指定された選択基準を満たすインストールされたすべてのプロバイダを含む配列を返します。プロバイダがインストールされていない場合はnullを返します。 返されたプロバイダの順は優先順となります。

        選択基準はマップで表現されます。 各マップ・エントリは選択基準のことです。 すべての選択基準をプロバイダが満たしている場合、プロバイダは選択されます。 このマップでは、どのエントリの鍵も次の2種類の形式のどちらかになります。

        • <crypto_service>.<algorithm_or_type>

          暗号化サービス名には、ドットを含まないようにします。

          鍵に関連した値は空の文字列である必要があります。

          プロバイダが、指定暗号化サービス向けに指定されたアルゴリズムまたは型を実装していると、プロバイダはこの選択基準を満たしています。

        • <crypto_service>. <algorithm_or_type> <attribute_name>

          暗号化サービス名には、ドットを含まないようにします。 <algorithm_or_type><attribute_name>の間にスペース文字が1つ以上必要です。

          鍵に関連した値は、空でない文字列になります。 プロバイダが、指定暗号化サービス向けに指定されたアルゴリズムまたは型を実装していて、その実装が指定された属性名と値のペアで表記された制約を満たしている場合、プロバイダはこの選択基準を満たしています。

        標準暗号化サービス名、標準アルゴリズム名、標準属性名については、「Javaセキュリティ標準アルゴリズム名指定」を参照してください。

        パラメータ:
        filter - プロバイダの選択基準。 フィルタは大文字と小文字を区別する。
        戻り値:
        選択基準を満たすインストール済みのすべてのプロバイダ。このようなプロバイダがない場合は、null。
        例外:
        InvalidParameterException - フィルタが必要な形式以外の場合
        NullPointerException - filterがnullの場合
        導入されたバージョン:
        1.3
        関連項目:
        getProviders(java.lang.String)
      • getProperty

        public static String getProperty​(String key)
        セキュリティ・プロパティ値を取得します。

        セキュリティ・マネージャが存在する場合、セキュリティ・マネージャのcheckPermissionメソッドがjava.security.SecurityPermission("getProperty."+key)アクセス権を引数として指定して呼び出され、指定されたセキュリティ・プロパティ値を取得してもよいかどうかを確認します。

        パラメータ:
        key - 取得するプロパティのキー。
        戻り値:
        キーに対応するセキュリティ・プロパティの値。
        例外:
        SecurityException - セキュリティ・マネージャが存在し、そのSecurityManager.checkPermission(java.security.Permission)メソッドが指定されたセキュリティ・プロパティ値を取得するアクセスを許可しない場合
        NullPointerException - キーがnullの場合
        関連項目:
        setProperty(java.lang.String, java.lang.String), SecurityPermission
      • setProperty

        public static void setProperty​(String key,
                                       String datum)
        セキュリティ・プロパティの値を設定します。

        セキュリティ・マネージャが存在する場合、セキュリティ・マネージャのcheckPermissionメソッドがjava.security.SecurityPermission("setProperty."+key)アクセス権を引数として指定して呼び出され、指定されたセキュリティ・プロパティ値を設定してもよいかどうかを確認します。

        パラメータ:
        key - 設定するプロパティの名前。
        datum - 設定するプロパティの値。
        例外:
        SecurityException - セキュリティ・マネージャが存在し、そのSecurityManager.checkPermission(java.security.Permission)メソッドが指定されたセキュリティ・プロパティ値を設定するアクセスを許可しない場合
        NullPointerException - keyまたはdatumがnullの場合
        関連項目:
        getProperty(java.lang.String), SecurityPermission
      • getAlgorithms

        public static Set<String> getAlgorithms​(String serviceName)
        指定したJava暗号化サービスで使用可能なアルゴリズムや型の名前(Signature、MessageDigest、Cipher、Mac、KeyStoreなど)を含むStringのSetを返します。 指定したサービスでサポートされるプロバイダがない場合、あるいはserviceNameがnullである場合は、空のSetが返されます。 Java暗号化サービスの完全なリストについては、「Java暗号化アーキテクチャ(JCA)リファレンス・ガイド」を参照してください。 注: 返されるセットは不変です。
        パラメータ:
        serviceName - Java暗号化サービスの名前(Signature、MessageDigest、Cipher、Mac、KeyStoreなど)。 注: このパラメータは大文字と小文字を区別する。
        戻り値:
        指定されたJava暗号化サービスで使用可能なアルゴリズムや型の名前を含むStringのSet。指定されたサービスでサポートされるプロバイダがない場合は、空のセットが返される。
        導入されたバージョン:
        1.4