보안을 위해 Kerberos(KRB5) 인증 메커니즘 지원
Kerberos 인증 메커니즘을 사용하면 Kerberos 인증을 지원하는 다른 애플리케이션(예: .NET, DB2® 및 기타)과의 상호 운용성이 가능합니다. 이는 싱글 사인온(SSO) 엔드투엔드 상호운영 가능한 솔루션을 제공하고 원래 요청자 ID는 보존합니다.
Kerberos의 개념
Kerberos는 테스트 시기를 통과했으며 현재는 버전 5.0입니다. Kerberos는 광범위한 플랫폼 지원(예: Windows, Linux, Solaris, AIX® 및 z/OS®)을 제공합니다. 이는 Kerberos 소스 코드가 처음에 작성된 곳인 MIT(Massachusetts Institute of Technology)에서 이 코드를 무료로 다운로드할 수 있기 때문입니다.
Kerberos는 클라이언트, 서버 및 Kerberos 키 분배 센터(KDC)로 알려진 신뢰 써드파티의 세 개의 파트로 구성되어 있습니다. KDC는 인증 및 티켓 부여 서비스를 제공합니다.
KDC는 범주 내의 모든 보안 프린시펄에 대한 사용자 계정의 저장소 또는 데이터베이스를 유지보수합니다. 많은 Kerberos 분배는 Kerberos 프린시펄 및 정책 DB에 파일 기반 저장소를 사용하고 나머지는 LDAP(Lightweight Directory Access Protocol)을 저장소로 사용합니다.
Kerberos는 그룹(즉, iKeys 그룹 또는 사용자 또는 프린시펄 그룹)의 개념을 지원하지 않습니다. KDC는 계정 데이터베이스에서 각 프린시펄에 대해 장기 키를 유지보수합니다. 이 장기 키는 프린시펄의 비밀번호에서 파생된 것입니다. KDC 및 프린시펄이 표시하는 사용자만이 장기 키 또는 비밀번호가 무엇인지를 알아야 합니다.
Kerberos를 인증 메커니즘으로 사용 시 이점
Kerberos를 WebSphere Application Server의 인증 메커니즘으로 사용 시 이점은 다음과 같습니다.
- Kerberos 프로토콜은 표준입니다. 이를 사용하면 Kerberos 인증을 지원하는 다른 애플리케이션(예: .NET, DB2 및 기타)과의 상호 운용성이 가능합니다. 이는 싱글 사인온(SSO) 엔드투엔드 상호운영 가능한 솔루션을 제공하고 원래 요청자 ID는 보존합니다.
- Kerberos 인증을 사용할 때에는 사용자의 명확한 텍스트 비밀번호가 사용자 시스템에 남지 않습니다. 사용자는 사용자 비밀번호의 단방향 해시 값을 사용하여 KDC로부터 Kerberos 티켓 부여 티켓(TGT)을 인증하고 구합니다. 사용자는 또한 TGT를 사용하여 KDC로부터 Kerberos 서비스 티켓을 구합니다. 클라이언트 ID를 표시하는 Kerberos 서비스 티켓이 인증을 위해 WebSphere Application Server로 전송됩니다.
- Java 클라이언트는 WebSphere Application Server에 인증하기 위해 Kerberos 신임 정보 캐시를 사용하여 Kerberos SSO에 참여할 수 있습니다.
- HTTP 프로토콜을 사용하는 J2EE, 웹 서비스, .NET 및 웹 브라우저 클라이언트는
SPNEGO(Simple and Protected GSS-API Negotiation Mechanism) 토큰을 사용하여
WebSphere Application Server에 인증하고 SPNEGO 웹 인증을
사용하여 SSO에 참여할 수 있습니다. 웹 인증 서비스로서 SPNEGO에 대한 지원은
이 WebSphere Application Server 릴리스의 새로운 기능입니다.
자세한 정보는 SPNEGO 웹 인증을 사용한 HTTP 요청에 대한 싱글 사인온의 내용을 읽어보십시오.
- WebSphere Application Server는 Kerberos와 LTPA(Lightweight Third-Party Authentication) 인증 메커니즘을 둘 다 동시에 지원할 수 있습니다.
- Kerberos 인증을 사용하는 서버 간 통신이 제공됩니다.
단일 Kerberos 범주 환경에서 Kerberos 인증
WebSphere Application Server는 다음 그림에 표시된 대로 단일 Kerberos 범주 환경에서 Kerberos 인증을 지원합니다.

