这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。
该课程将向您展示如何通过创建的策略文件来控制资源的访问。
步骤如下:
策略文件是ASCII文本文件,可以通过文本编辑器或本节演示的图形化策略工具进行管理。策略工具可以节省输入,并消除策略文件的语法错误。
该课使用策略工具创建名为examplepolicy的策略文件,在该文件中,您将添加一个策略条目,该条目授予在examples目录中写入的权限。
遵守以下步骤来创建并修改策略文件:
为了启动策略工具,在命令行中键入如下命令:
policytool
这将打开策略工具窗口。
无论何时启动策略工具,它都会尝试用用户策略文件中的策略信息填充此窗口。用户策略文件名默认为当前工作空间主目录下的.java.policy。如果策略工具找不到用户策略文件,它会发出警告并显示一个空白的策略工具窗口(一个包含标题和按钮但没有数据的窗口),如下图所示。
接着您可以打开一个现有的策略文件,或者创建一个新的策略文件。
当第一次运行策略工具时,您将看到空白的策略工具窗口,因为用户策略文件还不存在。您可以立即创建一个新的策略文件,如下一步所述。
要创建新条目,请单击主策略工具窗口中的 添加策略条目 按钮。这将显示策略条目对话框,如下图所示。
策略条目为来自特定代码源的代码指定一个或多个权限——代码源可以是来自特定位置(URL)的代码、也可以是由特定实体签名的代码,或者两者兼而有之。
CodeBase和SignedBy 文本框指定授予将添加到文件中的权限代码。
如果您同时配置CodeBase和SignedBy,那么该权限只授予来自指定位置并由指定别名签名的代码。
您可以从存储示例的位置(URL)向所有代码授予权限。
在策略输入对话框的CodeBase文本框中键入以下URL:
https://docs.oracle.com/javase/tutorial/security/tour1/examples/
注意:这是一个URL。因此,它必须始终使用斜杠作为分隔符,而不是反斜杠。
将SignedBy文本框留空,因为您不需要对代码进行签名。
注意:如果不仅仅是为前面指定目录下的所有代码授权,而是针对security目录及其所有子目录下的代码授权,那么键入如下URL:
https://docs.oracle.com/javase/tutorial/security/
您已经指定了代码源(代码库),并且不必对代码进行签名(因为没有SignedBy值)。
您现在已经指定了这个策略条目,所以单击策略条目对话框中的 完成 按钮。策略工具窗口现在包含一条表示策略条目的行,显示 CodeBase 值。
注意:我们将在下一节中为这个新的策略条目授予权限。
要保存创建的新策略文件,请从“文件”菜单中选择“另存为”命令。这将显示 另存为 对话框。
在控制应用程序快速教程的示例中,假设您将策略文件存储在C:驱动器上的Test目录中。
导航到Test目录。键入文件名examplepolicy并单击保存。
策略文件现在被保存,其名称和路径显示在标记为Policy File的文本框中。
退出策略工具,从“文件”菜单中选择“退出”。
UNIX用户请注意:这些步骤假设在Windows系统中创建策略文件。在UNIX系统中其实是一样的步骤。课程中说要将策略文件存储在C:\Test目录中,您也可以将它存储在另一个目录中。在控制应用程序快速教程的示例中,假设您将它存储在~/test目录中。