1.7. 使用安全授权进行代码


当您为嵌入式缓存配置安全授权并构建 DefaultCacheManager 时,它会返回一个 SecureCache,用于在调用任何操作前检查安全上下文。SecureCache 还确保应用无法检索较低级别的不安全对象,如 DataContainer。因此,您必须使用具有所需授权的身份执行代码。

在 Java 中,使用特定身份执行代码通常意味着嵌套在 PrivilegedAction 中要执行的代码,如下所示:

import org.infinispan.security.Security;

Security.doAs(subject, new PrivilegedExceptionAction<Void>() {
public Void run() throws Exception {
    cache.put("key", "value");
}
});
Copy to Clipboard Toggle word wrap

使用 Java 8,您可以按照如下所示简化前面的调用:

Security.doAs(mySubject, PrivilegedAction<String>() -> cache.put("key", "value"));
Copy to Clipboard Toggle word wrap

前面的调用使用 Security.doAs () 方法,而不是 Subject.doAs ()。您可以在 Data Grid 中使用以下任一方法,但 Security.doAs () 提供了更好的性能。

如果您需要当前的 Subject,使用以下调用从 Data Grid 上下文或从 AccessControlContext 检索它:

Security.getSubject();
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat