Microsoft Entra로 레거시 SSO 현대화, 코드를 다시 작성하지 않고 온프렘 앱 보호
I’m happy to translate the article for you, but I need the full text of the post in order to do so. Could you please paste the article’s content (or the portions you’d like translated) here? I’ll keep the source line exactly as you provided and preserve all formatting, markdown, and technical terms while translating the rest into Korean.
문제
- 레거시 플랫폼(SiteMinder, PingFederate 등)은 라이선스 비용과 지원 비용이 많이 듭니다.
- 애플리케이션은 종종 Oracle WebLogic, Tomcat, Apache, JBoss 등에서 호스팅됩니다.
- 현대 프로토콜(OAuth2, OpenID Connect, SAML)이 아니라 HTTP‑헤더 기반 인증을 사용합니다.
- 이러한 앱을 마이크로서비스로 재구성하는 것은 복잡하고 시간도 많이 들며 위험이 큽니다.
핵심 문제점
- 레거시 IAM 플랫폼의 높은 라이선스 비용.
- 애플리케이션 재작성에 소요되는 시간.
더 나은 접근 방식
기존 인증 계약을 유지하면서 identity control plane을 현대화합니다.
Microsoft Entra Application Proxy와 header‑based SSO를 사용하면 다음을 수행할 수 있습니다:
- 애플리케이션 코드를 변경하지 않고 인증을 Entra로 마이그레이션합니다.
- 레거시 접근 관리 플랫폼을 점진적으로 폐기하고 비용이 많이 드는 갱신 주기를 피합니다.
작동 방식
| 단계 | 설명 |
|---|---|
| 1. 사용자 인증 | 사용자는 Microsoft Entra ID로 로그인합니다. |
| 2. 클레임 발급 | Entra는 신원 클레임을 발급합니다(예: upn, groups). |
| 3. 헤더 변환 | Application Proxy가 해당 클레임을 HTTP 헤더로 매핑합니다. |
| 4. 전달 | 헤더가 삽입되어 온‑프레미스 앱으로 전달됩니다. |
| 5. 레거시 앱 사용 | 앱은 항상 기대하던 동일한 헤더를 읽습니다(예: SM_USER=john.doe, SM_ROLE=Admin). |
앱 관점에서는 변경 사항이 없습니다.
Typical Integration Steps
- Publish the on‑premises app via Microsoft Entra Application Proxy.
- Enable pre‑authentication with Entra ID.
- Configure header‑based SSO and map identity claims to the required headers.
Note: The exact integration details may vary by platform (WebLogic, Tomcat, JBoss, etc.).
Example Platforms
- WebLogic applications
- Tomcat or JBoss applications
Optional: Header Translation Layer
Some apps expect very specific legacy headers (e.g., SM_USER, SM_ROLE).
You can add a lightweight Servlet Filter that translates modern Entra headers into those legacy names.
// 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);
}
}Register the filter in web.xml:
EntraHeaderFilter
com.example.EntraHeaderFilter
EntraHeaderFilter
/*그룹 멤버십 관리
레거시 애플리케이션은 종종 그룹 멤버십에 의존하지만, ID 토큰에는 크기 제한이 있습니다.
실용적인 패턴:
- 작은 집합의 역할 헤더를 정의합니다(예:
Admin,Approver,Reviewer). - Entra에서 사용자/그룹을 이러한 역할에 할당합니다.
- 단일 헤더로 전달합니다:
X-ENTRA-ROLES=Admin,Approver보안 제어
헤더 기반 인증은 엄격히 제어되어야 합니다:
- 신뢰할 수 있는 인프라(Application Proxy)만 인증 헤더를 삽입하도록 허용해야 합니다.
- 권장 제어:
- 백엔드 접근을 Application Proxy 커넥터 IP로 제한합니다.
- 애플리케이션 서버에 대한 직접 인터넷 접근을 차단합니다.
- Entra 사전 인증을 적용합니다.
- 조건부 액세스와 MFA를 활성화합니다.
올바르게 구현될 경우, 이 아키텍처는 레거시 게이트웨이에 비해 보안 태세를 향상시킬 수 있습니다.
혜택
| 혜택 | 설명 |
|---|---|
| 비용 절감 | 고가의 레거시 IAM 라이선스를 제거합니다. |
| 코드 변경 없음 | 애플리케이션 로직을 다시 작성할 필요가 없습니다. |
| 중앙 집중식 아이덴티티 | SSO, MFA, 조건부 액세스를 위해 Microsoft Entra를 활용합니다. |
| 간소화된 인프라 | 액세스‑게이트웨이 구성 요소 수를 줄입니다. |
| 보안 강화 | 최신 인증, 조건부 정책, 그리고 공격 표면 감소. |
| 빠른 현대화 | 수백 개의 레거시 앱을 최소 위험으로 현대적인 아이덴티티 생태계로 이동합니다. |
Closing Thought
많은 조직은 아이덴티티 현대화가 레거시 애플리케이션의 전면 재작성을 필요로 한다고 가정합니다. 가장 빠르고 위험이 적은 경로는 인증 레이어를 현대화하면서 기존 아이덴티티 계약을 유지하는 것입니다. Microsoft Entra Application Proxy, 헤더 기반 SSO, 그리고 선택적인 호환성 필터를 결합함으로써 기업은 대규모 재개발 없이 레거시 워크로드를 현대적인 아이덴티티 프레임워크로 전환할 수 있습니다.
기업 아이덴티티 아키텍처를 현대화하는 책임이 있다면, 이 접근 방식은 수년간의 엔지니어링 노력과 상당한 라이선스 비용을 절감할 수 있습니다.
IAM 플랫폼 비용 절감
IAM 플랫폼 비용을 d백만 달러 절감합니다.
Upcoming Follow‑Up Article
In the next article, I will walk through the detailed configuration steps for implementing this architecture in enterprise Java environments, covering:
- Configuring WebLogic as a SAML Service Provider with Microsoft Entra
- Implementing servlet‑based request interception for Tomcat and JBoss applications
- Mapping Entra identity claims to legacy header contracts