搜索

4.2.6. 使用 ElytronAuthenticator 传播身份

download PDF
警告

由于 Java 8 中已知的凭证限制,不支持或推荐在 JBoss EAP 中使用 ElytronAuthenticator。在使用此类传播身份时,请注意以下限制:

  • 由于 Java 8 设计的限制,安全身份传播不适用于调用受保护 servlet。
  • 不要在服务器上使用 ElytronAuthenticator,如 EJB 中的 ElytronAuthenticator。
  • 凭据缓存可能会影响其在独立客户端 JVM 中的使用。

JBoss EAP 7.1 引入了 ElytronAuthenticator 类,它使用当前安全上下文来执行身份验证。org.wildfly.security.auth.util.ElytronAuthenticator 类是 java.net.Authenticator 实施。

  • 它有一个构造器 ElytronAuthenticator(),用于构建新实例。
  • 它有一个方法 getPasswordAuthentication(),它返回 PasswordAuthentication 实例。

以下是客户端代码示例,它创建并使用 ElytronAuthenticator 类向服务器传播身份:

示例:使用 ElytronAuthenticator 代码

// Create the authentication configuration
AuthenticationConfiguration httpConfig = AuthenticationConfiguration.empty().useName("bob");

// Create the authentication context
AuthenticationContext context = AuthenticationContext.captureCurrent().with(MatchRule.ALL, httpConfig.usePassword(createPassword(httpConfig, "secret")));

String response = context.run((PrivilegedExceptionAction<String>) () -> {
    Authenticator.setDefault(new ElytronAuthenticator());
    HttpURLConnection connection = HttpURLConnection.class.cast(new URL("http://localhost:" + SERVER_PORT).openConnection());
    try (InputStream inputStream = connection.getInputStream()) {
        return new BufferedReader(new InputStreamReader(inputStream)).lines().findFirst().orElse(null);
    }
});

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.