2.3. 使用 Elytron 进行身份切换


2.3.1. 在服务器到服务器 EJB 调用中切换身份

默认情况下,当您远程调用部署到应用服务器的 EJB 时,用于远程服务器上身份验证的身份与源服务器上所用的相同。在某些情况下,您可能希望在不同身份的安全上下文中运行远程受保护的 EJB。

您可以使用 Elytron API 在服务器到服务器 EJB 调用中切换身份。执行此操作时,通过连接接收的请求将作为新请求执行,使用 API 调用中以编程方式指定的身份。

以下代码示例演示了如何切换用于远程 EJB 身份验证的身份。securityDomain.authenticate() 方法传递的 remoteUsername 和 remotePassword 参数是用于目标服务器上身份验证的身份凭据。

示例:在服务器到服务器 EJB 调用中切换身份

SecurityDomain securityDomain = SecurityDomain.getCurrent();
Callable<T> forwardIdentityCallable = () -> {
    return AuthenticationContext.empty()
            .with(MatchRule.ALL,
                    AuthenticationConfiguration.empty()
                    .setSaslMechanismSelector(SaslMechanismSelector.ALL)
                    .useForwardedIdentity(securityDomain))
            .runCallable(callable);
};

securityDomain.authenticate(remoteUsername, new PasswordGuessEvidence(remotePassword.toCharArray())).runAs(forwardIdentityCallable);
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat