Kerberos SSO(Single Sign-On) 설정 가이드
회사 개요
케르베로스는 암호화 기반 인증 프로토콜 애플리케이션에 대한 액세스를 보호합니다. 이 프로토콜은 안전하지 않은 네트워크를 통해 보안 인증을 제공하도록 설계되었습니다. Kerberos의 핵심 아이디어는 암호가 인터넷을 통해 전송되는 것을 방지하면서 사용자를 인증하는 것입니다.
WordPress를 위한 간편한 LDAP/Active Directory 통합 Video.
Kerberos 용어:
케르베로스: Kerberos는 SSO(Single Sign-On) 개념을 지원하는 인증 프로토콜입니다. HTTP의 경우 Kerberos에 대한 지원은 일반적으로 "SPNEGO" 인증 메커니즘이라는 용어를 사용하여 제공됩니다.
Kerberos 영역: 인증을 위한 관리 도메인은 영역이라는 용어로 표시됩니다. 그 목표는 인증 서버가 사용자, 호스트 또는 서비스를 인증할 수 있는 시기에 대한 제한을 정의하는 것입니다. 이는 인증이 발생하기 위해 사용자와 서비스가 동일한 영역의 구성원이어야 함을 의미하지는 않습니다. 두 개체가 서로 다른 영역에 속함에도 불구하고 신뢰 연결을 통해 연결되어 있으면 인증이 계속 발생할 수 있습니다.
교장: Kerberos 시스템에서 Kerberos 주체는 Kerberos가 Kerberos 인식 서비스에 액세스하기 위해 티켓을 발급할 수 있는 고유한 ID를 나타냅니다. "/" 구분 기호는 주체 이름을 구성하는 다양한 구성 요소를 구분하는 데 사용됩니다. "@" 문자를 사용하면 영역을 이름의 최종 요소로 식별할 수 있습니다. 영역을 지정하지 않으면 주체가 krb5.conf 파일에 설정된 기본 영역에 속하는 것으로 추정됩니다.
클라이언트/사용자: 사용자를 대신하여 서비스에 액세스하는 프로세스입니다. 영역 내에는 여러 클라이언트 또는 사용자가 있을 수 있습니다.
서비스 : 사용자가 액세스하려는 항목입니다.
SSO: Single Sign-On은 사용자가 한번의 로그인으로 사용자 인증을 완료한 후 다양한 서비스를 이용할 수 있도록 하는 절차입니다. 기본 서비스에 로그인한 후에는 사용자가 권한을 부여한 모든 서비스에 대한 인증이 필요합니다. SSO에는 여러 가지 장점이 있으며, 그 중 하나는 비밀번호나 기타 인증 시스템을 사용하여 신원을 반복적으로 확인하는 번거로운 프로세스를 피할 수 있다는 것입니다.
GSSAPI: 프로그램은 API(응용 프로그래밍 인터페이스)인 GSSAPI(일반 보안 서비스 응용 프로그램 인터페이스)를 통해 보안 서비스에 액세스할 수 있습니다. IETF 표준은 GSSAPI입니다. 자체적으로는 어떠한 보안도 제공하지 않습니다. 대신 보안 서비스 공급자가 GSSAPI 구현을 제공합니다. 상위 레벨 애플리케이션의 구현 세부사항을 숨기는 불투명 메시지(토큰) 교환은 GSSAPI 애플리케이션의 독특한 특징입니다.
SPNEGO: 클라이언트-서버 소프트웨어는 흔히 "spen-go"라고 불리는 Simple and Protected GSSAPI 협상 메커니즘을 사용하여 보안 기술 선택을 협상합니다. 클라이언트 애플리케이션이 원격 서버에 로그인해야 하지만 양쪽 모두 다른 쪽이 어떤 인증 프로토콜을 지원하는지 확신할 수 없는 경우 SPNEGO가 사용됩니다. 의사 메커니즘은 프로토콜을 사용하여 사용 가능한 공통 GSSAPI 메커니즘을 식별하고 그 중 하나를 선택한 다음 선택한 메커니즘에 모든 후속 보안 작업을 할당합니다.
KDC: 키 배포 센터는 티켓과 임시 세션 키를 제공하는 네트워크 서비스입니다. 또는 해당 서비스의 인스턴스나 서비스가 실행되는 호스트. KDC는 초기 티켓 요청과 티켓 부여 요청을 모두 서비스합니다. 초기 티켓 부분을 인증 서버(또는 서비스)라고도 합니다. 티켓 부여 티켓 부분은 티켓 부여 서버(또는 서비스)라고도 합니다.
NTLM 인증 프로토콜:
Active Directory 도메인의 리소스에 대한 클라이언트의 액세스는 Windows NT LAN Manager(NTLM)라는 시도-응답 인증 프로토콜을 사용하여 인증될 수 있습니다. 클라이언트가 도메인 관련 서비스에 대한 액세스를 요청하면 서비스는 클라이언트에게 인증 토큰을 사용하여 수학 연산을 수행하고 그 결과를 서비스에 제공하도록 지시하는 챌린지를 보냅니다. 결과는 서비스에서 확인하거나 DC(도메인 컨트롤러)에서 확인할 수 있습니다. DC 또는 서비스에서 클라이언트의 응답이 정확하다는 것을 확인한 경우 서비스는 클라이언트에 대한 액세스 권한을 부여합니다.
NTLM은 로그인 중에 사용자가 기본 인증 요소를 한 번만 입력할 수 있도록 하기 때문에 일종의 SSO(Single Sign-On)입니다.

