개요
Active Directory 환경에서는 통합 Windows 인증(Kerberos)을 사용하여 사용자가 Windows에 로그인한 자격 증명을 그대로 사용하고,C&M에 추가 로그인 없이 CAMServer에 자동 로그인(SSO) 수 있습니다.
전통적으로이 메커니즘은 IIS / ASP.NET을 사용하여 빌드해야했습니다.이 기능은 CAMServer가 직접 Kerberos 인증을 처리합니다. 이렇게 하면 IIS와 같은 추가 서버를 제공하지 않고도 보다 간단한 구성으로 Windows 통합 인증을 통해 SSO를 구현할 수 있습니다.

SSO 흐름

SSO 처리 흐름
- CAMServer에 액세스
사용자가 브라우저에서 CAMServer에 액세스. 액세스 할 때 응용 프로그램의 임시 토큰을 POST로 전송 - 인증 요청
CAMServer는 임시 토큰 검증 후 브라우저에 Windows 인증(Negotiate)을 요청 - Kerberos 티켓 취득
브라우저는 Windows 로그온 정보를 이용하여,
Active Directory KDC에서 Kerberos 서비스 티켓 얻기 - Kerberos 티켓 전송
브라우저는 취득한 Kerberos 티켓을
HTTP 헤더에 부여하고 CAMServer로 재전송 - 티켓 검증
CAMServer는 keytab을 이용하여 Kerberos 티켓을 검증. 유효성 검사가 성공하면 티켓에 포함된 Kerberos principal을 가져옵니다. - LDAP 검색과 CAM 사용자 일치
취득한 Kerberos principal로부터 LADP 검색을 실시해 AD의 유저 정보를 취득해, CAMServer에 등록되어 있는 유저와 대조. 일치하는 경우 로그인 허용 - 로그인 완료
CAMServer는 로그인 세션을 발행하고,
사용자는 로그인 화면을 표시하지 않고 CAMServer를 사용할 수 있습니다.
Windows 인증을 실시하는 FQDN 이외로 액세스했을 경우나, 도메인에 참가하고 있지 않는 PC로부터의 액세스의 경우는, C&M상의 로그인 인증이 행해집니다.
작동 요구사항
이 기능을 이용하려면 다음 환경이 필요합니다.
Active Directory 환경
- Active Directory 도메인이 구축되었음
CAMServer
- Ultimate 플랜사용하는 것
- CAMServer에 FQDN으로 액세스 할 수 있어야합니다.
- CAMServer를 실행하는 Windows Server가 Active Directory 도메인에 가입되어 있음
기존 Windows Server가 참여하는 도메인을 확인하려면 서버 관리자 → 왼쪽 메뉴 로컬 서버 클릭 → 컴퓨터 이름을 클릭하고 도메인 열을 참조하십시오.
이용 사용자
- 사용자 PC가 도메인에 가입하고 Windows에 도메인 로그온했음
- SSO 대상 사용자는 사용자 ID가 UserPrincipalName (UPN 형식)으로 CAMServer에 사전 등록되어 있습니다 (예 user@camtest.com)
대응 브라우저
다음 브라우저에서 Windows 인증 SSO를 사용할 수 있습니다.
- Microsoft Edge
- Google 크롬
- camapp
로드 밸런서 구성 정보
Windows 인증(Kerberos)은 HTTP 인증 헤더에 의한 협상을 실시하는 인증 방식이기 때문에, CAMServer를 443 포트로 기동한 채로, 로드 밸런서는 L4(TLS 패스 스루)가 필요합니다.
권장 구성
사용자 ──HTTPS──▶ L4 로드 밸런서(TLS 패스스루) ── HTTPS──▶ CAMServer(443)
NG 구성
사용자 ──HTTPS──▶ L7 로드 밸런서(SSL 종단) ──HTTP──▶ CAMServer(8080)
구축 절차
이하 구축 순서에서는, 「구성예」를 바탕으로 설명합니다.
구성 예
- Windows 인증을 수행하는 FQDN:
https://test.chat-messenger.com - Active Directory 도메인 이름:
camtest.com - 서비스 계정:
cam-svc@camtest.com(CAMTEST\cam-svc)
SPN 등록 개요
SPN (Service Principal Name)은 Kerberos 인증에서 특정 서비스를 Active Directory에서 고유하게 식별하는 이름입니다. FQDN으로 액세스하는 경우 SPN을 등록하면 클라이언트가 액세스할 서비스에 대해 Kerberos 티켓을 올바르게 요청할 수 있습니다.
예를 들면 https://test.chat-messenger.com 에 액세스할 때 클라이언트(브라우저)는 Active Directory에 "HTTP/test.chat-messenger.com이라는 서비스에 연결하고 싶다"고 티켓을 요청합니다. Active Directory는 해당 SPN이 어떤 계정에 연결되어 있는지 확인하고 해당 서비스 티켓을 발급합니다. SPN이 제대로 등록되지 않으면 Kerberos 인증이 실패합니다.
서비스 계정
Kerberos 인증을 위한 서비스 계정을 만듭니다. 도메인 사용자라면 가능하지만 일반적으로 사용자와 서비스 계정을 분리하고 오작동 및 비밀번호 정책의 범위를 명확히하기 위해,OU=ServiceAccounts 처럼 OU 사용자 구별 Active Directory 도메인 컨트롤러에서,cam-svc 을 만듭니다.
계정 옵션에서 다음을 확인하세요.
- 비밀번호 무기한
- 이 계정으로 Kerberos AES 256비트 암호화 지원


