JavaTM Platform
Standard Ed. 6

java.security
클래스 Policy

java.lang.Object 
  상위를 확장 java.security.Policy


public abstract class Policy
extends Object

Policy 객체는, Java Runtime Environment 내에서 실행되는 코드에 시큐리티 의존의 조작을 실행하는 액세스권이 있을지 어떨지의 판정을 실시합니다.

실행시에 인스톨 되는 Policy 객체는, 항상 1 개(살) 뿐입니다. Policy 객체는,setPolicy 메소드를 호출하는 것으로 인스톨 할 수 있습니다. 인스톨 된 Policy 객체를 가져오려면 ,getPolicy 메소드를 호출합니다.

실행시에 Policy 객체가 인스톨 되지 않았던 경우는,getPolicy 를 호출하면(자), 디폴트의 Policy 구현의 인스턴스 (이 abstract 클래스의 디폴트의 서브 클래스 구현)가 인스톨 됩니다. 디폴트의 Policy 구현을 변경하려면 , (Java 시큐리티 프로퍼티 파일의) policy.provider 시큐리티 프로퍼티의 값을, 희망하는 Policy 서브 클래스 구현의 완전 지정명으로 변경합니다. Java 시큐리티 프로퍼티 파일은, <JAVA_HOME>/lib/security/java.security 라는 이름의 파일에 포함되고 있습니다. <JAVA_HOME> 는 java.home 시스템 프로퍼티의 값을 참조하고 있어, JRE 의 인스톨 디렉토리를 나타냅니다.

어플리케이션 코드는, Policy 를 직접 서브 클래스화해, 커스텀 구현을 제공할 수 있습니다. 또, 표준형의 getInstance 팩토리 메소드를 1 개 호출하는 것으로, Policy 객체의 인스턴스를 구축할 수 있습니다. 디폴트의 정책형은 JavaPolicy 입니다. 표준의 Policy 형의 리스트는,「Java 암호화 아키텍쳐(architecture) API 스펙 & 레퍼런스」의 부록 A 를 참조해 주세요.

Policy 인스턴스의 인스톨 (디폴트의 인스톨인가,setPolicy 의 호출에 의한 인스톨)이 완료한 뒤, Java 런타임은, (ProtectionDomain 에 캡슐화된) 코드를 실행하는 것에 의해 시큐리티 매니저로 보호된 조작을 실행할 수 있을지 어떨지를 판단할 필요가 있을 때,implies 를 호출합니다. Policy 객체가 정책 데이타를 뽑기 시작하는 방법은, Policy 구현 그 자체에 따라서 다릅니다. 예를 들어, 정책 데이터를, 플랫인 ASCII 파일, Policy 클래스의 직렬화 된 바이노리필드, 또는 데이타베이스에 보존할 수 있습니다.

refresh 메소드에 의해, 정책 객체의 데이터가 리프레쉬 또는 재독 보고 붐비어 됩니다. 이 조작은 구현에 의존합니다. 예를 들어, 정책 객체가 그 데이터를 설정 파일에 포함하는 경우,refresh 를 호출하면(자), 정책 설정 파일이 재차 읽힙니다. 리프레쉬 조작이 지원되어 있지 않은 경우, 이 메소드는 아무것도 실시하지 않습니다. 리프레쉬 된 정책는, 특정의 ProtectionDomain 의 클래스에 대해서 유효하지 않은 경우가 있습니다. 이것은, Policy 프로바이더의 implies 메소드의 구현과 PermissionCollection 의 캐쉬 방법으로 좌우됩니다.

관련 항목:
Provider , ProtectionDomain , Permission

상자의 클래스의 개요
static interface Policy.Parameters
          이 인터페이스는, Policy 파라미터의 마커 인터페이스입니다.
 
필드의 개요
static PermissionCollection UNSUPPORTED_EMPTY_COLLECTION
          읽기 전용의 빈 상태(empty)의 PermissionCollection 인스턴스입니다.
 
생성자 의 개요
Policy ()
           
 
메소드의 개요
static Policy getInstance (String  type, Policy.Parameters  params)
          지정된 형태의 Policy 객체를 돌려줍니다.
static Policy getInstance (String  type, Policy.Parameters  params, Provider  provider)
          지정된 형태의 Policy 객체를 돌려줍니다.
