JavaTM Platform
Standard Ed. 6

javax.security.auth
클래스 Policy

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


추천 되고 있지 않습니다.  JDK Version 1.4 로, java.security.Policy 로 옮겨졌습니다. java.security.Policy 에는 다음의 메소드가 존재합니다.
        public PermissionCollection getPermissions
            (java.security.ProtectionDomain pd)
 
 
또, ProtectionDomain 에는 다음의 생성자 이 있습니다.
        public ProtectionDomain
            (CodeSource cs,
             PermissionCollection permissions,
             ClassLoader loader,
             Principal[] principals)
 
이것들 2 개의 API 는, 호출 측에, Principal 베이스의 Permission 엔트리용 Policy 의 문의를 실행하는 수단을 제공합니다.

@Deprecated 
public abstract class Policy
extends Object

Subject 베이스의 승인의 시스템 정책을 나타내는 abstract 클래스입니다. 이 클래스의 서브 클래스 구현에서는, Subject 베이스의 액세스 제어 Policy 를 지정하는 방법을 제공합니다.

Policy 객체는, 다음의 방법으로,Principal 로서 실행하고 있는 코드에 부여된 Permission 세트를 쿼리할 수가 있습니다.

        policy = Policy.getPolicy();
        PermissionCollection perms = policy.getPermissions(subject,
                                                        codeSource);
 
Policy 객체에서는 로컬 정책를 참조해, 적절한 Permissions 객체를 돌려줍니다. 이 Permissions 객체에는, 지정한 subject 에 관련지을 수 있었던 Principal 에 부여되어 한편 codeSource 로 지정된 코드에 부여된 Permission 가 있습니다.

Policy 에는, 다음에 나타내는 정보가 포함됩니다. 이 예에서는, 단지 디폴트의 Policy 구현의 구문을 나타내고 있습니다. 이 클래스의 서브 클래스 구현에서는 다른 구문을 구현할 수도 있어 파일, 데이타베이스, 서버라고 하는 임의의 소스로부터 Policy 를 취득할 수도 있습니다.

Policy 내의 각 엔트리는,grant 엔트리로 나타내집니다. 각 grant 엔트리에서는, 코드 베이스, 코드의 서명자, 및 Principal 로부터 완성되는 셋잇단음표, 그리고 그 셋잇단음표에 부여된 Permission 를 지정합니다.

        grant CodeBase ["URL"], Signedby ["signers"],
              Principal [Principal_Class] "Principal_Name" {
            Permission Permission_Class ["Target_Name"]
                                        [, "Permission_Actions"]
                                        [, signedBy "SignerName"];
        };
 
이름/치 페어의 셋잇단음표 가운데, CodeBase 컴퍼넌트와 Signedby 컴퍼넌트는 생략 가능합니다. 존재하지 않는 경우는 임의의 코드 베이스가 일치해, 임의의 서명자 (서명 없음의 코드를 포함한다)가 일치합니다. 예를 들어 다음과 같이 됩니다.
        grant CodeBase "foo.com", Signedby "foo",
              Principal com.sun.security.auth.SolarisPrincipal "duke" {
            permission java.io.FilePermission "/home/duke", "read, write";
        };
 
grant 엔트리에서는, foo 가 서명한, 이름 duke 의 SolarisPrincipal 로 실행하고 있는 foo.com 로부터의 코드에,Permission 가 1 개 있는 것을 지정하고 있습니다. 이 Permission 에서는, /home/duke 디렉토리에의 파일의 읽고 쓰기를, 실행하는 코드에 허가합니다.

어느 Principal 로 「실행」하려면 , 코드로 Subject.doAs(subject, ...) 메소드를 호출합니다. 이 메소드를 호출하면(자), 지정한 Subject 에 관련지을 수 있던 모든 Principal 로 코드는 실행됩니다. 이 Policy 및 이 Policy 에 부여된 Permission 는,Subject.doAs 의 호출 후에 유효하게 됩니다.

1 개의 grant 엔트리에 복수의 Principal 를 지정하는 일도 가능합니다. grant 엔트리내로 지정된 모든 Principal 가 Subject.doAs 에게 건네지는 Subject 에 관련지을 수 있고 있는 경우만, 지정된 Permissions 가 그 Subject 에 부여됩니다.

        grant Principal com.sun.security.auth.SolarisPrincipal "duke",
              Principal com.sun.security.auth.SolarisNumericUserPrincipal "0" {
            permission java.io.FilePermission "/home/duke", "read, write";
            permission java.net.SocketPermission "duke.com", "connect";
        };
 
이 엔트리에서는, duke 와 0 의 양쪽 모두로 실행되는 코드에, duke 의 홈 디렉토리내의 파일에의 읽고 쓰기 액세스권을 부여해, 한층 더 duke.com 에의 소켓 접속을 실시할 권리를 부여합니다.

