4.5. Kerberos를 사용하여 웹 애플리케이션에 SSO 제공

이 시나리오에서는 Kerberos를 JBoss EAP와 함께 사용하여 웹 애플리케이션에 SSO를 제공하는 방법을 보여줍니다. JBoss EAP 인스턴스는 생성되었으며 독립 실행형 서버로 실행되고 있습니다. 두 개의 웹 애플리케이션( sampleAppAsampleAppB )이 EAP1 에 배포되었습니다. 웹 애플리케이션과 EAP1 은 모두 Kerberos가 있는 데스크탑 기반 SSO를 사용하여 인증하도록 구성되었습니다.

4.5.1. 보안

JBoss EAP는 SPNEGO 인증 방법을 사용하여 Kerberos 인증을 제공합니다. Kerberos 및 SPNEGO의 세부 사항에 대한 자세한 내용은 타사 SSO 구현 섹션을 참조하십시오. JBoss EAP와 배포된 웹 애플리케이션이 인증에 Kerberos를 사용하도록 활성화하기 위해 Kerberos 서버에 연결하기 위해 kerberos-security-factory 가 생성됩니다. Kerberos 서버의 사용자에게 역할을 할당하기 위해 보안 영역, 역할 매퍼 및 보안 도메인도 생성됩니다. kerberos -security-factory를 사용하고 인증 및 역할 할당에 보안 도메인을 사용하는 http-authentication -factory 가 생성됩니다. 인증 메커니즘은 SPNEGO 인증 메커니즘을 사용하여 exampleSpnegoDomain 으로 노출됩니다. 또한 The undertow 하위 시스템은 인증에 http-authentication-factory 를 사용하도록 구성됩니다.

sampleAppAsampleAppB 는 모두 exampleSpnegoDomain 을 사용하여 인증을 수행하고 권한 부여를 위한 사용자의 역할을 가져오도록 구성됩니다. 두 애플리케이션 모두 보안 토큰을 운영 체제에서 브라우저로 전달할 수 없는 경우 FORM 인증을 대체 인증 메커니즘으로 구성할 수도 있습니다. FORM 인증이 대체로 구성된 경우 지원 보안 도메인과 함께 추가 인증 메커니즘을 구성해야 합니다. 이 인증 메커니즘은 Kerberos 및 SPNEGO 와 독립적이며 FORM 인증을 지원하기만 하면 됩니다. 이 경우 FORM 인증을 위해 추가 메커니즘 및 지원 보안 도메인이 구성되어 exampleFormDomain 으로 노출되었습니다. 각 애플리케이션은 exampleFormDomain 을 사용하고 대체로 FORM 인증을 제공하도록 구성됩니다. 각 애플리케이션은 또한 경로 /secure/* 를 보안하도록 구성되며 권한 부여를 처리하기 위한 고유한 역할 목록을 제공합니다.

4.5.2. 작동 방식

Kerberos 서버에 다음 사용자가 생성되었습니다.

표 4.5. Kerberos 사용자

사용자 이름암호

Sande

samplePass

Andrea

samplePass

Betty

samplePass

Chuck

samplePass

다음 역할은 보안 도메인을 사용하여 사용자에게 매핑됩니다.

표 4.6. 사용자 역할

사용자 이름역할

Sande

모두

Andrea

A

Betty

B

Chuck

 

다음 역할도 각 애플리케이션에 구성되어 있습니다.

표 4.7. 애플리케이션 역할

애플리케이션/SP허용된 역할

sampleAppA

모두, A

sampleAppB

all, B

시작 시 EAP1 은 핵심 서비스를 로드한 다음 elytron 및 기타 하위 시스템을 로드합니다. kerberos-security-factory 는 Kerberos 서버에 대한 연결을 설정합니다. sampleAppAsampleAppB 는 모두 배포되며 인증을 위해 exampleSpnegoDomainexampleFormDomain 에 연결합니다.

Sande는 Kerberos로 보호되는 컴퓨터에 로그인했습니다. 브라우저를 열고 sampleAppA/secure/hello.html 에 액세스를 시도합니다. 보안이 필요하므로 인증이 필요합니다. EAP1 은 브라우저에서 키 요청을 Kerberos 서버, 특히 컴퓨터에 구성된 Kerberos 키 배포 센터로 보내도록 지시합니다. 브라우저가 키를 얻은 후 sampleAppA로 전송됩니다. sampleAppA 는 압축 해제되고 kerberos-security-factory 에서 구성된 Kerberos 서버와 함께 인증이 수행되는 exampleSpnegoDomain 을 JBoss EAP로 보냅니다. 티켓이 인증되면 Sande의 역할은 인증을 수행하기 위해 sampleAppA 로 다시 전달됩니다. Sande는 all 역할이 있으므로 sampleAppA/secure/hello.html 에 액세스할 수 있습니다. Sande가 sampleAppB/secure/hello.html 에 액세스하려고 하면 동일한 프로세스가 수행됩니다. 모든 역할을 갖기 때문에 액세스 권한이 부여됩니다. Andrea와 Betty는 동일한 프로세스를 따르지만 Andrea는 sampleAppA/secure/hello.html 에만 액세스할 수 있고 sampleAppB/secure/hello.html 에는 액세스할 수 없습니다. Betty는 반대로, sampleAppA/secure/hello.html 에 액세스하고 sampleAppA/secure/hello.html 에 액세스할 수 없습니다. Chuck은 sampleAppA/secure/hello.html 또는 sampleAppB/secure/hello.html 에 인증을 전달하지만 역할이 없으므로 액세스 권한이 부여되지 않습니다.

Sande가 Kerberos가 보안하지 않은 컴퓨터에서 sampleAppA/secure/hello.html 에 액세스하려는 경우(예: 사무실 네트워크에 연결된 개인 랩톱) FORM 로그인 페이지로 대체로 이동합니다. 그런 다음 대체 인증 메커니즘을 사용하여 자격 증명이 인증되고 프로세스는 권한 부여를 계속합니다.