WebSphere Application Server가 인증을 위해 Kerberos 또는 SPNEGO 토큰을 수신하면 Kerberos 서비스 프린시펄(SPN)을 사용하여 요청자와의 보안 컨텍스트를 설정합니다. 보안 컨텍스트가 설정되면 WebSphere Kerberos 로그인 모듈은 클라이언트 GSS 위임 신임 정보를 추출하고, Kerberos 인증을 기반으로 Kerberos 인증 토큰을 작성하고 이를 다른 토큰과 함께 클라이언트 주제에 배치합니다.
서버가 다운스트림 서버 또는 백엔드 자원을 사용해야 하는 경우에는 클라이언트 GSS 위임 신임 정보를 사용합니다. 다운스트림 서버가 Kerberos 인증을 지원하지 않는 경우 서버는 Kerberos 토큰 대신에 LTPA 토큰을 사용합니다. 클라이언트가 요청에 GSS 위임 신임 정보를 포함하지 않은 경우 서버는 다운스트림 서버에 LTPA 토큰을 사용합니다. Kerberos 인증 토큰 및 프린시펄이 보안 속성 전파 기능의 일부로 다운스트림 서버로 전파됩니다.
WebSphere Application Server 및 KDC가 동일한 사용자 레지스트리를 사용하지 않는 경우에는 Kerberos 프린시펄 이름을 WebSphere 사용자 이름으로 맵핑하기 위해서는 JAAS 사용자 정의 로그인 모듈이 필요합니다.
크로스 또는 신뢰 Kerberos 범주 환경에서 Kerberos 인증
WebSphere Application Server는 다음 그림에 표시된 대로 크로스 또는 신뢰 Kerberos 범주 환경에서도 Kerberos 인증을 지원합니다.

WebSphere Application Server가 인증을 위해 Kerberos 또는 SPNEGO 토큰을 수신하면 Kerberos 서비스 프린시펄(SPN)을 사용하여 요청자와의 보안 컨텍스트를 설정합니다. 보안 컨텍스트가 설정되면 WebSphere Kerberos 로그인 모듈은 항상 클라이언트 GSS 위임 신임 정보 및 Kerberos 티켓을 추출하고 이를 다른 토큰과 함께 클라이언트 주제에 배치합니다.
서버가 다운스트림 서버 또는 백엔드 자원을 사용해야 하는 경우에는 클라이언트 GSS 위임 신임 정보를 사용합니다. 다운스트림 서버가 Kerberos 인증을 지원하지 않는 경우 서버는 Kerberos 토큰 대신에 LTPA 토큰을 사용합니다. 클라이언트가 요청에 GSS 위임 신임 정보를 포함하지 않은 경우 서버는 다운스트림 서버에 LTPA 토큰을 사용합니다. Kerberos 인증 토큰 및 프린시펄이 보안 속성 전파 기능의 일부로 다운스트림 서버로 전파됩니다.
WebSphere Application Server 및 KDC가 동일한 사용자 레지스트리를 사용하지 않는 경우에는 Kerberos 프린시펄 이름을 WebSphere 사용자 이름으로 맵핑하기 위해서는 JAAS 사용자 정의 로그인 모듈이 필요합니다.
이 WebSphere Application Server 릴리스에서 새 보안 다중 도메인은 셀 레벨에서만 Kerberos를 지원합니다. 모든 WebSphere Application Server는 동일한 Kerberos 범주에서 사용됩니다. 그러나 Kerberos 인증을 지원하는 클라이언트 및/또는 백엔드 자원(예: DB2, .NET 서버 및 기타)에는 각자의 Kerberos 범주가 있을 수 있습니다. 피어 투 피어 및 전이 신뢰 크로스 범주 인증만이 지원됩니다. 신뢰 Kerberos 범주의 경우 다음 단계를 수행해야 합니다.
- 각 Kerberos KDC에서 Kerberos 신뢰 범주 설정을 수행해야 합니다. Kerberos 신뢰 범주 설정에 대한 자세한 정보는 Kerberos 관리자 및 사용자 안내서를 참조하십시오.
- Kerberos 구성 파일은 신뢰 범주를 나열해야 할 수도 있습니다.
- 관리 콘솔에서 를 클릭하여 Kerberos 신뢰 범주를 추가하십시오.
다음 그림은 신뢰 Kerberos 범주에서 Kerberos 토큰을 사용하여 WebSphere Application Server에 인증하기 위해 Kerberos 신임 정보 캐시를 사용하는 Java 및 관리 클라이언트를 보여줍니다.