static Policy getInstance (String  type, Policy.Parameters  params, String  provider)
          지정된 형태의 Policy 객체를 돌려줍니다.
 Policy.Parameters getParameters ()
          Policy 파라미터를 돌려줍니다.
 PermissionCollection getPermissions (CodeSource  codesource)
          지정된 CodeSource 에 부여된 액세스권세트를 포함한 PermissionCollection 객체를 돌려줍니다.
 PermissionCollection getPermissions (ProtectionDomain  domain)
          지정된 ProtectionDomain 에 부여된 액세스권세트를 포함한 PermissionCollection 객체를 돌려줍니다.
static Policy getPolicy ()
          인스톨 끝난 Policy 객체를 돌려줍니다.
 Provider getProvider ()
          이 Policy 의 Provider 를 돌려줍니다.
 String getType ()
          이 Policy 의 형태를 돌려줍니다.
 boolean implies (ProtectionDomain  domain, Permission  permission)
          ProtectionDomain 에 허가된 액세스권에 대해 글로벌 정책를 평가해, 그 액세스권이 허가되고 있는지 어떤지를 판정합니다.
 void refresh ()
          정책 설정을 리프레쉬 또는 재독 보고 붐비어 합니다.
static void setPolicy (Policy  p)
          시스템 전체의 Policy 객체를 설정합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

필드의 상세

UNSUPPORTED_EMPTY_COLLECTION

public static final PermissionCollection  UNSUPPORTED_EMPTY_COLLECTION
읽기 전용의 빈 상태(empty)의 PermissionCollection 인스턴스입니다.

도입된 버젼:
1.6
생성자 의 상세

Policy

public Policy()
메소드의 상세

getPolicy

public static Policy  getPolicy()
인스톨 끝난 Policy 객체를 돌려줍니다. 이 값은 setPolicy 에의 호출에 의해 변경이 가능해서, 캐쉬하지 말아 주세요. 이 메소드는 최초로 SecurityPermission("getPolicy") 액세스권을 사용해 SecurityManager.checkPermission 를 호출해, Policy 객체를 취득해도 괜찮은지 어떤지를 확인합니다.

반환값:
인스톨 끝난 Policy
예외:
SecurityException - 시큐리티 매니저가 존재해, 시큐리티 매니저의 checkPermission 메소드가 Policy 객체의 취득을 허가하지 않는 경우
관련 항목:
SecurityManager.checkPermission(Permission) , setPolicy(java.security.Policy)

setPolicy

public static void setPolicy(Policy  p)
시스템 전체의 Policy 객체를 설정합니다. 이 메소드는 최초로 SecurityPermission("setPolicy") 액세스권을 사용해 SecurityManager.checkPermission 를 호출해, Policy 를 설정해도 괜찮은지 어떤지를 확인합니다.

파라미터:
p - 신규 시스템 Policy 객체
예외:
SecurityException - 시큐리티 매니저가 존재해, 시큐리티 매니저의 checkPermission 메소드가 Policy 의 설정을 허가하지 않는 경우
관련 항목:
SecurityManager.checkPermission(Permission) , getPolicy()

getInstance

public static Policy  getInstance(String  type,
                                 Policy.Parameters  params)
                          throws NoSuchAlgorithmException 
지정된 형태의 Policy 객체를 돌려줍니다.

이 메소드는, 최우선의 Provider 로부터 순서에, 등록을 마친 시큐리티 프로바이더의 리스트를 횡단(traverse) 합니다. 지정된 형태를 지원하는 최초의 Provider 의 PolicySpi 구현을 캡슐화하는 새로운 Policy 객체가 돌려주어집니다.

등록이 끝난 프로바이더의 리스트는,Security.getProviders() 메소드 경유로 취득할 수 있습니다.

파라미터:
type - 지정된 Policy 형. 표준의 Policy 형의 리스트는,「Java 암호화 아키텍쳐(architecture) API 스펙 & 레퍼런스」의 부록 A 를 참조
params - Policy 의 파라미터. null 의 경우도 있다
반환값:
새로운 Policy 객체
예외:
SecurityException - 호출 측에, 지정된 형태의 Policy 인스턴스를 취득하는 액세스권이 없는 경우
NullPointerException - 지정된 형태가 null 의 경우
IllegalArgumentException - 지정된 파라미터가, 선택된 Provider 의 PolicySpi 구현에 의해 인식되지 않는 경우
NoSuchAlgorithmException - 지정된 형태의 PolicySpi 구현을 지원하는 Provider 가 존재하지 않는 경우
도입된 버젼:
1.6
관련 항목:
Provider

getInstance

