我做了一个休息应用程序,它本身可以正常工作。
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@Path("/helloworld")
public class HelloWorldResource
{
@GET
public String getMessage()
{
return "Hello World!";
}
}
我想从使用JAAS的客户端调用它。有两个Principal,即UserPrincipal和SystemAdminPrincipal。我想在Principal是SystemAdminPrincipal时调用Web服务。我正在使用URLPermission来授予权限和apache HttpClient来执行get方法。政策文件是
grant Principal UserPrincipal "user"
{
};
grant Principal SysAdminPrincipal "sysadmin"
{
permission java.net.URLPermission "http://localhost:8080/HelloWorldREST/helloworld","GET";
};
但即使是SystemAdminPrincipal,我也遇到安全异常。可能我的情况是URLPermission的使用有问题。有人可能会指出如何正确使用URLPermission.Thanks。
答案 0 :(得分:2)
策略文件应在授予URLPermission之前授予套接字权限。策略文件应为。
grant Principal SysAdminPrincipal "sysadmin"
{
permission java.net.SocketPermission "127.0.0.1:8080","connect,resolve";
permission java.net.URLPermission "http://localhost:8080/HelloWorldREST/helloworld","GET";
};
grant Principal UserPrincipal "user"
{
};