3.3. 使用 Elytron 进行身份切换
3.3.1. 在 Server-to-server Jakarta Enterprise Beans 调用中切换身份
默认情况下,当您对部署到应用服务器的 Jakarta Enterprise Beans 进行远程调用时,用于身份验证的身份与源服务器中使用的身份相同。在某些情况下,您可能想要在不同身份的安全上下文中运行远程安全 Jakarta Enterprise Beans。
您可以使用 Elytron API 将 server-to-server Jakarta Enterprise Beans 调用中的身份切换。当您这样做时,使用在 API 调用中编程指定的身份,通过连接接收的请求作为新请求执行。
以下代码示例演示了在远程 Jakarta Enterprise Beans 上切换用于身份验证的身份。securityDomain.authenticate()
方法传递的 remoteUsername
和 remotePassword
参数是用于目标服务器上进行身份验证的身份凭证。
示例:在 Server-to-server Jakarta Enterprise Beans 调用中切换身份
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);