- The NEGOTIATE_MESSAGE 클라이언트에서 서버로 전송되는 NTLM 협상 메시지를 정의합니다. 이 메시지를 통해 클라이언트는 지원되는 NTLM 옵션을 서버에 지정할 수 있습니다.
- The CHALLENGE_MESSAGE 서버에서 클라이언트로 전송되는 NTLM 챌린지 메시지를 정의하며 서버에서 클라이언트의 신원을 증명하기 위해 챌린지하는 데 사용됩니다.
- The AUTHENTICATE_MESSAGE CHALLENGE_MESSAGE가 클라이언트에 의해 처리된 후 클라이언트에서 서버로 전송되는 NTLM 인증 메시지를 정의합니다.
참고 : Windows 인증은 클라이언트 및 서버 구성에 따라 Kerberos 인증 프로토콜 또는 NTLM 인증 프로토콜을 사용합니다.
Kerberos 인증 프로토콜:

- 메시지 A: 클라이언트/사용자의 비밀 키를 사용하여 암호화된 클라이언트/TGS 세션 키입니다.
- 메시지 B: TGS의 비밀 키를 사용하여 암호화된 티켓 부여 티켓입니다.
- 메시지 C: 메시지 B의 TGT와 요청된 서비스의 ID로 구성됩니다.
- 메시지 D: 클라이언트/TGS 세션 키를 사용하여 암호화된 인증자입니다.
- 메시지 E: 서비스의 비밀 키를 사용하여 암호화된 클라이언트-서버 티켓입니다.
- 메시지 F: 클라이언트/TGS 세션 키로 암호화된 클라이언트/서버 세션 키.
- 메시지 G: 클라이언트 ID, 타임스탬프를 포함하고 클라이언트/서버 세션 키를 사용하여 암호화되는 새로운 인증자입니다.
- 메시지 H: 클라이언트/서버 세션 키를 사용하여 암호화된 클라이언트 인증기에서 발견된 타임스탬프입니다.
Ubuntu/Debian에서 Kerberos SSO:
전제 조건 :
- Active Directory의 서비스 계정/사용자 계정.
- 계정 비밀번호에는 비밀번호가 다음으로 설정되어 있어야 합니다. 만료되지 않음.
1단계: AD 도메인 컨트롤러에 Keytab 파일 생성:
- AD 도메인 컨트롤러에서 관리자 모드로 명령 프롬프트를 열고 다음 명령을 실행하여 Keytab 파일을 생성합니다.
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab -crypto ALL
참고 : 확인 EXAMPLE.COM 대문자여야 합니다. SPN이 있는 사용자가 이미 존재하는 경우 새 사용자를 만드는 대신 해당 사용자를 사용하십시오. Kerberos 원칙은 대소문자를 구분합니다. keytab 명령을 실행하기 전에 대문자/소문자 쓰기의 차이를 확인하십시오.
- 다음은 명령의 구성 요소입니다.
| 서버 호스트 이름: | 서버에서 호스팅되는 사이트의 호스트 이름입니다. |
| EXAMPLE.COM: | Active Directory 도메인 이름입니다. |
| 사용자 이름: | Active Directory의 서비스 계정입니다. |
| 암호: | 위에서 사용한 서비스 계정의 비밀번호입니다. |
| 통로: | keytab 파일을 저장할 로컬 위치의 경로입니다. (C:\Temp\spn.keytab) |
참고 : 위 명령은 keytab 파일을 생성합니다. WordPress 사이트가 호스팅되는 클라이언트 서버에 배치되어야 합니다. Apache를 실행하는 사용자는 이 파일에 대한 전체 액세스 권한을 가져야 합니다. 사용자에게 keytab 파일에 대한 권한이 있어야 합니다.
- Active Directory 사용자 및 컴퓨터를 열고 상단 메뉴에서 다음을 선택합니다. 보기 >> 고급 기능.
- 서비스 계정을 열고 속성 편집기 탭으로 이동하여 다음을 찾아보세요. 서비스 주체 이름 SPN 항목을 확인하세요.
- 로 이동 대표단 탭.
- 선택 모든 서비스에 대한 위임을 위해 이 사용자를 신뢰합니다(Kerberos만 해당)..