Principal 베이스가 아닌 grant 엔트리는, 이 Policy 에서는 허가되지 않습니다. 따라서, 다음과 같은 엔트리는 허가되지 않습니다.

        grant CodeBase "foo.com", Signedby "foo" {
            permission java.io.FilePermission "/tmp/scratch", "read, write";
        };
 
이러한 액세스권은 java.security.Policy 에 기술할 필요가 있습니다.

디폴트의 Policy 구현은, (Java 시큐리티 프로퍼티 파일의) auth.policy.provider 시큐리티 프로퍼티에, 희망하는 Policy 구현 클래스의 완전 지정명을 설정하는 것으로써 변경할 수 있습니다. Java 시큐리티 프로퍼티 파일은, <JAVA_HOME>/lib/security/java.security 라는 이름의 파일에 포함되고 있습니다. <JAVA_HOME> 는 java.home 시스템 프로퍼티의 값을 참조하고 있어, JRE 의 인스톨 디렉토리를 나타냅니다.


생성자 의 개요
protected Policy ()
          추천 되고 있지 않습니다.  유일한 생성자 입니다.
 
메소드의 개요
abstract  PermissionCollection getPermissions (Subject  subject, CodeSource  cs)
          추천 되고 있지 않습니다.  지정한 CodeSource 에 관련지을 수 있었던 Principal 에 부여된 Permission 를 가져옵니다.
static Policy getPolicy ()
          추천 되고 있지 않습니다.  인스톨 끝난 Policy 객체를 돌려줍니다.
abstract  void refresh ()
          추천 되고 있지 않습니다.  Policy 의 리프레쉬 및 재로드를 실행합니다.
static void setPolicy (Policy  policy)
          추천 되고 있지 않습니다.  시스템 전체의 Policy 객체를 설정합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

Policy

protected Policy()
추천 되고 있지 않습니다.  
유일한 생성자 입니다. 서브 클래스의 생성자 에 의한 호출용으로, 일반적으로은 암묵적으로 불려 갑니다.

메소드의 상세

getPolicy

public static Policy  getPolicy()
추천 되고 있지 않습니다.  
인스톨 끝난 Policy 객체를 돌려줍니다. 이 메소드는 최초로 AuthPermission("getPolicy") 액세스권을 사용해 SecurityManager.checkPermission 를 호출해, 호출 측에 Policy 객체를 취득할 수 있는 액세스권이 있을지 어떨지를 확인합니다.

반환값:
인스톨 끝난 Policy. 반환값은 null 가 되지 않는다
예외:
SecurityException - 현재의 thread가 Policy 객체를 취득하는 액세스권을 가지지 않는 경우
관련 항목:
setPolicy(javax.security.auth.Policy)

setPolicy

public static void setPolicy(Policy  policy)
추천 되고 있지 않습니다.  
시스템 전체의 Policy 객체를 설정합니다. 이 메소드는 최초로 AuthPermission("setPolicy") 액세스권을 사용해 SecurityManager.checkPermission 를 호출해, 호출 측에 Policy 를 설정하는 액세스권이 있을지 어떨지를 확인합니다.

파라미터:
policy - 신규 시스템 Policy 객체
예외:
SecurityException - 현재의 thread가 Policy 를 설정하는 액세스권을 가지지 않는 경우
관련 항목:
getPolicy()

getPermissions

public abstract PermissionCollection  getPermissions(Subject  subject,
                                                    CodeSource  cs)
추천 되고 있지 않습니다.  
지정한 CodeSource 에 관련지을 수 있었던 Principal 에 부여된 Permission 를 가져옵니다.

파라미터:
subject - Subject. 이것에 관련지을 수 있었던 Principal 는, 지정된 CodeSource 와 함께, 이 메소드가 돌려주는 Permission 를 결정하기 위해서(때문에) 사용된다. 이 파라미터에는 null 를 설정할 수 있는

cs - CodeSource 에 의해 지정된 코드. 지정된 Subject 와 함께, 이 메소드가 돌려주는 Permission 를 결정하기 위해서(때문에) 사용된다. 이 파라미터에는 null 를 설정할 수 있다
반환값:
subjectcs 파라미터로 지정된 모든 Subject 및 코드에 부여된 Permission 의 Collection

refresh

public abstract void refresh()
추천 되고 있지 않습니다.  
Policy 의 리프레쉬 및 재로드를 실행합니다.

이 메소드는, 이 객체에, 현재의 정책의 리프레쉬나 재로드를 실시하게 합니다. 이 처리는 구현에 의존합니다. 예를 들어 Policy 객체가 파일에 포함되고 있는 경우,refresh 를 호출하면(자), 파일이 한번 더 읽어내지게 됩니다.

예외:
SecurityException - 호출 측에, Policy 를 리프레쉬 하는 액세스권이 없는 경우

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