public static Policy  getInstance(String  type,
                                 Policy.Parameters  params,
                                 String  provider)
                          throws NoSuchProviderException ,
                                 NoSuchAlgorithmException 
지정된 형태의 Policy 객체를 돌려줍니다.

지정된 프로바이더의 PolicySpi 구현을 캡슐화하는 새로운 Policy 객체가 돌려주어집니다. 프로바이더 리스트에 등록된 프로바이더를 지정할 필요가 있습니다.

등록이 끝난 프로바이더의 리스트는,Security.getProviders() 메소드 경유로 취득할 수 있습니다.

파라미터:
type - 지정된 Policy 형. 표준의 Policy 형의 리스트는,「Java 암호화 아키텍쳐(architecture) API 스펙 & 레퍼런스」의 부록 A 를 참조
params - Policy 의 파라미터. null 의 경우도 있는
provider - 프로바이더
반환값:
새로운 Policy 객체
예외:
SecurityException - 호출 측에, 지정된 형태의 Policy 인스턴스를 취득하는 액세스권이 없는 경우
NullPointerException - 지정된 형태가 null 의 경우
IllegalArgumentException - 지정된 프로바이더가 null 나 빈 상태(empty)의 경우, 또는 지정된 파라미터가 지정된 프로바이더의 PolicySpi 구현에 의해 인식되지 않는 경우
NoSuchProviderException - 지정된 프로바이더가 시큐리티 프로바이더 리스트에 등록되지 않은 경우
NoSuchAlgorithmException - 지정된 프로바이더가, 지정된 형태의 PolicySpi 구현을 지원하지 않는 경우
도입된 버젼:
1.6
관련 항목:
Provider

getInstance

public static Policy  getInstance(String  type,
                                 Policy.Parameters  params,
                                 Provider  provider)
                          throws NoSuchAlgorithmException 
지정된 형태의 Policy 객체를 돌려줍니다.

지정된 Provider 객체의 PolicySpi 구현을 캡슐화하는 새로운 Policy 객체가 돌려주어집니다. 지정된 Provider 객체는, 프로바이더 리스트에 등록할 필요는 없습니다.

파라미터:
type - 지정된 Policy 형. 표준의 Policy 형의 리스트는,「Java 암호화 아키텍쳐(architecture) API 스펙 & 레퍼런스」의 부록 A 를 참조
params - Policy 의 파라미터. null 의 경우도 있는
provider - Provider
반환값:
새로운 Policy 객체
예외:
SecurityException - 호출 측에, 지정된 형태의 Policy 인스턴스를 취득하는 액세스권이 없는 경우
NullPointerException - 지정된 형태가 null 의 경우
IllegalArgumentException - 지정된 프로바이더가 null 의 경우, 또는 지정된 파라미터가 지정된 프로바이더의 PolicySpi 구현에 의해 인식되지 않는 경우
NoSuchAlgorithmException - 지정된 프로바이더가, 지정된 형태의 PolicySpi 구현을 지원하지 않는 경우
도입된 버젼:
1.6
관련 항목:
Provider

getProvider

public Provider  getProvider()
이 Policy 의 Provider 를 돌려줍니다.

이 Policy 인스턴스는,Policy.getInstance 의 호출에 의해 취득되었을 경우에 한해 Provider 를 가집니다. 그 이외의 경우, 이 메소드는 null 를 돌려줍니다.

반환값:
이 Policy 의 Provider, 또는 null
도입된 버젼:
1.6

getType

public String  getType()
이 Policy 의 형태를 돌려줍니다.

이 Policy 인스턴스는,Policy.getInstance 의 호출에 의해 취득되었을 경우에 한해 형태를 가집니다. 그 이외의 경우, 이 메소드는 null 를 돌려줍니다.

반환값:
이 Policy 의 형태, 또는 null
도입된 버젼:
1.6

getParameters

public Policy.Parameters  getParameters()
Policy 파라미터를 돌려줍니다.

이 Policy 인스턴스는,Policy.getInstance 의 호출에 의해 취득되었을 경우에 한해 파라미터를 가집니다. 그 이외의 경우, 이 메소드는 null 를 돌려줍니다.

반환값:
Policy 파라미터, 또는 null
도입된 버젼:
1.6

getPermissions

public PermissionCollection  getPermissions(CodeSource  codesource)
지정된 CodeSource 에 부여된 액세스권세트를 포함한 PermissionCollection 객체를 돌려줍니다.