- 클라이언트가 Kerberos 신임 정보 캐시를 사용합니다(있는 경우).
- 클라이언트가 Kerberos 신임 정보 캐시를 사용하여 Realm B KDC에서 Realm A에 대한 크로스 범주 티켓(TGS_REQ)을 요청합니다.
- 클라이언트는 크로스 범주 티켓을 사용하여 Realm A KDC로부터 server1(TGS_REQ)에 대한 Kerberos 서비스 티켓을 요청합니다.
- KDC(TGS_REP)에서 리턴된 Kerberos 토큰이 CSIv2 메시지 인증 토큰에 추가되고 인증을 위해 server1로 전송됩니다.
- 서버는 서버 Kerberos SPN(Service Principal Name) 및 krb5.keytab 파일의 키를 사용하여 클라이언트와의 보안 컨텍스트를 설정하기 위해 Krb5LoginModuleWrapper를 호출합니다. 서버가 클라이언트와의 보안 컨텍스트를 설정하면 이는 항상 클라이언트 GSS 위임 신임 정보 및 티켓을 추출하고 이를 클라이언트 주제에 배치합니다.
- 또는 KDC 및 WebSphere Application Server가 동일한 사용자 레지스트리를 사용하지 않는 경우에는 사용자 정의 JAAS 로그인 모듈이 필요할 수도 있습니다.
- 사용자는 WebSphere Application Server의 사용자 레지스트리에 대해 유효성을 검증했습니다.
- 결과(성공 또는 실패)가 클라이언트에 리턴됩니다.
다음 그림은 Kerberos 토큰을 사용하여 WebSphere Application Server에 인증하기 위해 Kerberos 프린시펄 이름 및 비밀번호를 사용하는 Java 및 관리 클라이언트를 보여줍니다.

- 클라이언트가 KDC로부터 Kerberos 티켓 부여(TGT)를 얻습니다.
- 클라이언트가 TGT를 사용하여 server1(TGS_REQ)에 대한 Kerberos 서비스 티켓을 얻습니다.
- KDC(TGS_REP)에서 리턴된 Kerberos 토큰이 CSIv2 메시지 인증 토큰에 추가되고 인증을 위해 server1로 전송됩니다.
- 서버는 서버 Kerberos SPN(Service Principal Name) 및 krb5.keytab 파일의 키를 사용하여 클라이언트와의 보안 컨텍스트를 설정하기 위해 Krb5LoginModuleWrapper를 호출합니다. 서버가 클라이언트와의 보안 컨텍스트를 설정하면 이는 항상 클라이언트 GSS 위임 신임 정보 및 티켓을 추출하고 이를 클라이언트 주제에 배치합니다.
- 또는 KDC 및 WebSphere Application Server가 동일한 사용자 레지스트리를 사용하지 않는 경우에는 사용자 정의 JAAS 로그인 모듈이 필요할 수도 있습니다.
- 사용자는 WebSphere Application Server의 사용자 레지스트리에 대해 유효성을 검증했습니다.
- 결과가 클라이언트로 리턴됩니다.
다음 그림은 서버 간 통신을 보여 줍니다.

WebSphere Application Server가 시작되면 이는 서버 ID와 비밀번호를 사용하여 KDC에 로그인한 다음 TGT를 얻습니다. 그런 다음 TGT를 사용하여 또 다른 서버와 통신하기 위한 서비스 티켓을 요청합니다. WebSphere Application Server가 서버 ID 및 비밀번호 대신에 내부 서버 ID를 사용하는 경우에는 서버 간 통신은 LTPA 토큰을 사용하여 수행됩니다. 이전 그림에서는 다음 이벤트가 발생합니다.
- WebSphere Application Server 1이 WebSphere Application Server 2에서 실행 중인 EJB(Enterprise JavaBeans)에서 foo() 메소드를 호출합니다.
- Server1은 Server1 TGT를 사용하여 Server2(TGS_REQ)에 대한 Kerberos 서비스 티켓을 얻습니다.
- 2단계와 동일합니다.
- KDC(TGS_REP)에서 리턴된 Kerberos 토큰이 CSIv2 메시지 인증 토큰에 추가되고 인증을 위해 Server2로 전송됩니다.
- Server2는 server2 Kerberos SPN(Service Principal Name) 및 krb5.keytab 파일의 키를 사용하여 server1과의 보안 컨텍스트를 설정하기 위해 acceptSecContext() 메소드를 호출합니다. server2가 server1과의 보안 컨텍스트를 설정하면 이는 항상 server1 GSS 위임 신임 정보 및 티켓을 추출하고 이를 주제에 배치합니다.
- 서버 ID가 WebSphere 사용자 레지스트리에서 유효성이 확인되었습니다.

