333 lines
17 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="header">
<div class="subTitle">
compact1, compact2, compact3
</div>
<div class="subTitle">
javax.security.auth
</div>
<h2 class="title" title="Class Policy">Class Policy</h2>
</div><div class="contentContainer">
<ul class="inheritance">
<li><a href="../../../java/lang/Object.html" title="class in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>javax.security.auth.Policy</li>
</ul> </li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr/>
<div class="block">
<span><span class="deprecatedLabel">已弃用</span></span>
<div class="block">
<span><span class="deprecationComment">从JDK版本1.4开始 - 由java.security.Policy替代。</span></span>
<span><span class="deprecationComment">java.security.Policy有一个方法</span></span>
<pre> <span>public PermissionCollection getPermissions
(java.security.ProtectionDomain pd)</span> </pre>
<span>和ProtectionDomain有一个构造函数</span>
<pre> <span>public ProtectionDomain
(CodeSource cs,
PermissionCollection permissions,
ClassLoader loader,
Principal[] principals)</span> </pre>
<span>这两个API为呼叫者提供查询基于Principal权限条目的策略的方法。</span>
</div>
</div> <br/> <pre><a href="../../../java/lang/Deprecated.html" title="annotation in java.lang">@Deprecated</a>
public abstract class <span class="typeNameLabel">Policy</span>
extends <a href="../../../java/lang/Object.html" title="class in java.lang">Object</a></pre>
<div class="block">
<p> <span>这是一个用于表示基于主体的授权的系统策略的抽象类。</span> <span>该类的子类实现提供了一种指定基于主题的访问控制<code>Policy</code></span> </p>
<p> <span><code>Policy</code>对象可以查询该组运行作为授予代码权限的<code>Principal</code>以下列方式:</span> </p>
<pre> <span>policy = Policy.getPolicy();
PermissionCollection perms = policy.getPermissions(subject,
codeSource);</span> </pre>
<span><code>Policy</code>对象查询本地策略,且返回适当<code>Permissions</code>对象和权限被授予与所提供的<i>主题</i>关联的Principals同时也授予由提供<i>的codeSource</i>指定的代码。</span>
<p> <span>A <code>Policy</code>包含以下信息。</span> <span>请注意,此示例仅表示默认的<code>Policy</code>实现的语法。</span> <span>该类的子类实现可以实现替代语法,并且可以从诸如文件,数据库或服务器的任何来源检索<code>Policy</code></span> </p>
<p> <span><code>Policy</code>中的每个条目都表示为<b><i>授权</i></b>条目。</span> <span>每个<b><i>授权</i></b>条目指定代码库代码签名者和Principals三元组以及授予该三元组的权限。</span> </p>
<pre> <span>grant CodeBase ["URL"], Signedby ["signers"],
Principal [Principal_Class] "Principal_Name" {
Permission Permission_Class ["Target_Name"]
[, "Permission_Actions"]
[, signedBy "SignerName"];
};</span> </pre>
<span>三元组名称/值对的CodeBase和Signedby组件是可选的。</span>
<span>如果它们不存在,则任何代码库将匹配,并且任何签名者(包括无符号代码)将匹配。</span>
<span>例如,</span>
<pre> <span>grant CodeBase "foo.com", Signedby "foo",
Principal com.sun.security.auth.SolarisPrincipal "duke" {
permission java.io.FilePermission "/home/duke", "read, write";
};</span> </pre>
<span><b><i>授权</i></b>条目指定“foo”签名的代码以“foo”签名并以名称duke运行的<code>SolarisPrincipal</code>有一个<code>Permission</code> ,该<code>Permission</code>允许执行代码读取和写入目录中的文件“ / home / duke“。</span>
<p> <span>要“运行”为特定的<code>Principal</code> ,代码调用<code>Subject.doAs(subject, ...)</code>方法。</span> <span>调用该方法后代码将以与指定的Subject相关联的所有主体<code>Subject</code></span> <span>请注意,此<code>Policy</code> 以及在此Policy中授予的<code>Policy</code> )仅在呼叫<code>Subject.doAs</code>发生<code>Subject.doAs</code></span> </p>
<p> <span>多个校长可以在一个<b><i>授权</i></b>条目中列出。</span> <span>在grant条目中的所有Principals必须与相关<code>Subject</code>提供给<code>Subject.doAs</code><code>Subject</code>被授予指定的权限。</span> </p>
<pre> <span>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";
};</span> </pre>
<span>此条目允许任何以“duke”和“0”权限运行的代码在duke的主目录中读取和写入文件以及允许将套接字连接到“duke.com”。</span>
<p> <span>请注意,非基于委托授权项不在此许可<code>Policy</code></span> <span>因此,授予条目如:</span> </p>
<pre> <span>grant CodeBase "foo.com", Signedby "foo" {
permission java.io.FilePermission "/tmp/scratch", "read, write";
};</span> </pre>
<span>被拒绝</span>
<span>此类许可必须列在<code>java.security.Policy</code></span>
<p> <span>通过将<code>auth.policy.provider</code>安全属性的值设置为所需的<code>Policy</code>实现类的完全限定名称,可以更改默认的<code>Policy</code>实现。</span> </p>
</div>
<dl>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../../java/security/Security.html" title="java.security中的类"><code>security properties</code></a></span>
</dd>
</dl> </li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- --> </a> <h3>构造方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Constructor Summary table, listing constructors, and an explanation">
<caption>
<span>构造方法</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colLast" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/security/auth/Policy.html#Policy--">Policy</a></span>()</code>
<div class="block">
<span class="deprecatedLabel">已弃用</span>
</div>
<div class="block">
唯一的构造函数。
</div> </td>
</tr>
</tbody>
</table> </li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- --> </a> <h3>方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Method Summary table, listing methods, and an explanation">
<caption>
<span class="activeTableTab" id="t0"><span>所有方法</span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t1"><span><a href="javascript:show(1);">静态方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t2"><span><a href="javascript:show(2);">接口方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t3"><span><a href="javascript:show(4);">抽象方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t4"><span><a href="javascript:show(8);">具体的方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t6"><span><a href="javascript:show(32);">弃用的方法</a></span><span class="tabEnd"> </span></span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor" id="i0">
<td class="colFirst"><code>abstract <a href="../../../java/security/PermissionCollection.html" title="class in java.security">PermissionCollection</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/security/auth/Policy.html#getPermissions-javax.security.auth.Subject-java.security.CodeSource-">getPermissions</a></span>(<a href="../../../javax/security/auth/Subject.html" title="class in javax.security.auth">Subject</a> subject, <a href="../../../java/security/CodeSource.html" title="class in java.security">CodeSource</a> cs)</code>
<div class="block">
<span class="deprecatedLabel">已弃用</span>
</div>
<div class="block">
检索授予与指定的CodeSource相关的校长的
<code>CodeSource</code>
</div> </td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code>static <a href="../../../javax/security/auth/Policy.html" title="class in javax.security.auth">Policy</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/security/auth/Policy.html#getPolicy--">getPolicy</a></span>()</code>
<div class="block">
<span class="deprecatedLabel">已弃用</span>
</div>
<div class="block">
返回已安装的Policy对象。
</div> </td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/security/auth/Policy.html#refresh--">refresh</a></span>()</code>
<div class="block">
<span class="deprecatedLabel">已弃用</span>
</div>
<div class="block">
刷新并重新加载策略。
</div> </td>
</tr>
<tr class="rowColor" id="i3">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/security/auth/Policy.html#setPolicy-javax.security.auth.Policy-">setPolicy</a></span>(<a href="../../../javax/security/auth/Policy.html" title="class in javax.security.auth">Policy</a> policy)</code>
<div class="block">
<span class="deprecatedLabel">已弃用</span>
</div>
<div class="block">
设置系统范围的Policy对象。
</div> </td>
</tr>
</tbody>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- --> </a> <h3>Methods inherited from class java.lang.<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a></h3> <code><a href="../../../java/lang/Object.html#clone--">clone</a>, <a href="../../../java/lang/Object.html#equals-java.lang.Object-">equals</a>, <a href="../../../java/lang/Object.html#finalize--">finalize</a>, <a href="../../../java/lang/Object.html#getClass--">getClass</a>, <a href="../../../java/lang/Object.html#hashCode--">hashCode</a>, <a href="../../../java/lang/Object.html#notify--">notify</a>, <a href="../../../java/lang/Object.html#notifyAll--">notifyAll</a>, <a href="../../../java/lang/Object.html#toString--">toString</a>, <a href="../../../java/lang/Object.html#wait--">wait</a>, <a href="../../../java/lang/Object.html#wait-long-">wait</a>, <a href="../../../java/lang/Object.html#wait-long-int-">wait</a></code></li>
</ul> </li>
</ul> </li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- --> </a> <h3>构造方法详细信息</h3> <a name="Policy--">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>Policy</h4> <pre>protected Policy()</pre>
<div class="block">
<span class="deprecatedLabel">已弃用</span>
</div>
<div class="block">
<span>唯一的构造函数。</span>
<span>(用于子类构造函数的调用,通常是隐式的。)</span>
</div> </li>
</ul> </li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- --> </a> <h3>方法详细信息</h3> <a name="getPolicy--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getPolicy</h4> <pre>public static <a href="../../../javax/security/auth/Policy.html" title="class in javax.security.auth">Policy</a> getPolicy()</pre>
<div class="block">
<span class="deprecatedLabel">已弃用</span>
</div>
<div class="block">
<span>返回已安装的Policy对象。</span>
<span>此方法首先使用<code>AuthPermission("getPolicy")</code>权限调用<code>SecurityManager.checkPermission</code> 以确保调用方有权获取Policy对象。</span>
<p></p>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<span>已安装的策略。</span>
<span>返回值不能为<code>null</code></span>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/SecurityException.html" title="class in java.lang">SecurityException</a></code> - 如果当前线程没有获取策略对象的权限。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/security/auth/Policy.html#setPolicy-javax.security.auth.Policy-"><code>setPolicy(javax.security.auth.Policy)</code></a>
</dd>
</dl> </li>
</ul> <a name="setPolicy-javax.security.auth.Policy-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>setPolicy</h4> <pre>public static void setPolicy(<a href="../../../javax/security/auth/Policy.html" title="class in javax.security.auth">Policy</a> policy)</pre>
<div class="block">
<span class="deprecatedLabel">已弃用</span>
</div>
<div class="block">
<span>设置系统范围的Policy对象。</span>
<span>此方法首先呼叫<code>SecurityManager.checkPermission</code><code>AuthPermission("setPolicy")</code>权限,以确保呼叫者有权限设置策略。</span>
<p></p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>policy</code> - 新的系统策略对象。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/SecurityException.html" title="class in java.lang">SecurityException</a></code> - 如果当前线程没有设置策略的权限。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/security/auth/Policy.html#getPolicy--"><code>getPolicy()</code></a>
</dd>
</dl> </li>
</ul> <a name="getPermissions-javax.security.auth.Subject-java.security.CodeSource-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getPermissions</h4> <pre>public abstract <a href="../../../java/security/PermissionCollection.html" title="class in java.security">PermissionCollection</a> getPermissions(<a href="../../../javax/security/auth/Subject.html" title="class in javax.security.auth">Subject</a> subject,
<a href="../../../java/security/CodeSource.html" title="class in java.security">CodeSource</a> cs)</pre>
<div class="block">
<span class="deprecatedLabel">已弃用</span>
</div>
<div class="block">
检索授予与指定的CodeSource相关的校长的
<code>CodeSource</code>
<p></p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>subject</code> -所述<code>Subject</code>所关联的Principal在与所提供的结合<code>CodeSource</code> ,确定权限此方法返回的。</span>
<span>该参数可以是<code>null</code></span>
<p></p>
</dd>
<dd>
<span><code>cs</code> - 由其<code>CodeSource</code>的代码,与所提供的<code>Subject</code>一起确定此方法返回的权限。</span>
<span>该参数可以是<code>null</code></span>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
授予所有Subject的权限
<code>Subject</code>和提供的
<i>主题</i>
<i>cs</i>参数中指定的代码。
</dd>
</dl> </li>
</ul> <a name="refresh--">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>refresh</h4> <pre>public abstract void refresh()</pre>
<div class="block">
<span class="deprecatedLabel">已弃用</span>
</div>
<div class="block">
<span>刷新并重新加载策略。</span>
<p> <span>此方法使此对象刷新/重新加载其当前策略。</span> <span>这是依赖于实现的。</span> <span>例如如果Policy对象存储在文件中则调用<code>refresh</code>将导致该文件被重新读取。</span> </p>
<p></p>
</div>
<dl>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/SecurityException.html" title="class in java.lang">SecurityException</a></code> - 如果主叫方没有刷新策略的权限。
</dd>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>