이 조작은 모든 정책 구현에서는 지원되지 않을 가능성이 있기 (위해)때문에, 어플리케이션으로 이 메소드를 호출하는 것은 추천하지 않습니다. 어플리케이션은, 정책 체크를 실시하기 위해서(때문에), 오로지 implies 메소드를 사용해야 합니다. 어플리케이션으로 아무래도 getPermissions 메소드를 호출할 필요가 있는 경우는,getPermissions(ProtectionDomain) 를 호출하도록 해 주세요.

이 메소드의 디폴트 구현은, Policy.UNSUPPORTED_EMPTY_COLLECTION 를 돌려줍니다. 정책 구현이 CodeSource 에 부여된 액세스권세트를 돌려줄 수가 있는 경우, 이 메소드는 오버라이드(override) 할 수 있습니다.

파라미터:
codesource - 반환되는 PermissionCollection 가 부여되고 있는 CodeSource
반환값:
지정된 CodeSource 에 부여된 액세스권세트. 이 조작이 지원되고 있는 경우, 반환되는 액세스권세트는 새로운 가변 인스턴스이며, 한편 복수종의 Permission 형을 지원하고 있을 필요가 있다. 이 조작이 지원되어 있지 않은 경우, Policy.UNSUPPORTED_EMPTY_COLLECTION 가 반환된다

getPermissions

public PermissionCollection  getPermissions(ProtectionDomain  domain)
지정된 ProtectionDomain 에 부여된 액세스권세트를 포함한 PermissionCollection 객체를 돌려줍니다.

이 조작은 모든 정책 구현에서는 지원되지 않을 가능성이 있기 (위해)때문에, 어플리케이션으로 이 메소드를 호출하는 것은 추천하지 않습니다. 어플리케이션은, 정책 체크를 실시하기 위해서(때문에) implies 메소드를 사용해야 합니다.

이 메소드의 디폴트 구현은, 최초로,getPermissions(CodeSource) 로부터 반환되는 액세스권 (지정된 ProtectionDomain 로부터 취득되는 CodeSource)과 지정된 ProtectionDomain 내에 있는 액세스권을 가져옵니다. 다음에, 이것들 모든 액세스권이 결합되어 새로운 단일의 PermissionCollection 객체로서 돌려주어집니다. getPermissions(CodeSource) 가 Policy.UNSUPPORTED_EMPTY_COLLECTION 를 돌려주었을 경우, 이 메소드는, 지정된 ProtectionDomain 내의 액세스권을, 새로운 단일의 PermissionCollection 객체로서 돌려줍니다.

정책 구현이 ProtectionDomain 에 부여된 액세스권세트를 돌려줄 수가 있는 경우, 이 메소드는 오버라이드(override) 할 수 있습니다.

파라미터:
domain - 반환되는 PermissionCollection 가 부여되고 있는 ProtectionDomain
반환값:
지정된 ProtectionDomain 에 부여된 액세스권세트. 이 조작이 지원되고 있는 경우, 반환되는 액세스권세트는 새로운 가변 인스턴스이며, 한편 복수종의 Permission 형을 지원하고 있을 필요가 있다. 이 조작이 지원되어 있지 않은 경우, Policy.UNSUPPORTED_EMPTY_COLLECTION 가 반환되는
도입된 버젼:
1.4

implies

public boolean implies(ProtectionDomain  domain,
                       Permission  permission)
ProtectionDomain 에 허가된 액세스권에 대해 글로벌 정책를 평가해, 그 액세스권이 허가되고 있는지 어떤지를 판정합니다.

파라미터:
domain - 판정 대상의 ProtectionDomain
permission - 포함되어 있는지 어떤지를 판정하는 Permission 객체
반환값:
permission 가 이 ProtectionDomain 에 허가된 액세스권의 적절한 부분집합의 경우는 true.
도입된 버젼:
1.4
관련 항목:
ProtectionDomain

refresh

public void refresh()
정책 설정을 리프레쉬 또는 재독 보고 붐비어 합니다. 이 메소드의 동작은 구현에 의존합니다. 예를 들어, 파일의 형식의 정책에 대해서 refresh 를 호출하면(자), 파일이 재독 보고 붐비어 됩니다.

이 메소드의 디폴트 구현에서는 어떤 처리도 행해지지 않습니다. 정책 구현에 의해 리프레쉬 조작이 지원되고 있는 경우, 이 메소드는 오버라이드(override) 됩니다.


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 도 참조해 주세요.