如何在Java中设置AccessControlContext?

5

我对Java安全方面还比较陌生,很难找到正确答案。

我有一行代码,它读取AccessController.getContext()

我想运行一个测试,模拟这个的结果。不幸的是,我不知道该怎么做。

如何设置由AccessController.getContext()返回的AccessControlContext

更新

只是为了澄清,我知道如何模拟接口。AccessController是Java安全功能。我无法找到如何设置自己的上下文,以便当方法调用AccessController.getContext()时,它返回我所选择的AccessControlContext。

1个回答

4

好的,我已经弄清楚了。基本上我试图做的是:

Subject subject = Subject.getSubject(AccessController.getContext());

为了创建一个包含SubjectAccessControlContext,您需要调用尝试获取主体的方法,如下所示:

Subject subject = new Subject();  //Set Principles here
Subject.doAs(subject, new PrivilegedAction<Void>()
{
    public Void run()
    {
        Foo.methodThatCaresAboutSubject();
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接