Hi,
ich bastel gerade ein wenig mit Java Security rum. Dabei habe ich folgende Beispielanwendung gebaut:
Klasse:
Der Vollständigkeit halber der CallbackHandler:
Diese Anwendung wird mit folgenden Commandline-Optionen aufgerufen:
Die jaas-test.policy sieht so aus:
Ich bekomme, obwohl ich meiner Klasse die nötigen AuthPermissions gegeben habe, folgende Exception:
Jemand eine Idee?
ich bastel gerade ein wenig mit Java Security rum. Dabei habe ich folgende Beispielanwendung gebaut:
Klasse:
Code:
public class SubjectBinding {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
// Verlangt AuthPermission "createLoginContext.jaas-text"
LoginContext lCtx = new LoginContext("jaas-test", new MyCallbackHandler());
lCtx.login();
// Verlangt AuthPermission "getSubject"
Subject s = lCtx.getSubject();
System.out.println(s.getPrincipals().toArray()[0].getClass());
File f = new File("C:\\test.txt");
f.exists(); // Verlangt FilePermission "<<ALL-FILES>>" "read"
}
}
Der Vollständigkeit halber der CallbackHandler:
Code:
public class MyCallbackHandler implements CallbackHandler {
@Override
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
for(int i = 0; i < callbacks.length; i++) {
if(callbacks[i] instanceof NameCallback) {
((NameCallback) callbacks[i]).setName("tobias");
}
else if(callbacks[i] instanceof PasswordCallback) {
((PasswordCallback) callbacks[i]).setPassword(
new char[] { 't', 'e', 's', 't' });
}
else {
throw new UnsupportedCallbackException(callbacks[i]);
}
}
}
}
Diese Anwendung wird mit folgenden Commandline-Optionen aufgerufen:
Code:
-Djava.security.auth.login.config="<<Pfad>>\auth.conf"
-Djava.security.manager
-Djava.security.policy="<<Pfad>>\jaas-test.policy"
Die jaas-test.policy sieht so aus:
Code:
grant codebase "<<Projektpfad>>/-" {
permission javax.security.auth.AuthPermission "createLoginContext.jaas-test";
permission javax.security.auth.AuthPermission "getSubject";
};
grant principal org.jboss.security.SimplePrincipal "tobias" {
permission java.io.FilePermission "<<ALL-FILES>>", "read";
};
Ich bekomme, obwohl ich meiner Klasse die nötigen AuthPermissions gegeben habe, folgende Exception:
Code:
Exception in thread "main" java.security.AccessControlException: access denied
(javax.security.auth.AuthPermission createLoginContext.jaas-test)
Jemand eine Idee?