Kerberos를 WebSphere Application Server의 인증 메커니즘으로 설정하기 전에 고려할 사항
WebSphere Application Server는 이제 인증을 위해 HTTP 헤더, Kerberos 토큰, LTPA 토큰 및 BasicAuth(GSSUP)에 SPNEGO 토큰을 지원합니다.
- Kerberos 신임 정보의 위임 사용 가능 옵션을 선택해야 합니다. 이 옵션에 대한 자세한 정보는 관리 콘솔을 사용하여 Kerberos를 인증 메커니즘으로 구성의 내용을 읽어보십시오.
- 클라이언트는 대상 서버가 클라이언트 위임 Kerberos 신임 정보를 추출하고 이를 다운스트림 서버로 이동하기 위해 이를 사용할 수 있도록 전달 가능하고 주소 없는 업데이트 가능한 플래그를 사용하여 티켓 부여 티켓(TGT)을 얻어야 합니다.
- 주소가 있는 클라이언트 TGT는 다운스트림 서버, DRS(Data Replication Service) 캐시 및 클러스터 환경에 사용할 수 없습니다.
- Kerberos KDC 플랫폼이 클라이언트 위임 Kerberos를 허용하는지 확인하십시오.
- 장기 실행 애플리케이션의 경우 클라이언트는 대상 서버가 위임 Kerberos를 업데이트할 수 있도록 업데이트 가능한 플래그로 TGT를 요청해야 합니다.
- 장기 실행 애플리케이션의 경우 Kerberos 티켓이 최소한 애플리케이션이 실행되는 기간 동안 유효한지 확인하십시오. 예를 들어, 애플리케이션이 5분이 걸리는 트랜잭션을 처리하는 경우에는 Kerberos 티켓은 최소 5분 동안은 유효해야 합니다.
- Kerberos 인증 및 SPNEGO 웹 인증 둘 모두 동일 포리스트 내의 활성 디렉토리 상호 도메인 신뢰에서 지원됩니다.
- 관리 에이전트가 Kerberos 인증 메커니즘을 사용할 수 있도록 하기 위해서는 LTPA 키를 관리 서브시스템 프로파일과 교환해야 합니다.
다음 보안 사용자 정의 특성은 true: com.ibm.websphere.security.krb.longLivedTicket으로 설정해야 합니다.
- 다운스트림 인증을 위해 클라이언트 위임 Kerberos 신임 정보를 사용할 계획이면 클라이언트가 10분보다 큰 서비스 티켓을 요청할 수 있는지 확인하십시오. 클라이언트 위임 Kerberos 신임 정보 지속 시간이 10분 미만이면 서버는 이를 업데이트하려고 시도합니다.
- 다음 KDC를 사용하여 Tivoli® Access Manager를 사용하는 완전한 엔드투엔드 Kerberos 지원이 사용 가능합니다.
- z/OS
- Microsoft(단일 또는 다중 범주)
- AIX
- Linux
- 이제 WebSphere Application Server 및 씬 클라이언트에 대해 Kerberos 크로스 범주를 구성 및 사용 가능하게 할 수 있습니다.
- Kerberos를 사용하는 WebSphere Application Server
관리 기능은 다음에 의해 제한됩니다.
- 유연한 관리 활동을 위해 선호되는 인증 메커니즘은 RSA(Rivest Shamir Adleman) 인증 메커니즘(기본값)입니다.
- Kerberos가 관리 인증으로 구성된 작업 관리자는 크로스 Kerberos 범주를 지원하지 않습니다. 이들은 등록된 노드와 동일한 Kerberos 범주에 있어야 하거나 관리 인증을 RSA로 설정해야 합니다.
- Kerberos 인증은 관리 클라이언트(wsadmin 또는 Java 클라이언트)에서 지원되지만 이 관리 클라이언트가 관리하는 WebSphere Application Server와 동일한 KDC 범주를 사용해야 합니다. 그렇지 않은 경우 사용자 ID와 비밀번호가 권장됩니다.
- 일부 노드가 WebSphere Application Server Release 6.x 노드 이하인 경우에는 혼합 셀 Kerberos 및 LTPA 구성은 지원되지 않습니다.
Kerberos 인증에 대한 지원 정보
- 동일 포리스트에 있지 않은 외부 도메인 신뢰
- 동일 포리스트 내에서 도메인 신뢰
- Kerberos 범주 신뢰
- 크로스 포리스트 신뢰
- 포리스트 외부 신뢰
Kerberos를 WebSphere Application Server의 인증 메커니즘으로 설정
순수한 Java 클라이언트에서 Kerberos를 인증 메커니즘으로 설정
일반 사용자는 순수 Java 클라이언트에 Kerberos 인증 메커니즘을 선택적으로 설정할 수 있습니다. 자세한 정보는 Kerberos에 대한 Java 클라이언트 인증 구성의 내용을 읽어보십시오.