📄 security.html
字号:
<a name="wp526724"> </a><p class="pParagraph">用户通过验证后,<em class="cEmphasis">授权</em>级别将决定该用户可以执行哪些操作。用户的授权以其<em class="cEmphasis">角色</em>为基础。例如,人力资源应用程序可以授权管理者查看所有雇员的个人信息,但只允许雇员查看自己的个人信息。有关角色的更多信息,请参见“<a href="security.html#wp526844" tppabs="http://docs.sun.com/source/819-1553/security.html#wp526844">了解用户、组、角色和区域</a>”。</p><a name="wp526728"> </a><h4 class="pHeading3">指定 JACC 提供者</h4><a name="wp526730"> </a><p class="pParagraph">JACC(Java 容器授权合同)属于 J2EE 1.4 规范,它为可插拔授权提供者定义了接口。这使得管理员可以设置第三方插件模块来执行授权。 </p><a name="wp526736"> </a><p class="pParagraph">默认情况下,Application Server 提供一个符合 JACC 规范的基于文件的简单授权引擎。还可以指定其他第三方 JACC 提供者。</p><a name="wp526738"> </a><p class="pParagraph">JACC 提供者使用 Java 验证和授权服务 (JAAS) API。JAAS 允许服务验证并强制对用户进行访问控制。JAAS 实现了 Java 技术版本的标准可插拔验证模块 (PAM) 框架。</p><a name="wp526742"> </a><h4 class="pHeading3">审计验证和授权决策</h4><a name="wp526760"> </a><p class="pParagraph">Application Server 可以通过<em class="cEmphasis">审计模块</em>提供对所有验证和授权决策的审计跟踪。Application Server 提供了一个默认的审计模块,还提供了自定义审计模块的功能。有关开发自定义审计模块的信息,请参见 Application Server Developer's Guide。有关 Developer's Guide 的链接,请参见“<a href="security.html#wp530280" tppabs="http://docs.sun.com/source/819-1553/security.html#wp530280">详细信息</a>”。</p><a name="wp526764"> </a><h4 class="pHeading3">配置消息安全性</h4><a name="wp526766"> </a><p class="pParagraph"><em class="cEmphasis">消息安全性</em>使服务器可以在消息层执行 Web 服务调用和响应的端对端验证。Application Server 使用 SOAP 层上的消息安全性提供者来实现消息安全性。消息安全性提供者提供了请求和响应消息所需的验证类型等信息。支持的验证类型包括:</p><div class="pSmartList1"><ul class="pSmartList1"><a name="wp526768"> </a><div class="pSmartList1"><li>发件人验证,包括用户名和密码验证。</li></div><a name="wp526770"> </a><div class="pSmartList1"><li>内容验证,包括 XML 数字签名。</li></div></ul></div><a name="wp526772"> </a><p class="pParagraph">该版本附带了两个消息安全性提供者。可以为 SOAP 层的验证配置消息安全性提供者。可以配置的提供者包括 <code class="cCode">ClientProvider</code> 和 <code class="cCode">ServerProvider</code>。 </p><a name="wp526774"> </a><p class="pParagraph">以(可插入)验证模块的形式将消息层安全性支持集成到 Application Server 及其客户机容器中。默认情况下,Application Server 中的消息层安全性处于禁用状态。 </p><a name="wp526788"> </a><p class="pParagraph">可以为整个 Application Server 或者为特定的应用程序或方法配置消息层安全性。“<a href="ws-security.html#wp929401" tppabs="http://docs.sun.com/source/819-1553/ws-security.html#wp929401">配置消息安全性</a>”讨论了在 Application Server 级别配置消息安全性。Developer's Guide 的 "<a href="javascript:if(confirm('http://docs.sun.com/source/819-0079/dgsecure.html \n\n该文件无法用 Teleport Ultra 下载, 因为 它是一个域或路径外部被设置为它的启始地址的地址。 \n\n你想在服务器上打开它?'))window.location='http://docs.sun.com/source/819-0079/dgsecure.html'" tppabs="http://docs.sun.com/source/819-0079/dgsecure.html"></a><a href="javascript:if(confirm('http://docs.sun.com/source/819-0217/dgsecure.html \n\n该文件无法用 Teleport Ultra 下载, 因为 它是一个域或路径外部被设置为它的启始地址的地址。 \n\n你想在服务器上打开它?'))window.location='http://docs.sun.com/source/819-0217/dgsecure.html'" tppabs="http://docs.sun.com/source/819-0217/dgsecure.html">Securing Applications</a>" 一章中讨论了如何配置应用程序级别的消息安全性。</p><a name="wp526844"> </a><h3 class="pHeading2">了解用户、组、角色和区域</h3><a name="wp526850"> </a><p class="pParagraph">Application Server 对以下实体强制执行其验证和授权策略:</p><div class="pSmartList1"><ul class="pSmartList1"><a name="wp526860"> </a><div class="pSmartList1"><li><a href="security.html#wp526897" tppabs="http://docs.sun.com/source/819-1553/security.html#wp526897">用户</a>:<em class="cEmphasis">Application Server 中定义的</em>单个标识。通常,用户是指一个人、一个软件组件(例如企业 Bean),甚至是一种服务。经过验证的用户有时被称为<em class="cEmphasis">主体</em>。用户有时被称为<em class="cEmphasis">主题</em>。</li></div><a name="wp526870"> </a><div class="pSmartList1"><li><a href="security.html#wp526903" tppabs="http://docs.sun.com/source/819-1553/security.html#wp526903">组</a>:<em class="cEmphasis">Application Server 中定义的一组用户</em>,按照常见特性进行分类。 </li></div><a name="wp526876"> </a><div class="pSmartList1"><li><a href="security.html#wp526909" tppabs="http://docs.sun.com/source/819-1553/security.html#wp526909">角色</a>:<em class="cEmphasis">由应用程序定义的</em>命名授权级别。可以将角色比喻为开锁的钥匙。许多人都可以有此钥匙的复制钥匙。锁不关心谁要造访,而只关心使用的钥匙是否正确。</li></div><a name="wp526882"> </a><div class="pSmartList1"><li><a href="security.html#wp526921" tppabs="http://docs.sun.com/source/819-1553/security.html#wp526921">区域</a>:包含用户和组信息及其关联的安全凭证的系统信息库。区域也被称为<em class="cEmphasis">安全策略域</em>。 </li></div></ul></div><a name="wp526888"> </a><p class="pParagraph"><b class="cBold">注:</b>尽管用户和组是为整个 Application Server 指定的,但是每个应用程序都需要定义自己的角色。当封装和部署应用程序时,应用程序会指定用户/组和角色之间的映射,如下图所示。</p><a name="wp526893"> </a><p class="pParagraph">角色映射</p><div align="left"><img src="images/security-roleMapping.gif" tppabs="http://docs.sun.com/source/819-1553/images/security-roleMapping.gif" border="0" hspace="0" vspace="0"/></div><p class="pParagraph"></p><a name="wp526897"> </a><h4 class="pHeading3">用户</h4><a name="wp526899"> </a><p class="pParagraph"><em class="cEmphasis">用户</em>是已在 Application Server 中定义的个人(或应用程序)标识。用户可以与组关联。Application Server 验证服务可以管理多个区域中的用户。</p><a name="wp526903"> </a><h4 class="pHeading3">组</h4><a name="wp526905"> </a><p class="pParagraph"><em class="cEmphasis">J2EE 组</em>(或简称组)是按常见特性(例如职务或用户概要文件)进行分类的用户类别。例如,假定电子商务应用程序的用户属于 <code class="cCode">customer</code> 组,但是大客户可以属于 <code class="cCode">preferred</code> 组。将用户分组可以简化对用户量很大时的访问控制。</p><a name="wp526909"> </a><h4 class="pHeading3">角色</h4><a name="wp526911"> </a><p class="pParagraph"><em class="cEmphasis">角色</em>定义用户可以访问哪些应用程序和每个应用程序的哪些部分以及用户可以执行的操作。也就是说,角色决定了用户的授权级别。</p><a name="wp526913"> </a><p class="pParagraph">例如,假定在人事应用程序中,所有雇员均可以访问电话号码和电子邮件地址,但只有管理人员才能访问薪水信息。该应用程序至少需要定义两个角色:<code class="cCode">employee</code> 和 <code class="cCode">manager</code>;仅允许 <code class="cCode">manager</code> 角色中的用户查看薪水信息。</p><a name="wp526915"> </a><p class="pParagraph">角色与用户组的不同之处在于,角色在应用程序中定义功能,而用户组是以某一方式相关的一组用户。例如,假定在人事应用程序中有 <code class="cCode">full-time</code>、<code class="cCode">part-time</code> 和 <code class="cCode">on-leave</code> 几个组,但所有这些组中的用户仍是 <code class="cCode">employee</code> 角色。</p><a name="wp526917"> </a><p class="pParagraph">角色是在应用程序部署描述符中定义的。相反,组是针对整个服务器和区域而定义的。应用程序开发者或部署者在每个应用程序的部署描述符中将角色映射到一个或多个组。</p><a name="wp526921"> </a><h4 class="pHeading3">区域</h4><a name="wp526923"> </a><p class="pParagraph"><em class="cEmphasis">区域</em>(也称为<em class="cEmphasis">安全策略域</em>或<em class="cEmphasis">安全域</em>)是服务器定义和强制执行通用安全策略的范围。在实际应用中,区域是服务器存储用户和组信息的系统信息库。 </p><a name="wp526933"> </a><p class="pParagraph">Application Server 预先配置了三个区域:<code class="cCode">file</code>(初始默认区域)、<code class="cCode">certificate</code> 和 <code class="cCode">admin-realm</code>。您还可以设置 <code class="cCode">ldap</code>、<code class="cCode">solaris</code> 或自定义区域。应用程序可以在其部署描述符中指定要使用的区域。如果应用程序不指定区域,Application Server 将使用其默认区域。</p><a name="wp526939"> </a><p class="pParagraph">在 <code class="cCode">file</code> 区域中,服务器将用户凭证存储在本地名为 <code class="cCode">keyfile</code> 的文件中。您可以使用管理控制台来管理 <code class="cCode">file</code> 区域中的用户。有关更多信息,请参见“<a href="security.html#wp528106" tppabs="http://docs.sun.com/source/819-1553/security.html#wp528106">管理 file 区域用户</a>”。</p><a name="wp526945"> </a><p class="pParagraph">在 <code class="cCode">certificate</code> 区域中,服务器将用户凭证存储在证书数据库中。使用 <code class="cCode">certificate</code> 区域时,服务器结合使用证书和 HTTPS 协议来验证 Web 客户机。有关证书的更多信息,请参见“<a href="security.html#wp526971" tppabs="http://docs.sun.com/source/819-1553/security.html#wp526971">证书和 SSL 简介</a>”。 </p><a name="wp526951"> </a><p class="pParagraph"><code class="cCode">admin-realm</code> 也是一个 <code class="cCode">FileRealm</code>,它将管理员用户凭证存储在本地名为 <code class="cCode">admin-keyfile</code> 的文件中。您可以使用管理控制台管理此区域中的用户,其方法与您管理 <code class="cCode">file</code> 区域中的用户的方法相同。有关更多信息,请参见“<a href="security.html#wp528106" tppabs="http://docs.sun.com/source/819-1553/security.html#wp528106">管理 file 区域用户</a>”。</p><a name="wp526953"> </a><p class="pParagraph">在 <code class="cCode">ldap</code> 区域中,服务器将从轻量目录访问协议 (LDAP) 服务器(例如 Sun Java System Directory Server)中获取用户凭证。LDAP 是一种协议,它使任何人都可以在网络(无论是公共 Internet 还是企业内联网)中查找组织、个人和其他资源(例如文件和设备)。有关管理 <code class="cCode">ldap</code> 区域中的用户和组的信息,请参阅您的 LDAP 服务器文档。</p><a name="wp526955"> </a><p class="pParagraph">在 <code class="cCode">solaris</code> 区域中,服务器将从 Solaris 操作系统中获取用户凭证。Solaris 9 OS 和更高版本支持此区域。有关管理 <code class="cCode">solaris</code> 区域中的用户和组的信息,请参阅您的 Solaris 文档。</p><a name="wp526965"> </a><p class="pParagraph">自定义区域是用户凭证的任何其他系统信息库,例如关系型数据库或第三方组件。有关更多信息,请参见“<a href="security.html#wp527902" tppabs="http://docs.sun.com/source/819-1553/security.html#wp527902">创建自定义区域</a>”或 Developer's Guide 的 "<a href="javascript:if(confirm('http://docs.sun.com/source/819-0079/dgsecure.html \n\n该文件无法用 Teleport Ultra 下载, 因为 它是一个域或路径外部被设置为它的启始地址的地址。 \n\n你想在服务器上打开它?'))window.location='http://docs.sun.com/source/819-0079/dgsecure.html'" tppabs="http://docs.sun.com/source/819-0079/dgsecure.html"></a><a href="javascript:if(confirm('http://docs.sun.com/source/819-0217/dgsecure.html \n\n该文件无法用 Teleport Ultra 下载, 因为 它是一个域或路径外部被设置为它的启始地址的地址。 \n\n你想在服务器上打开它?'))window.location='http://docs.sun.com/source/819-0217/dgsecure.html'" tppabs="http://docs.sun.com/source/819-0217/dgsecure.html">Securing Applications</a>" 一章。</p><a name="wp526971"> </a><h3 class="pHeading2">证书和 SSL 简介</h3><a name="wp526973"> </a><p class="pParagraph">本节包括以下主题:</p><div class="pSmartList1"><ul class="pSmartList1"><a name="wp526979"> </a><div class="pSmartList1"><li><a href="security.html#wp526989" tppabs="http://docs.sun.com/source/819-1553/security.html#wp526989">关于数字证书</a></li></div><a name="wp526985"> </a><div class="pSmartList1"><li><a href="security.html#wp527029" tppabs="http://docs.sun.com/source/819-1553/security.html#wp527029">关于安全套接字层</a></li></div></ul></div><a name="wp526989"> </a><h4 class="pHeading3">关于数字证书</h4><a name="wp526991"> </a><p class="pParagraph"><em class="cEmphasis">数字证书</em>(或简称证书)是在 Internet 上唯一地标识人员和资源的电子文件。证书使两个实体之间能够进行安全、保密的通信。 </p><a name="wp526997"> </a><p class="pParagraph">证书有很多种类型,例如个人证书(由个人使用)和服务器证书(用于通过安全套接字层 [SSL] 技术在服务器和客户机之间建立安全会话)。有关 SSL 的更多信息,请参见“<a href="security.html#wp527029" tppabs="http://docs.sun.com/source/819-1553/security.html#wp527029">关于安全套接字层</a>”。</p><a name="wp526999"> </a><p class="pParagraph">证书是基于<em class="cEmphasis">公共密钥加密</em>的,公共密钥加密使用数字<em class="cEmphasis">密钥</em>对(很长的数字)对信息进行<em class="cEmphasis">加密</em>或编码,从而使信息只能被目标收件人读取。然后,收件人对信息进行<em class="cEmphasis">解密</em>(解码)即可读取该信息。</p><a name="wp527001"> </a><p class="pParagraph">一个密钥对包含一个公共密钥和一个专用密钥。拥有者对公共密钥进行分发并使任何人都可以使用该公共密钥。但是拥有者永远不会分发专用密钥;专用密钥始终是保密的。由于密钥与数学相关,因此使用了密钥对中的一个密钥进行加密的数据只能通过密钥对中的另一个密钥进行解密。 </p><a name="wp527003"> </a><p class="pParagraph">证书就好像一本护照:它可以标识持有者并提供其他重要信息。证书由称为<em class="cEmphasis">证书授权机构</em> (CA) 的受信任的第三方发布。CA 类似于护照申领办公室:它将验证证书持有者的身份并对证书进行签名,以使他人无法伪造或篡改证书。CA 对证书进行签名之后,持有者可以提供该证书作为身份证明并建立经过加密的保密通信。 </p><a name="wp527005"> </a><p class="pParagraph">最重要的是,证书会将拥有者的公共密钥绑定到拥有者的标识。与护照将照片绑定到其持有者的个人信息类似,证书将公共密钥绑定到有关其拥有者的信息。</p><a name="wp527007"> </a><p class="pParagraph">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -