blob: bb12554fc8aef2b4773c09ce2c869662f967aedb [file] [log] [blame]
Shuyi Chend7955ce2013-05-22 14:51:55 -07001/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18package org.apache.harmony.javax.security.auth;
19
20import java.security.BasicPermission;
21
22
23
24/**
25 * Governs the use of methods in this package and also its subpackages. A
26 * <i>target name</i> of the permission specifies which methods are allowed
27 * without specifying the concrete action lists. Possible target names and
28 * associated authentication permissions are:
29 *
30 * <pre>
31 * doAs invoke Subject.doAs methods.
32 * doAsPrivileged invoke the Subject.doAsPrivileged methods.
33 * getSubject invoke Subject.getSubject().
34 * getSubjectFromDomainCombiner invoke SubjectDomainCombiner.getSubject().
35 * setReadOnly invoke Subject.setReadonly().
36 * modifyPrincipals modify the set of principals
37 * associated with a Subject.
38 * modifyPublicCredentials modify the set of public credentials
39 * associated with a Subject.
40 * modifyPrivateCredentials modify the set of private credentials
41 * associated with a Subject.
42 * refreshCredential invoke the refresh method on a credential of a
43 * refreshable credential class.
44 * destroyCredential invoke the destroy method on a credential of a
45 * destroyable credential class.
46 * createLoginContext.<i>name</i> instantiate a LoginContext with the
47 * specified name. The wildcard name ('*')
48 * allows to a LoginContext of any name.
49 * getLoginConfiguration invoke the getConfiguration method of
50 * javax.security.auth.login.Configuration.
51 * refreshLoginConfiguration Invoke the refresh method of
52 * javax.security.auth.login.Configuration.
53 * </pre>
54 */
55public final class AuthPermission extends BasicPermission {
56
57 private static final long serialVersionUID = 5806031445061587174L;
58
59 private static final String CREATE_LOGIN_CONTEXT = "createLoginContext"; //$NON-NLS-1$
60
61 private static final String CREATE_LOGIN_CONTEXT_ANY = "createLoginContext.*"; //$NON-NLS-1$
62
63 // inits permission name.
64 private static String init(String name) {
65
66 if (name == null) {
67 throw new NullPointerException("auth.13"); //$NON-NLS-1$
68 }
69
70 if (CREATE_LOGIN_CONTEXT.equals(name)) {
71 return CREATE_LOGIN_CONTEXT_ANY;
72 }
73 return name;
74 }
75
76 /**
77 * Creates an authentication permission with the specified target name.
78 *
79 * @param name
80 * the target name of this authentication permission.
81 */
82 public AuthPermission(String name) {
83 super(init(name));
84 }
85
86 /**
87 * Creates an authentication permission with the specified target name.
88 *
89 * @param name
90 * the target name of this authentication permission.
91 * @param actions
92 * this parameter is ignored and should be {@code null}.
93 */
94 public AuthPermission(String name, String actions) {
95 super(init(name), actions);
96 }
97}