- 신청.
- 복사 키탭 AD 도메인 컨트롤러에서 Apache에서 호스팅되는 웹 서버로 파일을 전송합니다.
- Kerberos Keytab 파일에 권한을 제공합니다.
chmod 644 etc/apache2/spn.keytab2단계: 웹 서버에 Kerberos 클라이언트 라이브러리 설치:
- Kerberos 클라이언트 라이브러리를 설치하려면 터미널에서 다음 명령을 사용하십시오.
sudo apt-get install krb5-user
3단계: Apache용 모듈 설치:
참고 : Ubuntu/Debian의 최신 릴리스에서는 mod_auth_kerb 더 이상 사용되지 않으며 다음으로 대체되었습니다. mod_auth_gssapi.
- Apache 모듈은 두 개가 있지만, 그 중 하나만 설치하면 됩니다.
1. Apache용 mod-auth-gssapi 모듈.
2. 아파치용 mod_auth_kerb 모듈. (더 이상 사용되지 않음)
1. Apache용 mod-auth-gssapi 모듈을 설치합니다.
- 다음 명령을 사용하여 설치하세요. libapache2-mod-auth-gssapi 데비안 기반 시스템의 Apache용 모듈:
sudo apt-get -y install libapache2-mod-auth-gssapiOR
2. Apache용 mod_auth_kerb 모듈을 설치합니다(더 이상 지원되지 않음):
- Debian 기반 시스템에 Apache용 auth_kerb 모듈을 설치하려면 다음 명령을 사용하십시오.
sudo apt-get install libapache2-mod-auth-kerb- auth_kerb 모듈이 설치되면 다음 명령을 통해 활성화해야 합니다.
a2enmod auth_kerb- 활성화 후, 아파치 다시 시작 적용합니다.
4단계: Kerberos 구성 파일에서 Active Directory 도메인을 구성합니다.
- 열기 및 편집 krb5.conf 파일.
linux용 krb5.conf 파일의 경로는 다음과 같습니다. C:/etc/krb5.conf 그리고 다른 UNIX 기반 시스템의 경우 c:/etc/krb5/krb5.conf - 다음 구성 조각을 krb5.conf 언급된 섹션 아래의 파일:
[libdefaults]
default_realm = EXAMPLE.COM
# ...
# ...
[realms]
EXAMPLE.COM = {
kdc = <DNS entries pointing to your primary domain controller>: Port
admin_server = <DNS entries pointing to your primary domain controller>: Port
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
참고 : 교체 귀하의 IP/DNS를 사용한 AD 도메인 컨트롤러 IP/DNS 주소. 확인 EXAMPLE.COM 대문자여야 합니다.
교체 EXAMPLE.COM Active Directory 도메인 이름을 사용하고 이 서버에서 AD 도메인 컨트롤러의 포트 88에 액세스할 수 있는지 확인합니다.
- 파일을 저장합니다.
5단계: 사이트 디렉토리에 대한 Kerberos SSO 구성:
- 아래에 저장된 가상 호스트 구성 파일을 편집합니다. /etc/apache2/sites-enabled 디렉토리 또는 000-default.conf라는 기본 가상 호스트 파일
참고 : 사용된 Apache 모듈에 따라 디렉터리에 다음 섹션을 추가합니다. 예: "mod_auth_kerb" or "mod_auth_gssapi".
- 1. 사이트 디렉토리에 다음 섹션을 추가합니다. mod_auth_gssapi.
<IfModule !mod_auth_gssapi.c>
LoadModule auth_gssapi_module /usr/lib64/httpd/modules/mod_auth_gssapi.so
</IfModule>
<Directory "/placeholder">
AuthType GSSAPI
AuthName "Kerberos auth"
GssapiAllowedMech krb5
GssapiBasicAuth On
GssapiCredStore keytab:<PATH TO KEYTAB>
GssapiLocalName On
BrowserMatch Windows gssapi-no-negotiate
Require valid-user
</Directory>
OR
- 2. 사이트 디렉토리에 다음 섹션을 추가합니다. mod_auth_kerb (사용되지 않음).
<Directory "/placeholder">
AuthType Kerberos
KrbAuthRealms EXAMPLE.COM
KrbServiceName HTTP/<Server Host Name>
Krb5Keytab <PATH TO KEYTAB>
KrbMethodNegotiate on
KrbMethodK5Passwd on
require valid-user
</Directory>
참고 : 확인 EXAMPLE.COM 대문자여야 합니다.
위 구성의 구성 요소는 다음과 같습니다.
| EXAMPLE.COM: | 이는 krb5.conf에 구성된 Active Directory 도메인입니다. |
| 키탭 경로: | 이 서버의 키탭에 대한 액세스 가능한 경로입니다. (etc/spn.keytab) |
- 이 구성 후에 변경 사항을 적용하려면 Apache를 다시 시작해야 합니다.
참고 : 설정 구성이 완료되면, 여기를 클릭하세요. Kerberos SSO용 브라우저를 구성합니다.
Kerberos/NTLM SSO 구성을 테스트하려면, 여기를 클릭하세요..
오류를 해결하려면 다음을 수행하십시오. 여기를 클릭하세요..
RHEL/CentOS에서 Kerberos 설정:
1단계: AD 도메인 컨트롤러에 Keytab 파일 생성:
- AD 도메인 컨트롤러에서 관리자 모드로 명령 프롬프트를 열고 다음 명령을 실행하여 Keytab 파일을 만듭니다.
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab -crypto ALL
참고 : 확인 EXAMPLE.COM 대문자여야 합니다. Kerberos 원칙은 대소문자를 구분합니다. keytab 명령을 실행하기 전에 대문자/소문자 쓰기의 차이를 확인하십시오.
- 다음은 명령의 구성 요소입니다.
| 서버 호스트 이름: | 서버에서 호스팅되는 사이트의 호스트 이름입니다. |
| EXAMPLE.COM: | Active Directory 도메인 이름입니다. |
| 사용자 이름: | Active Directory의 서비스 계정입니다. |
| 암호: | 위에서 사용한 서비스 계정의 비밀번호입니다. |
| 통로: | keytab 파일을 저장할 로컬 위치의 경로입니다. (C:\Temp\spn.keytab) |
참고 : 위의 명령은 다음을 생성합니다. 키탭 파일. WordPress 사이트가 호스팅되는 클라이언트 서버에 배치해야 합니다. Apache를 실행하는 사용자는 이 파일에 대한 전체 액세스 권한이 있어야 합니다. 사용자는 키탭 파일에 대한 권한이 있어야 합니다.
- 복사 키탭 파일 AD 도메인 컨트롤러에서 Apache에 호스팅된 웹 서버로.
- Kerberos Keytab 파일에 권한을 제공합니다.
chmod 644 etc/httpd/spn.keytab2단계: 웹 서버에 Kerberos 클라이언트 라이브러리 설치:
- Kerberos 클라이언트 라이브러리를 설치하려면 터미널에서 다음 명령을 사용하십시오.
yum install -y krb5-workstation krb5-devel krb5-libs mod_auth_gssapi mod_session
참고 : CentOS의 최신 릴리스에서는 mod_auth_kerb 더 이상 사용되지 않으며 다음으로 대체되었습니다. mod_auth_gssapi.
3단계: Apache용 모듈 설치:
참고 : Ubuntu/Debian의 최신 릴리스에서는 mod_auth_kerb 더 이상 사용되지 않으며 다음으로 대체되었습니다. mod_auth_gssapi.
- Apache 모듈은 두 개가 있지만, 그 중 하나만 설치하면 됩니다.
1. Apache용 mod-auth-gssapi 모듈.
2. Apache용 mod_auth_kerb 모듈(더 이상 사용되지 않음).
1. Apache용 mod-auth-gssapi 모듈을 설치합니다.
- 다음 명령을 사용하여 설치하세요. libapache2-mod-auth-gssapi 모듈 Debian 기반 시스템의 Apache의 경우:
sudo apt-get -y install libapache2-mod-auth-gssapiOR
2. Apache용 mod_auth_kerb 모듈을 설치합니다(더 이상 지원되지 않음):
- 다음 명령을 사용하여 설치하세요. auth_kerb 모듈 Red Hat 기반 시스템의 Apache에 대한 내용입니다. (RHEL 최신 릴리스의 경우 mod-auth-gssapi 모듈을 사용하세요)
yum install mod_auth_kerb4단계: Kerberos 구성 파일에서 Active Directory 도메인을 구성합니다.
- 열기 및 편집 krb5.conf 파일.
krb5.conf 파일의 경로 RHEL은 C:/etc/krb5.conf입니다. - 다음 구성 조각을 krb5.conf 언급된 섹션 아래의 파일:
- 로 이동 [libdefaults] 섹션에 다음을 추가합니다.
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
- 로 이동 [영역] 섹션에 다음을 추가합니다.
EXAMPLE.COM = {
kdc = <DNS entries pointing to your primary domain controller>: Port
admin_server = <DNS entries pointing to your primary domain controller>: Port
}
- 로 이동 [도메인_영역] 섹션에 다음을 추가합니다.
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
참고 : 교체 광고 도메인 컨트롤러 IP/DNS 귀하의 IP/DNS 주소를 사용하세요. EXAMPLE.COM을 확인하세요 대문자여야 합니다.
교체 EXAMPLE.COM Active Directory 도메인 이름을 사용하고 이 서버에서 AD 도메인 컨트롤러의 포트 88에 액세스할 수 있는지 확인합니다.
- 파일을 저장합니다.
5단계: Kerberos 구성 파일에서 Active Directory 도메인을 구성합니다.
- 부과된 호스트 구성 파일을 편집합니다. /etc/httpd/conf/httpd.conf
- 사이트 디렉토리에 다음 섹션을 추가합니다. mod_auth_gssapi
LoadModule auth_gssapi_module modules/mod_auth_gssapi.so
<Directory "/placeholder">
AuthType GSSAPI
AuthName "Kerberos auth"
GssapiBasicAuth On
GssapiCredStore keytab:<PATH TO KEYTAB>
GssapiLocalName On
Require valid-user
</Directory>
OR
- 사이트 디렉토리에 다음 섹션을 추가합니다. mod_auth_kerb (사용되지 않음).
<Directory "/placeholder">
AuthType Kerberos
KrbAuthRealms EXAMPLE.COM
KrbServiceName HTTP/<Server Host Name>
Krb5Keytab <PATH TO KEYTAB>
KrbMethodNegotiate on
KrbMethodK5Passwd on
require valid-user
</Directory>
- 위 구성의 구성 요소는 다음과 같습니다.
| 키탭 경로 | 이 서버의 키탭에 대한 액세스 가능한 경로입니다. (etc/apache2/spn.keytab) |
| "/자리 표시자" | 문서 루트 경로 |
- 이 구성 후에 변경 사항을 적용하려면 Apache를 다시 시작해야 합니다.
참고 : 설정 구성이 완료되면, 여기를 클릭하세요. Kerberos SSO용 브라우저를 구성합니다.
Kerberos/NTLM SSO 구성을 테스트하려면, 여기를 클릭하세요..
오류를 해결하려면 다음을 수행하십시오. 여기를 클릭하세요..
IIS 서버에서 Windows 인증을 사용한 SSO:
- 명령 프롬프트를 엽니다 관리자 모드.
- 다음 명령을 실행하여 추가하세요. SPN(서비스 사용자 이름) 서비스 계정용
참고 : 웹사이트가 http://machinename 및 http://machinename.domain.com에서 응답해야 한다고 가정합니다. 서비스 계정의 SPN 속성에 이러한 주소를 지정해야 합니다.
Setspn -S http/<computer-name>.<domain-name> <domain-user-account>예: C:\Users\Administrator> setspn -S HTTP/machinename.domain.com 서비스 계정
참고 : "machinename.domain.com"은 컴퓨터 이름입니다. AD 서비스를 실행하는 Windows 서버에서 확인할 수 있는지 확인하세요.
- 다음 명령을 실행하여 이것이 올바르게 설정되었는지 확인하십시오.
setspn -l domain or service_account예: C:\Users\Administrator> setspn -l service_account 또는 C:\Users\Administrator> setspn -l domain_name

- 결과가 나열되어야 합니다. http/machinename.domain.com
- Active Directory 사용자 및 컴퓨터를 열고 상단 메뉴에서 다음을 선택합니다. 보기 >> 고급 기능.
- 서비스 계정을 열고 다음으로 이동하십시오. 속성 편집기 탭에서 서비스 주체 이름 확인하기 위해 SPN 항목.
- 로 이동 대표단 탭.
- 선택 모든 서비스에 대한 위임을 위해 이 사용자를 신뢰합니다(Kerberos만 해당)..

- 신청.
- 열기 IIS 관리자 Windows 인증을 활성화하려는 웹사이트를 클릭하세요.
- 더블 클릭 인증.

- 인증 섹션에서 기본적으로 익명 인증만 활성화되어 있는 것을 볼 수 있습니다. IIS는 항상 익명 인증을 시도하므로 익명 인증 비활성화 Windows 인증 활성화.

- 마우스 오른쪽 클릭 Windows 인증 그리고 클릭 공급 업체.

- 다음 창이 나타납니다. 확인하세요 "협상하다" 공급업체 목록의 맨 위에 있습니다.

참고 : 기본적으로 Negotiate와 NTLM이라는 두 가지 공급자를 사용할 수 있습니다. Negotiate는 kerberos를 첫 번째 인증 방법으로 사용하는 컨테이너로, 인증에 실패할 경우 NTLM을 사용합니다. 따라서 공급자 목록에서 협상이 첫 번째로 와야 합니다.
- 를 클릭하십시오 Ok 창을 닫습니다.
- SPN 계정에서 IIS 애플리케이션 풀을 시작하도록 구성하려면 다음을 클릭하세요. 응용 프로그램 풀 애플리케이션 풀 창을 엽니다.
- 도메인을 마우스 오른쪽 버튼으로 클릭하고 목록에서 다음을 클릭합니다. 고급 설정.

- 프로세스 모델 아래의 고급 설정 창에서 다음을 클릭합니다. 통합 인증 .

- 애플리케이션 풀 ID에서 다음을 선택하세요. 사용자 정의 계정 그리고 클릭 세트 버튼을 클릭하여 ID를 설정합니다.
- 에서 변경 응용 프로그램 풀 ID 에 \.
예: domain.com\service_account

- 로 이동 구성 편집기.

- 드롭다운에서 system.webServer > 보안 > 인증 > windowsAuthentication.

- 변화 useAppPoolCredentials를 True로 설정. 과 useKernelMode를 False로 설정.
참고 : useAppPoolCredentials를 True로 설정하면 IIS가 도메인 계정을 사용하여 클라이언트의 Kerberos 티켓을 해독할 수 있다는 의미입니다.
- 신청.
- IIS 서버를 다시 시작합니다.
- Fiddler를 사용하여 HTTP 트래픽을 모니터링하면 웹사이트에서 Kerberos 인증이 사용되고 있는지 확인할 수 있습니다.
피들러를 실행하고 원하는 웹사이트로 브라우저를 실행합니다. 창 왼쪽에서 웹사이트 액세스 라인을 찾으세요. 창 오른쪽에서 검사 탭을 선택합니다. "권한 부여 헤더(협상)에 Kerberos 티켓이 포함된 것으로 보입니다."라는 줄에서 IIS 웹 사이트의 인증에 Kerberos가 사용된 것이 분명합니다.

참고 : 설정 구성이 완료되면, 여기를 클릭하세요. Kerberos SSO용 브라우저를 구성합니다.
Kerberos/NTLM SSO 구성을 테스트하려면, 여기를 클릭하세요..
오류를 해결하려면 다음을 수행하십시오. 여기를 클릭하세요..
Windows Xampp 서버에서 Apache를 사용한 SSO:
- 명령 프롬프트를 엽니다 관리자 모드.
- 다음 명령을 실행하여 추가하세요. SPN(서비스 사용자 이름) 서비스 계정용
Setspn -s http/<computer-name>.<domain-name> <domain-user-account>예: C:\Users\Administrator> setspn -S HTTP/machinename.domain.com service_account
참고 :"machinename.domain.com"은 컴퓨터 이름입니다. AD 서비스를 실행하는 Windows 서버에서 확인할 수 있는지 확인하세요.
- 다음 명령을 실행하여 이것이 올바르게 설정되었는지 확인하십시오.
setspn -l domain\service_account- 결과가 나열되어야 합니다. http/machinename.domain.com
- Active Directory 사용자 및 컴퓨터를 열고 상단 메뉴에서 다음을 선택합니다. 보기 >> 고급 기능.
- 서비스 계정을 열고 다음으로 이동하십시오. 속성 편집기 탭에서 서비스 주체 이름 확인하기 위해 SPN 항목.
- 로 이동 대표단 탭.
- 선택 모든 서비스에 대한 위임을 위해 이 사용자를 신뢰합니다(Kerberos만 해당)..

- 신청.
- Click Here 아파치 모듈을 다운로드합니다.
- 복사 mod_authnz_sspi.so 에 Apache24 > 모듈 폴더로 이동하여 모듈(C:\xampp\apache\modules) 디렉터리에 배치합니다.
- 복사 sspipkgs.exe 에서 파일 Apache24 -> 빈 폴더를 찾아 웹 서버에 있는 Xampp Apache 폴더(.....\xampp\apache\bin)의 bin 폴더에 넣습니다.
- httpd.conf(.....\xampp\apache\conf)를 열고 LoadModule 섹션에 아래 코드 줄을 배치합니다.
LoadModule authnz_sspi_module modules/mod_authnz_sspi.so- 다음 모듈의 주석 처리가 해제되었는지 확인하세요.
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_core_module modules/mod_authz_core.so- 또한, LDAP 확장을 활성화하세요.
- (.....\xampp\apache\conf\httpd.conf)에서 httpd.conf 파일을 엽니다.
#Require all grants 뒤에 아래 줄로 이동하여 붙여넣습니다.
<Directory "...../xampp/htdocs">
......
......
#Require all granted
AllowOverride None Options None
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
Require valid-user
</Directory>
- 다시 시작하십시오. 아파치 서버.
참고 : 설정 구성이 완료되면, 여기를 클릭하세요. Kerberos SSO용 브라우저를 구성합니다.
Kerberos/NTLM SSO 구성을 테스트하려면, 여기를 클릭하세요..
오류를 해결하려면 다음을 수행하십시오. 여기를 클릭하세요..
Kerberos SSO를 위한 브라우저 구성:
참고 : 클라이언트 측 구성을 사용하면 해당 브라우저가 SPNEGO를 사용하여 브라우저에 대한 Kerberos 인증을 협상할 수 있습니다. 최종 사용자 시스템의 브라우저가 Kerberos 인증을 지원하도록 구성되어 있는지 확인해야 합니다.
모든 브라우저에 대한 일반 Kerberos SSO 구성:
- 제어판으로 이동하여 다음을 클릭하세요. 네트워크 및 인터넷 >> 인터넷 옵션.
- 그러면 인터넷 속성 창이 열립니다. 클릭 보안 >> 로컬 인트라넷 >> 사이트.

- 그 후 고급 버튼.

- . 이 웹사이트를 영역에 추가하세요 섹션에 SSO로 로그인하려는 웹사이트 URL을 추가하세요.

- 도구 > 인터넷 옵션 > 보안 > 로컬 인트라넷 > 사용자 정의 수준.
- 사용자 인증 옵션까지 아래로 스크롤하여 선택합니다. 인트라넷 영역에서만 자동 로그인.

- 를 클릭하십시오 Ok 버튼을 누른 다음 브라우저를 다시 시작하세요.
위 설정을 완료한 후에는 Internet Explorer, Google Chrome 및 Apple Safari에 대한 브라우저 설정을 구성할 필요가 없습니다.
- 인터넷 익스플로러
- Google Chrome
- 모질라 파이어 폭스
- 애플 사파리
Kerberos/NTLM SSO 구성을 테스트하세요:
시간 동기화:
Kerberos 프로토콜은 클라이언트와 서버의 시간이 일치해야 합니다. 클라이언트의 시스템 시계가 서버의 시스템 시계와 일치하지 않으면 인증이 실패합니다. 시스템 시계를 동기화하는 가장 간단한 방법은 NTP(Network Time Protocol) 서버를 사용하는 것입니다.
명령어로 확인:
keytab 및 kerberos 구성을 확인하려면 다음 명령을 실행할 수 있습니다.
- 클리스트: klist 명령은 Kerberos 자격 증명 캐시 또는 키 테이블의 내용을 표시합니다. 이 명령을 사용하면 유효한 티켓을 받았는지 여부를 확인할 수 있습니다.
- klist -t -k etc/apache2/spn.keytab: etc/apache2/spn.keytab 키 테이블의 모든 항목을 타임스탬프와 함께 나열합니다.
- klist -ek /etc/apache2/spn.keytab: 세션 키와 티켓의 암호화 유형을 표시하고 키 테이블의 항목을 나열합니다.
- kinit -V -kt /etc/apache2/spn.keytab -p HTTPS/웹서버.귀하의도메인.com @귀하의도메인.COM: keytab 파일을 사용하여 Kerberos 인증을 확인합니다.
- kdestroy -A: Linux에서 이 명령을 사용하여 로컬 시스템의 Kerberos 토큰을 재설정할 수 있습니다. 이 명령은 이전 Kerberos 티켓을 삭제합니다.
- klist 퍼지: Windows에서 이 명령을 사용하여 로컬 시스템의 Kerberos 토큰을 재설정할 수 있습니다. 이 명령은 이전 Kerberos 티켓을 삭제합니다.
- KRB5_TRACE=/dev/stdout kinit -kt /etc/krb5.keytab HTTP/≶서버 호스트 이름>: Linux 웹 서버에서 이 명령을 사용하여 keytab 파일을 사용하여 Kerberos 티켓을 얻고 Kerberos 추적을 활성화하여 Kerberos 인증 프로세스 디버깅에 대한 자세한 정보를 얻을 수 있습니다.
테스트 구성:
- SSO 구성을 테스트하려면 다음을 생성하세요. 테스트.php WordPress 루트 디렉토리에 있는 파일입니다.
- 아래 줄을 입력하세요:
<?php
var_dump($_SERVER);
?>
- 파일을 저장하고 웹 브라우저에서 액세스하십시오. 당신은 볼 것이다 $_SERVER 콘텐츠.
- "검색REMOTE_USER"그리고 현재 로그인한 사용자 이름이 포함되어야 합니다.
참고 : 제거해주세요 테스트.php 구성을 확인한 후 파일을 엽니다. 여기에는 귀중한 정보가 포함되어 있습니다.
다중 도메인에 걸친 Kerberos 인증:
- 각 도메인에 별도의 Keytab을 생성하고 ktutil 도구와 병합합니다.
ktutil
ktutil: read_kt <keytab_filename_1>
ktutil: read_kt <keytab_filename_2>
ktutil: read_kt <keytab_filename_3>
ktutil: write_kt spn.keytab
ktutil: quit
- 아래 명령으로 병합을 확인합니다.
klist -k spn.keytab
- krb5.conf를 구성합니다.
krb5.conf 파일에는 하나 이상의 Kerberos 영역에 대한 KDC 및 관리 서버, 현재 영역의 기본값 및 Kerberos 영역에 대한 호스트 이름 매핑을 포함하는 Kerberos 구성 정보가 포함되어 있습니다. 도메인이 여러 개인 경우 인증이 작동하려면 다양한 도메인/도메인 영역에 대한 정보로 krb5.conf 파일을 업데이트해야 합니다.
문제 해결 :
가장 일반적인 오류 메시지는 다음과 같습니다.
-
kinit: Pre-authentication failed: Invalid argument while getting initial credentialsAD 환경에서 여전히 많이 사용되지만 RHEL-4에서는 이미 기본적으로 비활성화되어 있는 rc8.3 암호화 유형입니다. 아래 예를 참조하여 keytab 파일에 암호화 유형을 추가할 수 있습니다.
or
GSS ERROR gss_accept_sec_context(): [Unspecified GSS failure. Minor code may provide more information (Request ticket server HTTP/<Server Host Name>@EXAMPLE.COM kvno x enctype rc4-hmac found in keytab but cannot decrypt ticket)]
예:ktutil
addent -password -p HTTP/<Server Host Name>@EXAMPLE.COM -k 1 -e aes256-cts-hmac-sha1-96
wkt spn.keytab.
확인 Kerberos AES 256비트 암호화 사용자에 의해 지원됩니다 "계정" 설정.

-
Unspecified GSS failure. Minor code may provide more information (Clock skew too great)Kerberos는 시간에 매우 민감합니다. Active Directory 호스트와 웹 서버의 시계가 동일한지 확인하십시오. 클라이언트 컴퓨터의 NTP 서버 역할을 하도록 도메인 컨트롤러 중 하나를 설정합니다.
or
kinit: krb5_get_init_creds: Too large time skew -
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Permission denied)/etc/apache2/spn.keytab에 대한 파일 시스템 권한이 잘못되었습니다. 즉, 웹 서버의 Linux 사용자가 읽을 수 없습니다.
파일 시스템 권한을 변경하려면 chmod 644 /etc/apache2/spn.keytab을 사용하세요. -
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Key table entry not found)./etc/apache2/spn.keytab에 서비스 주체(아마도 HTTP/webserver.yourdomain.com @YOURDOMAIN.COM)가 없습니다. -
Warning: received token seems to be NTLM, which isn't supported by the Kerberos module. Check your IE configuration.gss_accept_sec_context() failed: An unsupported mechanism was requested (, Unknown error)웹 사이트가 IE의 "로컬 인트라넷" 영역에 없거나 IE가 잘못 구성되었습니다. 인증이 Kerberos 대신 NTLM을 사용함을 참조하세요. -
gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, ).etc/apache2/spn.keytab에 kvno 또는 시스템 비밀번호가 잘못되었습니다. 올바른 정보를 사용하여 키탭을 다시 생성하십시오.
워크스테이션의 로컬 Kerberos 티켓 캐시에 문제가 있습니다. Kerbtray.exe를 사용하여 티켓 캐시를 제거하고 IE에서 웹 사이트를 다시 여십시오. -
kinit: KDC has no support for encryption type while getting initial credentials/etc/apache2/krb5.conf 파일의 libdefaults 섹션에서 기본 암호화 유형을 변경합니다. default_tgs_enctypes 및 default_tkt_enctypes를 구성에 추가합니다. -
[libdefaults]
default_tgs_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5
default_tkt_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5kinit: krb5_get_init_creds: Error from KDC: CLIENT EXPIRED귀하의 Kerberos 계정은 더 이상 활성 상태가 아닙니다. 계정 자격 증명을 갱신해야 합니다.
or
kinit: Client's entry in database has expired while getting initial credentials -
kinit: krb5_cc_get_principal: No credentials cache file foundkinit 명령을 실행할 때 잘못된 도메인이 대상으로 지정되었습니다. 도메인 이름을 확인하세요. 대문자여야 합니다. EXAMPLE.COM
or
kinit: krb5_get_init_creds: Error from KDC: CLIENT_NOT_FOUND -
kinit : Cannot find KDC for requested realm while getting initial credentials/etc/apache2/krb5.conf 파일에 Active Directory 도메인 이름(.EXAMPLE.COM)이 포함되어 있지 않습니다. -
kinit: Preauthentication failed while getting initial credentialsKerberos 비밀번호를 실수로 입력하여 발생했습니다. 다시 시도하세요. 또는 시스템 시계 때문입니다. date 명령이 5분 이내의 정확한 시간을 반환하는지 확인하세요. -
kinit: Client not found in Kerberos database while getting initial credentialsKerberos 주체는 로컬 시스템의 사용자 이름과 다를 수 있습니다. -
kinit: Client's entry in database has expiredKerberos 비밀번호를 변경해야 합니다.
자주 묻는 질문
더 많은 FAQ ➔기존 LDAP 사용자를 Kerberos 서비스 주체로 사용할 수 있습니까?
예, 기존 LDAP 사용자를 Kerberos 서비스 주체로 사용할 수 있습니다. 그러나 이 사용자는 만료되지 않도록 설정된 비밀번호를 가지고 있어야 합니다. 애플리케이션은 이 계정을 Kerberos 서비스 주체로 사용하고 해당 키탭을 사용하여 Kerberos 티켓을 얻으므로 어떤 사용자도 이 계정을 사용하지 않는지 확인하시기 바랍니다.
"Kerberos 클라이언트", "Kerberos 서버", "응용 프로그램 서버"란 무엇입니까?
Kerberos의 모든 인증은 클라이언트와 서버 사이에서 발생합니다. 따라서 Kerberos 서비스에 대한 서비스 티켓을 받는 모든 엔터티를 Kerberos 용어로 "Kerberos 클라이언트"라고 합니다. 사용자는 종종 클라이언트로 간주되지만 모든 주체가 클라이언트일 수 있습니다.
키 배포 센터, 줄여서 KDC를 일반적으로 "Kerberos 서버"라고 합니다. 인증 서비스(AS)와 티켓 부여 서비스(TGS)는 모두 KDC에 의해 구현됩니다. 모든 주체에 연결된 모든 비밀번호는 KDC에 저장됩니다. 이 때문에 KDC는 가능한 한 안전해야 합니다.
"응용 프로그램 서버"라는 문구는 클라이언트가 Kerberos 티켓을 사용하여 인증하는 동안 상호 작용하는 데 사용하는 Kerberos화된 소프트웨어를 의미하는 경우가 많습니다. 응용 프로그램 서버의 예로는 Kerberos telnet 데몬이 있습니다.
자격 증명을 입력하라는 메시지가 나타나는 이유는 무엇입니까?
이는 Kerberos 대신 인증에 NTLM 프로토콜을 사용할 때 발생합니다.
이는 여러 가지 이유로 인해 발생할 수 있습니다:
- 웹사이트에 접속하기 위해 도메인에 가입된 컴퓨터를 사용하고 있는지 확인하세요.
- LDAP 서버와 웹 서버 간에 시간이 동기화되어 있는지 확인하세요.
- Kerberos SSO에 대해 브라우저 설정 및 인터넷 옵션이 구성되어 있는지 확인하십시오.
- 이 문제가 계속 발생하는 경우 언제든지 문의해 주세요.
관련 기사
당신의 응답을 주셔서 감사합니다. 곧 다시 연락드리겠습니다.
문제가 발생했습니다. 문의사항을 다시 제출해 주세요.


