역할 기반 검색에 대하여
Fess 에서는 임의의 인증 시스템에서 인증된 사용자의 인증 정보를 기반으로 검색 결과를 구분할 수 있습니다. 예를 들어 역할 a를 가진 사용자 A는 검색 결과에 역할 a의 정보가 표시되지만, 역할 a를 가지지 않은 사용자 B는 검색해도 표시되지 않습니다. 이 기능을 이용하여 포털이나 싱글 사인온 환경에서 로그인한 사용자의 소속 부서별이나 직급별로 검색을 실현할 수 있습니다.
Fess 의 역할 기반 검색에서는 역할 정보를 다음에서 취득할 수 있습니다.
요청 파라미터
요청 헤더
쿠키
Fess 의 인증 정보
포털이나 에이전트형 싱글 사인온 시스템에서는 인증 시 Fess 가 실행되고 있는 도메인과 경로에 대해 쿠키로 인증 정보를 저장하여 역할 정보를 취득할 수 있습니다. 또한 리버스 프록시형 싱글 사인온 시스템에서는 Fess 에 접근 시 요청 파라미터나 요청 헤더에 인증 정보를 추가하여 역할 정보를 취득할 수 있습니다.
참고
요청 파라미터·요청 헤더·쿠키에서의 역할 취득은 초기 상태에서 비활성화되어 있습니다. 이를 이용하는 경우 app/WEB-INF/classes/fess.xml 의 roleQueryHelper 컴포넌트에서 참조할 키 이름(parameterKey, headerKey, cookieKey)이나 값의 암호화(encryptedParameterValue 등), 구분 문자(valueSeparator, roleSeparator)를 설정해야 합니다. 초기 상태에서 활성화된 것은 Fess 의 인증 정보를 이용한 역할 기반 검색뿐입니다.
역할 기반 검색 설정
여기서는 Fess 의 인증 정보를 이용한 역할 기반 검색 설정 방법을 설명합니다.
Fess 의 관리 화면에서 설정
Fess 를 시작하고 관리자로 로그인합니다. 역할 및 사용자를 생성합니다. 예를 들어 역할 관리 화면에서 Role1을 생성하고, 사용자 관리 화면에서 Role1에 속하는 사용자를 생성합니다. 그룹 단위로 할당하려면 그룹 관리 화면에서 그룹을 생성하고 사용자에게 할당합니다.
다음으로 크롤 설정에서 권한 란에 {role}Role1 을 기술하고 저장합니다. 사용자 단위로 지정하는 경우는 {user}username, 그룹 단위로 지정하는 경우는 {group}groupname 으로 기술할 수 있습니다. 여러 권한을 지정하는 경우는 줄바꿈으로 구분하여 기술합니다.
이후 이 크롤 설정으로 크롤링하면 지정한 역할·사용자·그룹에 속하는 사용자만 검색 가능한 인덱스가 생성됩니다. 로그인한 사용자에게는 자기 자신을 나타내는 {user}username, 소속 역할의 {role}, 소속 그룹의 {group} 권한이 자동으로 부여되어 문서에 설정된 권한과 대조됩니다.
참고
특정 역할·사용자·그룹의 접근을 명시적으로 거부하려면 (deny){role}Role1 과 같이 (deny) 를 붙여 기술합니다((allow) 를 붙인 경우는 허가이며, 미지정 시와 동일하게 처리됩니다).
참고
LDAP이나 싱글 사인온과 연계하는 경우 사용자의 역할·그룹 정보는 인증 원본에서 취득되어 동일하게 권한으로 처리됩니다. LDAP 연계 시의 동작은 fess_config.properties 의 ldap.role.search.user.enabled, ldap.role.search.group.enabled, ldap.role.search.role.enabled``(초기값은 모두 ``true)로 제어할 수 있습니다.
로그인
관리 화면에서 로그아웃합니다. Role1에 속하는 사용자로 로그인합니다. 로그인에 성공하면 검색 화면 상단으로 리다이렉트됩니다.
일반적으로 검색하면 크롤 설정에서 Role1의 역할이 설정된 것만 표시됩니다.
또한 로그인하지 않은 상태의 검색은 guest 사용자에 의한 검색이 됩니다. 로그인하지 않은 사용자에게 표시하려는 문서에는 크롤 설정의 권한 란에 {role}guest 를 설정해 주십시오(초기값은 role.search.guest.permissions 에서 정의됩니다).
로그아웃
관리자 이외의 사용자로 로그인한 상태에서 검색 화면에서 로그아웃을 선택하면 로그아웃됩니다.