서비스 계정으로 SPN 등록
setspn -S HTTP/test.chat-messenger.com CAMTEST\cam-svc위에서 만든 서비스 계정으로 SPN 등록을 수행합니다.
· 도메인에 참여하는 모든 단말기에서 OK. 그러나 도메인 관리자 권한이 필요합니다.
· HTTPS 통신에서도 SPN은HTTP/호스트 이름형식으로 등록해야합니다.
다음 명령으로 SPN이 등록되었는지 확인합니다.
setspn -L CAMTEST\cam-svckeytab 만들기
CAMServer가 Kerberos 티켓을 확인할 수 있도록 서비스 계정의 keytab 파일을 만듭니다. Active Directory 관리 서버에서 다음 명령을 실행합니다.
ktpass /out CAMServer\config\windowsAuth\cam.keytab /princ HTTP/test.chat-messenger.com@CAMTEST.COM /mapuser CAMTEST\cam-svc /ptype KRB5_NT_PRINCIPAL /crypto AES256-SHA1 /pass "*******"CAMServer 설정
Windows 인증을 이용하려면 CAMServer 구성 파일(boot.ini)에 다음을 추가합니다. 각 값은 환경별로 대체하십시오.
# Kerberos レルム(通常は Active Directory ドメイン名を大文字で指定)
# 例: camtest.com ドメイン → CAMTEST.COM
cam.windowsAuth.realm=CAMTEST.COM
# Windows認証を行うFQDN
cam.windowsAuth.FQDN=test.chat-messenger.com
# Kerberos KDC
# 通常は Active Directory のドメインコントローラのFQDN。ポートTCP/UDP 88 は Kerberos 標準ポートでリッスンされている
cam.windowsAuth.kdc=ad.camtest.com:88
인터넷 옵션 설정
CAMServer의 FQDN을 인트라넷 영역에 추가
인터넷 옵션을 선택하고 보안 탭을 클릭하고 로컬 인트라넷을 선택합니다. 사이트 버튼을 클릭하고 고급 설정을 선택하여 사이트 URL (https://test.chat-messenger.com) 추가
자동 로그온 확인
레벨 사용자 정의를 클릭하고 사용자 인증 → 로그온에서 인트라넷 영역에서 자동으로 로그온을 선택했는지 확인하십시오.


IIS 통합 Windows 인증을 사용하여 SSO에서 마이그레이션
- IIS 기능 제거(서버 관리자의 관리 > 역할 및 기능 제거)
- ASP.NET Core Hosting Bundle 제거
- 서비스 계정에 "이 계정으로 Kerberos AES 256비트 암호화 지원'체크
- keytab 만들기
- 인터넷 옵션 설정에서 인트라넷 영역에 추가 CAMServer FQDN 추가(추가되지 않은 경우)
- 로드 밸런서가 L7에서 CAMServer와 함께 작동하는 경우 CAMServer에 SSL 인증서를 배치하고 L4에서 연결
