mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-07-07 10:06:53 +08:00
333 lines
17 KiB
HTML
333 lines
17 KiB
HTML
<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> |