개요
Fess 는 Windows 통합 인증(SPNEGO/Kerberos)을 사용한 싱글 사인온(SSO) 인증을 지원합니다. Windows 통합 인증을 사용하면 Active Directory 도메인에 가입한 Windows에 로그인한 사용자는 추가 로그인 조작 없이 Fess 에 접근할 수 있습니다.
Windows 통합 인증의 동작 방식
Windows 통합 인증에서는 Fess 가 SPNEGO(Simple and Protected GSSAPI Negotiation Mechanism) 프로토콜을 사용하여 Kerberos 인증을 수행합니다.
사용자가 Windows 도메인에 로그인
사용자가 Fess 에 접근
Fess 가 SPNEGO 챌린지를 송신
브라우저가 Kerberos 티켓을 취득하여 서버에 송신
Fess 가 티켓을 검증하고 사용자명을 취득
LDAP를 사용하여 사용자의 그룹 정보를 취득
사용자가 로그인 상태가 되고 그룹 정보가 역할 기반 검색에 적용됨
역할 기반 검색과의 연계에 대해서는 역할 기반 검색 설정 을 참조하십시오.
전제조건
Windows 통합 인증을 설정하기 전에 다음 전제조건을 확인하십시오:
Fess 15.7 이상이 설치되어 있을 것
Active Directory(AD) 서버가 사용 가능할 것
Fess 서버가 AD 도메인에서 접근 가능할 것
AD에서 서비스 프린시펄 이름(SPN)을 설정할 권한이 있을 것
LDAP로 사용자 정보를 취득하기 위한 계정이 있을 것
Active Directory 측 설정
서비스 프린시펄 이름(SPN) 등록
Fess 용 SPN을 Active Directory에 등록해야 합니다. AD 도메인에 가입한 Windows에서 명령 프롬프트를 열고 setspn 명령을 실행합니다.
예:
등록을 확인하려면:
참고
SPN 등록 후 Fess 서버에서 실행한 경우에는 한 번 Windows에서 로그아웃하고 다시 로그인하십시오.
기본 설정
SSO 활성화
Windows 통합 인증을 활성화하려면 app/WEB-INF/conf/system.properties 에 다음 설정을 추가합니다:
Kerberos 설정 파일
app/WEB-INF/classes/krb5.conf 를 생성하고 Kerberos 설정을 작성합니다.
참고
EXAMPLE.LOCAL 은 사용 중인 AD 도메인 이름(대문자)으로, AD-SERVER.EXAMPLE.LOCAL 은 AD 서버의 호스트명으로 교체하십시오.
로그인 설정 파일
app/WEB-INF/classes/auth_login.conf 를 생성하고 JAAS 로그인 설정을 작성합니다.
필수 설정
app/WEB-INF/conf/system.properties 에 다음 설정을 추가합니다.
| 프로퍼티 | 설명 | 기본값 |
|---|---|---|
spnego.preauth.username | AD 접속용 사용자명 | (필수) |
spnego.preauth.password | AD 접속용 비밀번호 | (필수) |
spnego.krb5.conf | Kerberos 설정 파일 경로 | krb5.conf |
spnego.login.conf | 로그인 설정 파일 경로 | auth_login.conf |
옵션 설정
필요에 따라 다음 설정을 추가할 수 있습니다.
| 프로퍼티 | 설명 | 기본값 |
|---|---|---|
spnego.login.client.module | 클라이언트 모듈명 | spnego-client |
spnego.login.server.module | 서버 모듈명 | spnego-server |
spnego.allow.basic | Basic 인증 허용 | true |
spnego.allow.unsecure.basic | 비보안 Basic 인증 허용 | true |
spnego.prompt.ntlm | NTLM 프롬프트 표시 | true |
spnego.allow.localhost | localhost에서의 접근 허용 | true |
spnego.allow.delegation | 위임 허용 | false |
spnego.exclude.dirs | 인증 제외 디렉터리(쉼표 구분) | (없음) |
spnego.logger.level | 로그 레벨(0-7) | (자동) |
경고
spnego.allow.unsecure.basic=true 는 Base64로 인코딩된 인증 정보를 암호화되지 않은 연결로 송신할 가능성이 있습니다. 프로덕션 환경에서는 false 로 설정하고 HTTPS를 사용할 것을 강력히 권장합니다.
LDAP 설정
Windows 통합 인증으로 로그인한 사용자의 그룹 정보를 취득하기 위해 LDAP 설정이 필요합니다. Fess 관리 화면의 「시스템」→「일반」에서 LDAP 설정을 수행합니다.
| 항목 | 설정 예 |
|---|---|
| LDAP URL | ldap://AD-SERVER.example.local:389 |
| Base DN | dc=example,dc=local |
| Bind DN | svc_fess@example.local |
| 비밀번호 | AD 접속용 사용자의 비밀번호 |
| User DN | %s@example.local |
| 계정 필터 | (&(objectClass=user)(sAMAccountName=%s)) |
| memberOf 속성 | memberOf |
브라우저 설정
Windows 통합 인증을 사용하려면 클라이언트 측의 브라우저 설정이 필요합니다.
Internet Explorer / Microsoft Edge
인터넷 옵션 열기
「보안」 탭 선택
「로컬 인트라넷」 영역의 「사이트」 클릭
「고급」을 클릭하고 Fess의 URL 추가
「로컬 인트라넷」 영역의 「사용자 지정 수준」 클릭
「사용자 인증」→「로그온」→「인트라넷 영역에서만 자동으로 로그온」 선택
「고급」 탭에서 「Windows 통합 인증 사용」 체크
Google Chrome
Chrome은 일반적으로 Windows의 인터넷 옵션 설정을 사용합니다. 추가 설정이 필요한 경우 그룹 정책 또는 레지스트리에서 AuthServerAllowlist 를 설정합니다.
Mozilla Firefox
주소창에
about:config입력network.negotiate-auth.trusted-uris검색Fess 서버의 URL 또는 도메인 설정(예:
https://fess-server.example.local)
설정 예
최소 구성(검증용)
다음은 검증 환경에서의 최소 구성 예입니다.
app/WEB-INF/conf/system.properties:
app/WEB-INF/classes/krb5.conf:
app/WEB-INF/classes/auth_login.conf:
권장 구성(프로덕션용)
다음은 프로덕션 환경에서의 권장 구성 예입니다.
app/WEB-INF/conf/system.properties:
문제 해결
자주 발생하는 문제와 해결 방법
인증 다이얼로그가 표시되는 경우
브라우저 설정에서 Fess 서버가 인트라넷 영역에 추가되어 있는지 확인
「Windows 통합 인증 사용」이 활성화되어 있는지 확인
SPN이 올바르게 등록되어 있는지 확인(
setspn -L <사용자명>)
인증 오류가 발생하는 경우
krb5.conf의 도메인 이름(대문자)과 AD 서버명이 올바른지 확인spnego.preauth.username과spnego.preauth.password가 올바른지 확인AD 서버로의 네트워크 연결 확인
그룹 정보를 취득할 수 없는 경우
LDAP 설정이 올바른지 확인
Bind DN과 비밀번호가 올바른지 확인
사용자가 AD에서 그룹에 속해 있는지 확인
디버그 설정
문제를 조사하기 위해 Fess 의 로그 레벨을 조정하여 SPNEGO 관련 상세 로그를 출력할 수 있습니다.
app/WEB-INF/conf/system.properties 에 다음을 추가:
또는 app/WEB-INF/classes/log4j2.xml 에 다음 로거를 추가:
참고 정보
역할 기반 검색 설정 - 역할 기반 검색 설정
SAML 인증을 통한 SSO 설정 - SAML 인증을 통한 SSO 설정
OpenID Connect SSO 설정 - OpenID Connect 인증을 통한 SSO 설정
Microsoft Entra ID를 이용한 SSO 설정 - Microsoft Entra ID를 통한 SSO 설정