使用 Microsoft Entra 现代化遗留 SSO,保护本地应用无需重写代码

发布: (2026年3月16日 GMT+8 13:23)
6 分钟阅读
原文: Dev.to

I’m happy to translate the article for you, but I need the full text you’d like translated. Could you please paste the content (or the portion you want translated) here? I’ll keep the source line exactly as you provided and translate the rest into Simplified Chinese while preserving the original formatting.

问题

  • 传统平台(SiteMinder、PingFederate 等)许可费用高且维护成本大。
  • 应用程序通常部署在 Oracle WebLogic、Tomcat、Apache、JBoss 等服务器上。
  • 它们使用 基于 HTTP 头的身份验证,而非现代协议(OAuth2、OpenID Connect、SAML)。
  • 将这些应用重新构建为微服务既复杂又耗时,风险也很大。

关键痛点

  • 传统 IAM 平台的高额许可费用。
  • 应用重写耗时。

更佳方案

在保留现有身份验证合约的同时,现代化 identity control plane
Microsoft Entra Application Proxyheader‑based SSO 让您能够:

  1. 将身份验证迁移到 Entra,无需更改应用程序代码。
  2. 逐步淘汰 传统的访问管理平台,避免昂贵的续订周期。

工作原理

步骤描述
1. 用户身份验证用户使用 Microsoft Entra ID 登录。
2. 声明颁发Entra 发放身份声明(例如 upngroups)。
3. 标头转换应用代理将这些声明映射为 HTTP 标头。
4. 转发将标头注入并转发到本地应用。
5. 传统应用使用应用读取它一直期望的相同标头(例如 SM_USER=john.doeSM_ROLE=Admin)。

从应用的角度来看 没有任何变化

典型集成步骤

  1. 发布 本地应用程序,通过 Microsoft Entra Application Proxy
  2. 启用 使用 Entra ID 的预身份验证。
  3. 配置基于标头的单点登录,并将身份声明映射到所需的标头。

注意: 具体的集成细节可能因平台(WebLogic、Tomcat、JBoss 等)而异。

示例平台

  • WebLogic 应用程序
  • Tomcat 或 JBoss 应用程序

可选:标题翻译层

某些应用程序需要非常特定的旧版标题(例如 SM_USERSM_ROLE)。您可以添加一个轻量级 Servlet Filter,将现代 Entra 标题转换为这些旧版名称。

// Example WebLogic filter (simplified)
public class EntraHeaderFilter implements Filter {
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;

        // Translate Entra headers to SiteMinder‑compatible ones
        String user = request.getHeader("X-ENTRA-USER");
        if (user != null) {
            request = new HeaderMapRequestWrapper(request);
            ((HeaderMapRequestWrapper) request).addHeader("SM_USER", user);
        }

        // Add other translations as needed...
        chain.doFilter(request, response);
    }
}

web.xml 中注册该过滤器:

    EntraHeaderFilter
    com.example.EntraHeaderFilter

    EntraHeaderFilter
    /*

管理组成员资格

传统应用程序经常依赖组成员资格,但身份令牌有大小限制。
一种实用的模式:

  • 定义一小组 角色头(例如 AdminApproverReviewer)。
  • 在 Entra 中将用户/组分配到这些角色。
  • 将它们作为单个标头传递:
X-ENTRA-ROLES=Admin,Approver

安全控制

基于 Header 的身份验证必须严格控制:

  • 仅可信基础设施(应用代理)应被允许注入身份验证 Header。
  • 推荐的控制措施
    • 将后端访问限制为应用代理连接器的 IP。
    • 阻止对应用服务器的直接互联网访问。
    • 强制执行 Entra 预身份验证。
    • 启用条件访问和多因素认证(MFA)。

如果正确实施,此架构相较于传统网关可以 提升安全姿态

好处

好处描述
成本降低消除昂贵的传统 IAM 许可证。
零代码更改无需重写应用程序逻辑。
集中身份利用 Microsoft Entra 实现单点登录 (SSO)、多因素认证 (MFA) 和条件访问。
简化基础设施减少访问网关组件的数量。
增强安全性现代认证、条件策略以及降低的攻击面。
快速现代化将数百个传统应用迁移到现代身份生态系统,风险最小。

结束语

许多组织认为,现代化身份管理需要对遗留应用进行全面重写。最快、风险最低的路径是 保留现有身份契约,同时对认证层进行现代化。通过结合 Microsoft Entra Application Proxy基于标头的单点登录(SSO),以及可选的 兼容性过滤器,企业可以在无需大规模重新开发的情况下,将遗留工作负载迁移到现代身份框架中。

如果您负责现代化企业身份架构,这种方法可以节省数年的工程工作量和大量的许可费用。

降低 IAM 平台成本

节省 d 百万的 IAM 平台成本。

即将发布的后续文章

在下一篇文章中,我将详细讲解在企业 Java 环境中实现此架构的配置步骤,涵盖:

  • 将 WebLogic 配置为使用 Microsoft Entra 的 SAML 服务提供者
  • 为 Tomcat 和 JBoss 应用实现基于 servlet 的请求拦截
  • 将 Entra 身份声明映射到传统的 Header 合约
0 浏览
Back to Blog

相关文章

阅读更多 »