The big issues, are always about "security" as a starting point.
And it's hard to manage security without some pre-established
settings. What do we all think about a "default" security
configuration (such as binding to localhost, asserting a download
permission and using SSL) that fall out of the APIs (or new APIs)
more naturally.
Yes definitely, perhaps we also need to provide an insecure
alternative also.
Java 2 security is difficult to understand, even when you author code,
you don't necessarily know what guards your method calls will end up
invoking. The biggest problem is developers don't define the
permissions their code needs and administrators don't know what to
specify in their policy files.
I've been working on ways to cut through the maze:
com.sun.jini.tool.DebugDynamicPolicy was designed to capture policy
security checks to assist developers to determine permissions required.
In addition we now have com.sun.jini.tool.ProfilingSecurityManager
(Original Author: Mark Petrovic BSD License)
Why do we need two tools?
DebugDynamicPolicy only tells you what permissions are required.
ProfilingSecurityManager tells you what permissions each jar requires,
it will also tell you permission checks made by static
ProtectionDomain's.
Prior to Java 1.4, ProtectionDomain's were immutable, the policy was
only consulted at the time the ProtectionDomain was created, all
permissions were CodeSource based (static). Java 1.4 added dynamic
policy and principal based permission grants. Some of these old
"static" ProtectionDomain's still exist in code, so you need a
SecurityManager to capture their security checks, the policy will
never be consulted.
Something not well known is your SecurityManager and Policy should be
specified on the command line together at jvm startup. Due to out of
order optimisations, the point in time when a SecurityManager is
loaded (when called from your code) can differ by platform, leading
some platforms to require additional permissions, sometimes this will
also crop up when making subtle changes. This often happens with our
qa test suite, I do intend to fix it a some point.
Soon I intend to borrow some code from Apache Felix, allowing smart
proxy's to declare the permissions they require in their jar.
As I mentioned on the Security policy Service thread, OSGi uses a
permissions.perms file to describe a bundle's (jar file) local
permissions.
The apache felix classes that parse this file are:
org.osgi.service.permissionadmin.PermissionInfo
org.apache.felix.framework.security.util.LocalPermissions
It appears pretty simple to make use of this file format with proven
code for retrieving permissions from jar files.
Developers can use ProfilingSecurityManager to determine what
permissions their proxy jar requires.
Then client's only need ask a proxy, what permissions it requires and
if acceptable, grant them, after authentication and proxy
verification. If unacceptable, the client can find another service
instance.
The output below is one of the qa tests run with the
ProfilingSecurityManager enabled.
Remember whenever a security check is made, the AccessController must
check every ProtectionDomain on the current thread stack, unless called
from a doPrivileged method.
It's possible to alter this program to produce policy file output
instead. These policy files will still need some editing, but it
simplifies deployment. It might also be useful for generating
permissions.perms files for including in proxy jar files.
[java] -----------------------------------------
[java]
[java] Running
com/sun/jini/test/spec/url/httpmd/handler/OpenConnectionNonExistFile.td
[java] Time is Thu Aug 04 12:43:37 EST 2011
[java] Starting test in separate process with command:
[java] /usr/jdk/instances/jdk1.6.0/jre/bin/java
-Djava.security.policy=file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/harness/policy/defaulttest.policy
-cp
/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar:/opt/src/River2.2.1/peterConcurrentPolicy/lib/jsk-platform.jar:/opt/src/River2.2.1/peterConcurrentPolicy/lib/jsk-lib.jar
-client
-Djava.ext.dirs=/usr/jdk/instances/jdk1.6.0/jre/lib/ext:/usr/jdk/packages/lib/ext:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib-ext:/opt/src/River2.2.1/peterConcurrentPolicy/lib-ext
-Djava.security.manager=com.sun.jini.tool.ProfilingSecurityManager
-Dcom.sun.jini.jsk.port=9080 -Dcom.sun.jini.qa.port=9081
-Dcom.sun.jini.jsk.home=/opt/src/River2.2.1/peterConcurrentPolicy
-Dcom.sun.jini.qa.home=/opt/src/River2.2.1/peterConcurrentPolicy/qa
-Dcom.sun.jini.qa.harness.harnessJar=/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar
-Dcom.sun.jini.qa.harness.testJar=/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar
-Dcom.sun.jini.qa.harness.runjiniserver=false
-Dcom.sun.jini.qa.harness.runkitserver=false
-Djava.security.properties=file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/harness/trust/dynamic-policy.properties
-Dcom.sun.jini.qa.harness.testhosts=
-Djava.util.logging.config.file=/opt/src/River2.2.1/peterConcurrentPolicy/qa/src/com/sun/jini/test/resources/qa1.logging
-Dcom.sun.jini.test.home=/opt/src/River2.2.1/peterConcurrentPolicy/qa
-Dcom.sun.jini.test.port=9082
-Dcom.sun.jini.qa.harness.policies=file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/src/com/sun/jini/test/resources/jinitest.policy
-Djava.ext.dirs=/usr/jdk/instances/jdk1.6.0/jre/lib/ext:/usr/jdk/packages/lib/ext:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib-ext:/opt/src/River2.2.1/peterConcurrentPolicy/lib-ext
-Djava.protocol.handler.pkgs=net.jini.url
com.sun.jini.qa.harness.MasterTest
com/sun/jini/test/spec/url/httpmd/handler/OpenConnectionNonExistFile.td
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.lang.RuntimePermission "setIO", "";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.logging.LoggingPermission "control", "";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "line.separator", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.testhosts", "read";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.lang.RuntimePermission
"accessClassInPackage.sun.security.util", "";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.lang.RuntimePermission
"accessClassInPackage.sun.security.action", "";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.util.PropertyPermission
"sun.security.pkcs11.allowSingleThreadedModules", "read";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.io.FilePermission
"/usr/jdk/instances/jdk1.6.0/jre/lib/security/sunpkcs11-solaris.cfg",
"read";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.util.PropertyPermission "os.name", "read";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.util.PropertyPermission "os.arch", "read";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.io.FilePermission "/usr/lib/libpkcs11.so", "read";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.lang.RuntimePermission "loadLibrary.j2pkcs11", "";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.io.FilePermission
"/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sparc/libj2pkcs11.so", "read";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.io.FilePermission
"/usr/jdk/instances/jdk1.6.0/jre/lib/ext/libj2pkcs11.so", "read";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.io.FilePermission
"/usr/jdk/packages/lib/ext/sparc/libj2pkcs11.so", "read";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.io.FilePermission
"/usr/jdk/packages/lib/ext/libj2pkcs11.so", "read";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.io.FilePermission
"/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib-ext/sparc/libj2pkcs11.so",
"read";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.io.FilePermission
"/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib-ext/libj2pkcs11.so",
"read";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.io.FilePermission
"/opt/src/River2.2.1/peterConcurrentPolicy/lib-ext/sparc/libj2pkcs11.so",
"read";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.io.FilePermission
"/opt/src/River2.2.1/peterConcurrentPolicy/lib-ext/libj2pkcs11.so",
"read";};
[java] grant codeBase
"file:/usr/jdk/instances/jdk1.6.0/jre/lib/ext/sunpkcs11.jar"
{permission java.security.SecurityPermission
"putProviderProperty.SunPKCS11-Solaris", "";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.lang.RuntimePermission "getenv.SOUL", "";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.io.FilePermission
"/opt/src/River2.2.1/peterConcurrentPolicy/qa/soul/soul.201108041053007925",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "net.jini.discovery.announce",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "net.jini.discovery.announce",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/lib/jsk-platform.jar"
{permission java.lang.RuntimePermission "createSecurityManager", "";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/lib/jsk-platform.jar"
{permission java.security.SecurityPermission "getDomainCombiner", "";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/lib/jsk-platform.jar"
{permission java.lang.RuntimePermission "getProtectionDomain", "";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/lib/jsk-platform.jar"
{permission java.security.SecurityPermission
"createAccessControlContext", "";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "testFailureAnalyzers", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.callAutoT", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.lang.RuntimePermission
"accessClassInPackage.sun.util.logging.resources", "";};
[java]
[java] TIME: 12:43:40 PM
[java]
[java] MasterTest.doTest INFO:
[java] ============================== CALLING SETUP()
==============================
[java]
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.startDelay", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.startDelay", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.runkitserver", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.runkitserver", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.runjiniserver", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.runjiniserver", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.testClassServer", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.testClassServer", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.serviceMode", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.serviceMode", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"testClassServer.transient.impl", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"testClassServer.transient.impl", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "testClassServer.adminName",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "testClassServer.adminName",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "testClassServer.type.1",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "testClassServer.type.1",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "testClassServer.type.0",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "testClassServer.type.0",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "testClassServer.type", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "testClassServer.type", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.impl.0", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.impl.0", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.impl", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.impl", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "testClassServer.impl.0",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "testClassServer.impl.0",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "testClassServer.impl", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "testClassServer.impl", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.port.0", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.port.0", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.port", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.port", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "testClassServer.port.0",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "testClassServer.port.0",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "testClassServer.port", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "testClassServer.port", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "com.sun.jini.test.port",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "com.sun.jini.test.port",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.dir.0", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.dir.0", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.dir", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.dir", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "testClassServer.dir.0", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "testClassServer.dir.0", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "testClassServer.dir", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "testClassServer.dir", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "java.io.tmpdir", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "java.io.tmpdir", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.globalvmargs", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.globalvmargs", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "java.ext.dirs", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "java.ext.dirs", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "com.sun.jini.jsk.port", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "com.sun.jini.jsk.port", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "com.sun.jini.qa.port", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "com.sun.jini.qa.port", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "com.sun.jini.jsk.home", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "com.sun.jini.jsk.home", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "com.sun.jini.qa.home", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "com.sun.jini.qa.home", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.securityproperties", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.securityproperties", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.io.FilePermission
"harness/trust/dynamic-policy.properties", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.io.FilePermission
"harness/trust/dynamic-policy.properties", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "user.dir", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "user.dir", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.io.FilePermission
"/opt/src/River2.2.1/peterConcurrentPolicy/qa/harness/trust/dynamic-policy.properties",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.io.FilePermission
"/opt/src/River2.2.1/peterConcurrentPolicy/qa/harness/trust/dynamic-policy.properties",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.testhosts", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"java.util.logging.config.file", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"java.util.logging.config.file", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "com.sun.jini.test.home",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "com.sun.jini.test.home",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.io.FilePermission
"src/com/sun/jini/test/resources/jinitest.policy", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.io.FilePermission
"src/com/sun/jini/test/resources/jinitest.policy", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.io.FilePermission
"/opt/src/River2.2.1/peterConcurrentPolicy/qa/src/com/sun/jini/test/resources/jinitest.policy",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.io.FilePermission
"/opt/src/River2.2.1/peterConcurrentPolicy/qa/src/com/sun/jini/test/resources/jinitest.policy",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.serverjvmargs.0", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.serverjvmargs.0", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.serverjvmargs", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"testClassServer.classServer.serverjvmargs", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"testClassServer.serverjvmargs.0", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"testClassServer.serverjvmargs.0", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"testClassServer.serverjvmargs", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission
"testClassServer.serverjvmargs", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.net.SocketPermission "localhost:9082", "listen,resolve";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.net.SocketPermission "localhost:9082", "listen,resolve";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.net.NetPermission "specifyStreamHandler", "";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.net.NetPermission "specifyStreamHandler", "";};
[java] 04/08/2011 12:43:40 PM com.sun.jini.tool.ClassServer run
[java] INFO: ClassServer started [[/var/tmp/], port 9082]
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "OpenConnection.Url", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "OpenConnection.Url", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "OpenConnection.ExpResult",
"read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.util.PropertyPermission "OpenConnection.ExpResult",
"read";};
[java] MasterTest.doTest INFO:
[java] =============================== CALLING RUN()
===============================
[java]
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission "os.name", "read";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/lib/jsk-platform.jar"
{permission java.net.SocketPermission "localhost:80", "connect,resolve";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.net.SocketPermission "localhost:80", "connect,resolve";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.net.SocketPermission "localhost:80", "connect,resolve";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/lib/jsk-platform.jar"
{permission java.net.SocketPermission "localhost", "resolve";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.net.SocketPermission "localhost", "resolve";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.net.SocketPermission "localhost", "resolve";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/lib/jsk-platform.jar"
{permission java.net.SocketPermission "127.0.0.1:80", "connect,resolve";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jinitests.jar"
{permission java.net.SocketPermission "127.0.0.1:80", "connect,resolve";};
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.net.SocketPermission "127.0.0.1:80", "connect,resolve";};
[java] MasterTest.doTest INFO:
[java] ============================ CALLING TEARDOWN()
=============================
[java]
[java] grant codeBase
"file:/opt/src/River2.2.1/peterConcurrentPolicy/qa/lib/jiniharness.jar"
{permission java.util.PropertyPermission
"com.sun.jini.qa.harness.nSecsWaitDestroy", "read";};
[java] 04/08/2011 12:43:41 PM com.sun.jini.tool.ClassServer terminate
[java] INFO: ClassServer terminated [port 9082]
[java] 04/08/2011 12:43:41 PM com.sun.jini.tool.ClassServer terminate
[java] INFO: ClassServer terminated [port 9082]
[java]
[java] TIME: 12:43:41 PM
[java]
[java] Test process was destroyed and returned code 0
[java]
com/sun/jini/test/spec/url/httpmd/handler/OpenConnectionNonExistFile.td
[java] Test Passed: OK
[java]
[java]
[java] -----------------------------------------