ISBN
EDISON 계산과학공학 플랫폼 서비스
연합인증 연동 기술 보고서
- Apache JServ Protocol (AJP) 를 이용한 아파치 환경의 Shibboleth Service Provider 와
Tomcat 환경의 Liferay(EDISON platform) Shibboleth Plug-in 구축 및 연동 보고서 -
일자 2017년 10월 23일
부서 슈퍼컴퓨팅본부 응용연구기술개발실
2
[
목 차 ]
1.
설치 SW 및 사전 준비 ...32.
CentOS 6.9기반의 Apache 2.4.12 환경 구축 ...73.
SRPM을 이용한 Shibboleth SP 설치 ... 114.
Shibboleth SP 설정 ... 165.
Shibboleth SP를 위한 아파치 설정 ... 216.
ID 연계 확인 ... 227.
AJP를 이용한 Liferay 연동 설정 ... 248.
Liferay Shibboleth Plugin 설치 ... 263
1
설치 SW 및 사전 준비
1 . 개 요
본 보고서는 현재 운영되고 있는 EDISON 계산과학공학 플랫폼 서비스에 SAML() 기반의 연합인 증(Identity Federation) 기술을 적용하기 위해, EDISON 서비스와 동일 환경을 구축한 후 연합인 증 SW를 설치하고 연동하기 위한 기술을 정의한다. 현재 EDISON 서비스 환경은 이용자의 서비 스 요청을 수용하기 위해 전면부(front-end)에 위치한 Apache 서버와, 후면부(back-end)에서 서비스를 넘겨받아 동적 페이지를 포함한 실제 모든 서비스를 처리하는 Tomcat 서버가 물리적 으로 분리되어 있다. EDISON 서비스는 물리적으로 후면부 Tomcat 서버에서 운용되며, 널리 활 용되는 CMS(Content Management System)인 Liferay Portal Community Edition 6.2를 이용해 개발되었다. 본 연구에서는 이원화된 동일 환경을 구축하고 양자의 통신은 Apache JServ Protocol (AJP) 프로토콜을 통해 통신하도록 구축함으로써 EDISON 서비스와 동일 환경을 재현 하였다. 또한 현재 서비스 중인 특정 Apache 서버환경(Apache 2.4.12)에 맞춰 연합인증 SW를 설치하기 위해서는 YUM 기반의 자동설치가 불가하므로, SRPM(RPM Source)을 이용해 단계적으 로 필요 패키지 및 Shibboleth SW를 설치하고, Tomcat 서버에는 Liferay CE 및 Shibboleth SW와의 연동을 위한 Liferay의 Shibboleth Plug-in을 설치함으로써 전체적으로 Apache, Tomcat, Liferay, Shibboleth Service Provider가 조화롭게 구동되는 환경을 구축하였다. 이로써 EDISON 서비스와 연합인증 연동을 위한 기본적인 환경 구축이 완료되었으며, 앞으로 서비스 차 원에서의 실제적 연동을 위해 EDISON 서비스와 Liferay CE 간 연동을 위해 Liferay Plug-in 최 적화 개발을 진행할 계획이다.
4
2 . 시스템 구성도
3 . 설치 SW 목록
구분 SW 버전 OS CentOS 6.9 Apache -2.4.12 policycoreutils-python 2.0.83-30.1.el6_8.x86_64 httpd24-httpd-tools 2.4.12-4.el6.2.x86_64 httpd24-httpd httpd24-mod_ssl httpd24-httpd-devel Shibboleth SP 및 의존 패키지 SRPM log4shib 1.0.9-3.3 RPM log4shib-debuginfo liblog4shib15 liblog4shib-devel SRPM xerces-c 3.1.4-1.2 RPM xerces-c-debuginfo xerces-c-bin libxerces-c-3_1 ibxerces-c-devel SRPM xml-security-c 1.7.3-3.3 RPM libxml-security-c17 libxml-security-c-devel xml-security-c-bin xml-security-c-debuginfo SRPM curl-openssl 7.51.0-2.2 RPM curl-openssl curl-openssl-debuginfo libcurl-openssl libcurl-openssl-devel SRPM xmltooling 1.6.0-1.2 RPM libxmltooling7 libxmltooling-devel xmltooling-schemas xmltooling-debuginfo
6 SRPM opensaml 2.6.0-1.2 RPM opensaml-bin opensaml-debuginfo opensaml-schemas libsaml-devel libsaml9 SRPM shibboleth 2.6.0-2.2 RPM shibboleth-debuginfo shibboleth-devel shibboleth Liferay & Tomcat OpenJDK 1.8.0_144 Tomcat 7.0.62 Liferay Portal 6.2-ce-ga6
* yum 명령어로 설치할 때 자동으로 포함되어 설치되는 의존 패키지 제외하였음
4 . 사전 준비
SELinux 비활성화 작업이 필요하다. 아래의 명령어를 통해 SELinux 비활성화 작업을 수행한다. getenforce #SELinux 상태 확인 setenforce 0 #SELinux 비활성화 vi /etc/sysconfig/selinux #영구적 비활성화를 위한 수정 파일에서 아래의 내용과 같이 변경 후 저장하여 SELinux를 영구적으로 비활성화한다. #SELINUX= SELINUX=permissive7 2
CentOS 6.9기반의 Apache 2.4.12 환경 구축
CentOS-6.9 환경에 기본적으로 설치된 아파치 버전은 httpd-2.2.15 이다. 설치하려는 버전은 httpd-2.4.12이므로 httpd24-httpd 패키지를 이용한다. yum을 이용해 (레파지토리를 통해) httpd24-httpd를 설치할 경우 httpd-2.4.6이 설치되므로 httpd-2.4.12 버전을 위한 RPM 파일 들을 직접 다운로드 받아서 설치한다. 해당 버전 RPM 파일을 로컬에 다운로드 한 후 yum으로 설치하면 동일 버전의 의존적 SW들이 함께 설치된다. 이 과정에서 아파치 2.4 기본적인 패키지 들이 설치되므로 아파치 2.4를 위한 레파지토리를 미리 설정해두어야 한다. * 여기에서는 관리자 계정(root)으로 설치를 진행하였다.* 본 문서의 CLI 명령문을 copy & paste 할 경우 한글 워드프로세서에 의해 자동 변환된 기능(예. ‘--’ -> ‘—’)으로 인해 오류가 생성될 수 있으므로 직접 명령어를 입력해 설치한다.
1 . httpd24-httpd 레파지토리 설정
curl –L -s http://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-httpd24.repo > /etc/yum.repos.d/epel-httpd24.repo2 . httpd24-httpd SW(2.4.12) 다운로드
다운로드 사이트 http://mirror.centos.org/centos/6/sclo/x86_64/rh/httpd24 RPM 다운로드 httpd24-httpd-2.4.12-4.el6.2.x86_64.rpm httpd24-httpd-devel-2.4.12-4.el6.2.x86_64.rpm8 httpd24-httpd-tools-2.4.12-4.el6.2.x86_64.rpm httpd24-mod_ssl-2.4.12-4.el6.2.x86_64.rpm wget http://mirror.centos.org/centos/6/sclo/x86_64/rh/httpd24/httpd24-httpd-2.4.12-4.el6.2.x86_64.rpm wget http://mirror.centos.org/centos/6/sclo/x86_64/rh/httpd24/httpd24-httpd-devel-2.4.12-4.el6.2.x86_64.rpm wget http://mirror.centos.org/centos/6/sclo/x86_64/rh/httpd24/httpd24-httpd-tools-2.4.12-4.el6.2.x86_64.rpm wget http://mirror.centos.org/centos/6/sclo/x86_64/rh/httpd24/httpd24-mod_ssl-2.4.12-4.el6.2.x86_64.rpm
3 . 설치
아래의 명령어를 통해 설치한다.yum install policycoreutils-python
yum install ./httpd24-httpd-tools-2.4.12-4.el6.2.x86_64.rpm yum install ./httpd24-httpd-2.4.12-4.el6.2.x86_64.rpm yum install ./httpd24-mod_ssl-2.4.12-4.el6.2.x86_64.rpm yum install ./httpd24-httpd-devel-2.4.12-4.el6.2.x86_64.rpm
설치 직 후 Apache-2.4.12 환경은 아래와 같다.
설정파일 /opt/rh/httpd24/root/etc/httpd/conf/httpd.conf DocumentRoot /opt/rh/httpd24/root/var/www/html/
Shibboleth SP 제한 접근 경로 /opt/rh/httpd24/root/var/www/html/secure/ 로그파일 /var/log/httpd24/
9
4 . 자동 시작 설정 및 구동 확인
Apache-2.2가 구동 중이라면 중지한다. service httpd status service httpd stop Apache-2.4.12를 부팅 시 자동시작 하도록 설정하고 구동한다. chkconfig httpd24-httpd on service httpd24-httpd start 웹 브라우저로 http://localhost 를 접속해 2.4.12 버전의 정상구동을 확인한다.5 . Apache SSL 설정
개인키 및 인증요청서를 생성한다.openssl genrsa –des3 –out server.key 2048 openssl req –new -key server.key –out server.csr
* Common Name 설정 시 호스트 도메인 네임으로 설정한다.
개인키 암호제거 및 인증서를 생성한다.
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 –req -days 365 –in server.csr –signkey server.key -out server.crt
개인키 및 인증서를 설치한다.
cp server.crt /etc/ssl/certs/ mkdir /etc/ssl/private
cp server.key /etc/ssl/private/
10 vi /opt/rh/httpd24/root/etc/httpd/conf.d/ssl.conf #설정 파일을 열고 아래 내용 수정 SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key 정상 구동을 확인한다. service httpd24-httpd restart 웹 브라우저로 https://localhost 를 접속해본다. 첫 접속 후 “Add Exception”을 눌러 신뢰된 사이트로 등록한다.
11
3
SRPM을 이용한 Shibboleth SP 설치
일반적으로 Shibboleth SP의 경우 Shibboleth IDP와 달리 yum으로 간단히 설치할 수 있다. 그러나 CentOS-6.9 및 httpd-2.2 환경에서 yum으로 자동설치하게 되면 built-in된 아파치 버전(httpd-2.2.15)에 맞추어 설치된다. Apache-2.4.12 환경에 맞게 설치하려면 Shibboleth SP SW 및 각종 관련 패키지를 소스코드로부터 설치하거나 SRPM(RPM Source)으로 설치하는 방법이 있다. 여기에서는 후 자의 방법으로 설치한다. SRPM은 RPM 파일을 생성하기 위한 소스 RPM으로 일반적으로 *.src.rpm 확장자를 가진다. SRPM 설치 방법은 우선 1. 설치환경에 맞는 RPM 파일들을 생성하는 단계와 2. 생 성된 RPM들을 이용해 최종 SW를 설치하는 두 단계로 나뉜다. * 참조 - SRPM: http://download.opensuse.org/repositories/security://shibboleth/CentOS_CentOS-6/src/ - RPM: http://download.opensuse.org/repositories/security://shibboleth/CentOS_CentOS-6/x86_64/ - 설치방법 https://venturoustech.wordpress.com/tag/amazon-linux/ https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPLinuxSRPMBuild
1 . Shibboelth 레파지토리 설정
curl –L –s http://download.opensuse.org/repositories/security://shibboleth/CentOS_CentOS-6/security:shibboleth.repo > /etc/yum.repos.d/shibboleth.repo2 . 필요 패키지 설치
yum install automake boost-devel chrpath doxygen gcc-c++ groff httpd-devel libidn-devel openldap-libidn-devel openssl-libidn-devel redhat-rpm-config stunnel unixODBC-libidn-devel
12
3 . SRPM 다운로드
log4shib-1.0.9-3.3.src.rpm xerces-c-3.1.4-1.2.src.rpm xml-security-c-1.7.3-3.3.src.rpm curl-openssl-7.56.1-1.1.src.rpm xmltooling-1.6.0-1.2.src.rpm opensaml-2.6.0-1.2.src.rpm shibboleth-2.6.0-2.2.src.rpm wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_CentOS-6/src/log4shib-1.0.9-3.3.src.rpm wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_CentOS-6/src/xerces-c-3.1.4-1.2.src.rpm wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_CentOS-6/src/xml-security-c-1.7.3-3.3.src.rpm wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_CentOS-6/src/curl-openssl-7.56.1-1.1.src.rpm wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_CentOS-6/src/xmltooling-1.6.0-1.2.src.rpm wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_CentOS-6/src/opensaml-2.6.0-1.2.src.rpm wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_CentOS-6/src/shibboleth-2.6.0-2.2.src.rpm4 . SRPM 빌드 및 RPM 생성
반드시 아래 순서로 설치한다. 각 단계 내에서도 순서대로 설치한다. SRPM(*.src.rpm) 빌드 후13
생성된 RPM 파일은 아래 경로에 존재하므로 rpm 설치는 아래 경로로 이동해서 수행한다.
* RPM 생성 경로 : /root/rpmbuild/RPMS/x86_64
‘rpmbuild’ 명렁어가 설치되지 않은 경우 아래와 같이 설치
yum install rpm-build
1 ) log4shib 설치
rpmbuild —rebuild log4shib-1.0.9-3.3.src.rpm
rpm –ivh /root/rpmbuild/RPMS/x86_64/log4shib-debuginfo-1.0.9-3.3.x86_64.rpm rpm –ivh /root/rpmbuild/RPMS/x86_64/liblog4shib*
2 ) xerces-c 설치
rpmbuild —rebuild xerces-c-3.1.4-1.2.src.rpm
rpm –ivh /root/rpmbuild/RPMS/x86_64/llibxerces-c-* rpm –ivh /root/rpmbuild/RPMS/x86_64/xerces-c*
3 ) xml-security-c 설치
rpmbuild –-rebuild xml-security-c-1.7.3-3.3.src.rpm rpm –ivh /root/rpmbuild/RPMS/x86_64/libxml-security* rpm –ivh /root/rpmbuild/RPMS/x86_64/xml-security-c*
4 ) curl-openssl 설치
rpmbuild –-rebuild curl-openssl-7.51.0-2.2.src.rpm rpm –ivh /root/rpmbuild/RPMS/x86_64/libcurl-openssl* rpm –ivh /root/rpmbuild/RPMS/x86_64/curl-openssl*
14 5 ) xmltooling 설치
rpmbuild –-rebuild xmltooling-1.6.0-1.2.src.rpm rpm –ivh /root/rpmbuild/RPMS/x86_64/libxmltooling* rpm –ivh /root/rpmbuild/RPMS/x86_64/xmltooling*
6 ) opensaml
rpmbuild –-rebuild opensaml-2.6.0-1.2.src.rpm rpm –ivh /root/rpmbuild/RPMS/x86_64/libsaml* rpm –ivh /root/rpmbuild/RPMS/x86_64/opensaml* 7 ) Shibboleth SP 설치 아파치 2.4.12에 맞게 환경을 설정하기 위해 apxs 스크립트를 아래와 같이 변경한다. vi /opt/rh/httpd24/root/usr/bin/apxs 변경 전
my $libdir = `pkg-config —variable=libdir apr-1`; /* 35 line */
변경 후
my $libdir = "/opt/rh/httpd24/root/usr/lib64/"; /* 35 line */
15
rpmbuild --rebuild --without builtinapache –D 'shib_options --with-apxs24=/opt/rh/httpd24/root/usr/bin/apxs CPPFLAGS="-I/opt/rh/httpd24/root/usr/include/httpd" --with-apr1=/opt/rh/httpd24/root/usr/bin/apr-1-config --with-apu=/opt/rh/httpd24/root/usr/bin/apu-1-config --enable-apache-24 --with-openssl=/usr/local/ssl' shibboleth-2.6.0-2.2.src.rpm RPM 설치 rpm -ivh shibboleth*
16
4
Shibboleth SP 설정
Shibboleth SP 설정 파일을 수정한다.
vi /etc/shibboleth/shibboleth2.xml
1 . ACL 설정
<!-- Status reporting service. -->
<Handler type="Status" Location="/Status" acl="127.0.0.1 ::1 IP_ADDR"/>
2 . entityID 설정
<ApplicationDefaults entityID="https://SP_ADDRESS/shibboleth" REMOTE_USER="eppn persistent-id targeted-id" attributePrefix=“AJP_”>
3 . SAML 메시지 암호화/서명용 key 생성 및 설정
아래 명령어를 사용하여 Shibboleth에서 사용할 서명 생성
cd /etc/shibboleth
openssl req -newkey rsa:4096 -new -x509 -days 365 -nodes –text -out shibsp.crt – keyout shibsp.key
chmod 644 shibsp.keyvi shibb
Shibboleth SP 설정 파일에서 아래 부분 변경
<CredentialResolver type="File" key="shibsp.key" certificate="shibsp.crt"/>
4 . IDP 메타데이터 설정
17
<MetadataProvider type="XML" validate="true"
uri="https://fedinfo.kreonet.net/signedmetadata/federation/KAFE-testfed/metadata.xml" backingFilePath="kafe-metadata.xml" reloadInterval="7200"> <MetadataFilter type="RequireValidUntil" maxValidityInterval="2419200"/>
<MetadataFilter type="Signature" certificate="kafe-fed.crt"/> </MetadataProvider> 아래 명령어로 KAFE 메타데이터 인증서를 다운로드 받아 저장 cd /etc/shibboleth wget https://fedinfo.kreonet.net/cert/kafe-fed.crt * KAFE 인증서 신뢰경로 추가 웹브라우저를 이용해 아래 사이트에 접속 후 KAFE 인증서 다운로드를 위한 아래 주소를 방문해서 URL 버튼을 클릭한 다. Chrome 웹 브라우저의 경우 인증서 추가를 위한 프로그램이 실행되고 "Downloading Certificate" 창에서 모두 ‘v’ 후 OK 버튼을 클릭해 신뢰경로에 추가한다.
* 인증서 다운로드 사이트 : https://coreen.kreonet.net/join
Shibboleth SP 설정에 TestIdP 메타데이터 추가
<MetadataProvider type="XML" validate="false"
uri="https://testidp.kreonet.net/simplesaml/saml2/idp/metadata.php“ backingFilePath="testidp-metadata.xml" reloadInterval="7200">
</MetadataProvider>
18 <SSO entityID="https://testidp.kreonet.net/idp/simplesamlphp" discoveryProtocol="SAMLDS" discoveryURL="https://ds.kreonet.net/kafe"> SAML2 SAML1 </SSO>
6 . SSL 설정
<Sessions lifetime="28800" timeout="3600" relayState="ss:mem" checkAddress="false" handlerSSL="true" cookieProps="http">
7 . SP Metadata 설정 수정
IdP에 eppn등 서비스에서 필요한 정보를 요청하기 위해 아래 부분을 찾아 변경
<Handler type=“MetadataGenerator” Location=“/Metadata” signing=“false”> <md:AttributeConsumingService index="1">
<md:ServiceName xml:lang="en">Liferay Test</md:ServiceName> <md:RequestedAttribute FriendlyName="displayName" Name="urn:oid:2.16.840.1.113730.3.1.241"/> <md:RequestedAttribute FriendlyName="mail" Name="urn:oid:0.9.2342.19200300.100.1.3"/> <md:RequestedAttribute FriendlyName="uid" Name="urn:oid:0.9.2342.19200300.100.1.1"/>
<md:RequestedAttribute FriendlyName="orgName" Name="urn:oid:2.5.4.10"/> <md:RequestedAttribute FriendlyName="eppn"
Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.6"/>
<md:RequestedAttribute FriendlyName="persistent-id" Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10"/>
19 <md:RequestedAttribute FriendlyName="schacHomeOrganization" Name="urn:oid:1.3.6.1.4.1.25178.1.2.9"/> <md:RequestedAttribute FriendlyName="unscoped-affiliation" Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.1"/> </md:AttributeConsumingService></md:SPSSODescriptor> </Handler>
8 . 사용자 속성명 설정
oid 기반의 속성명 인식이 가능하도록 attribute-map.xml 파일을 수정 vi /etc/shibboleth/attribute-map.xml<!-- SCHAC attributes, uncomment to use... --> // 아래 라인 활성화
<Attribute name="urn:oid:1.3.6.1.4.1.25178.1.2.9" id="schacHomeOrganization"/> ...
// 아래 모든 라인 활성화
<Attribute name="urn:oid:2.5.4.3" id="cn"/> <Attribute name="urn:oid:2.5.4.4" id="sn"/>
<Attribute name="urn:oid:2.5.4.42" id="givenName"/>
<Attribute name="urn:oid:2.16.840.1.113730.3.1.241" id="displayName"/> <Attribute name="urn:oid:0.9.2342.19200300.100.1.1" id="uid"/>
<Attribute name="urn:oid:0.9.2342.19200300.100.1.3" id="mail"/> ...
// 아래 라인 활성화
20
9 . 사용자 속성정책 설정
attribute-policy.xml에 속성정책을 설정
vi /etc/shibboleth/attribute-policy.xml
Shibboleth SP에서 scope 필터링을 하지 않을 경우 코멘트 처리해서 해당 기능 비활성화
<!-- Enforce that the values of schacHomeOrganization are a valid Scope. -->
<!--
<afp:AttributeRule attributeID="schacHomeOrganization">
<afp:PermitValueRule xsi:type="saml:AttributeValueMatchesShibMDScope" /> </afp:AttributeRule>
21 5
Shibboleth SP를 위한 아파치 설정
1 . Shibboleth SP를 위한 아파치 설정 변경
Shibboleth SP를 위한 아파치 설정파일(shibd.conf)을 복사한다. cp /etc/shibboleth/apache.config /opt/rh/httpd24/root/etc/httpd/conf.d/shibd.conf httpd-2.4 환경에서 생성된 모듈로 모듈명을 변경 vi shibd.confLoadModule mod_shib /usr/lib64/shibboleth/mod_shib_24.so
2 . Shibboleth 접근 제한 설정
<Location /secure> AuthType shibboleth # ShibCompatWith24 On ShibRequestSetting requireSession 1 require shib-session </Location>3 . 아파치 설정 반영
httpd-2.4를 재시작 service httpd24-httpd restart22
6
ID 연계 확인
1 . Shibboleth SP 기본 구동 확인
shibd –t 명령어로 점검한다.
* 아래와 같은 에러가 발생하면 시스템에 원래 설치된 libcurl 대신 shibboleth 설치 시 생성된 libcurl을 (libcurl.so.4.4.0) 참조할 수 있도록 수정해야 한다.
2017-10-13 06:09:51 CRIT XMLTooling.Config : libcurl lacks OpenSSL-specific options, this will greatly limit functionality
2017-10-13 06:09:51 ERROR XMLTooling.libcurl.InputStream : error while fetching https://fedinfo.kreonet.net/signedmetadata/federation/KAFE-testfed/metadata.xml: (59) Unknown cipher in list: ALL:!aNULL:!LOW:!EXPORT:!SSLv2
2017-10-13 06:09:51 ERROR XMLTooling.libcurl.InputStream : on Red Hat 6+, make sure libcurl used is built with OpenSSL
이 경우 아래 명령어를 수정 cd /usr/lib64 rm libcurl.so.4 ln -s /opt/shibboleth/lib64/libcurl.so.4.4.0 libcurl.so.4
2 . shibboleth SP를 구동 확인
아래 명령어로 shibboleth SP를 구동하고 상태를 확인한다.service shibd start service shibd status
정상적으로 구동된다면 아래 사이트에서 로그파일 및 SP 메타데이터를 확인할 수 있다.
* Shibboleth SP 로그파일 : /var/log/shibboleth/shibd.log
23
이후 단계는 연동할 Identity Provider에서 SP 메타데이터 등록 및 관련 설정을 완료한 뒤 수행 한다.
3 . 확인
service httpd24-httpd restart service shibd restart
웹브라우저로 Shibboleth로 접근을 제한한 경로로 접근한다.
* 접근경로 : http://localhost/secure/
웹브라우저로 Shibboleth Session 정보를 확인한다.
24
7
AJP를 이용한 Liferay 연동 설정
로컬에 설치된 Shibboleth SP가 AJP를 통해 원격에 설치된 Tomcat 및 Tomcat 응용(Liferay) 에 연동하기 위한 설정에 대해 기술한다.
1 . AJP 모듈 구동 확인
shibboeth SP 아파치 모듈 로드 확인
cd /opt/rh/http24/root/usr/sbin ./apachectl –M | grep mod_shib
AJP 아파치 모듈 로드 확인
./apachectl –M | grep proxy_ajp_module
2 . 아파치 설정
shibboleth SP를 위한 아파치 설정파일에 AJP를 설정 vi /opt/rh/httpd24/root/etc/httpd/conf.d/shibd.conf Shibboleth.sso ProxyPass 예외 처리 <Location /Shibboleth.sso> Satisfy AnyAllow from all
ProxyPass !
</Location>
AJP 패킷 사이즈 설정
ProxyIOBufferSize 65536
25 ProxyPass / ajp://LIFERAY_IP_ADDRESS:8009/ ProxyPassReverse / ajp://LIFERAY_IP_ADDRESS:8009/ shibboleth 제한 설정 <Location /> AuthType shibboleth require shibboleth </Location> <Location /c/portal/login/shibboleth> AuthType shibboleth ShibRequestSetting requireSession 1 require shib-session </Location>
* /c/portal/login/shibboleth 경로의 경우 Shibboleth를 사용하여 로그인을 하기 위한 경로로 사용. /c/portal/login 경로로 설정할 경우 Liferay의 로컬 로그인 경로를 무시하게 될 수 있음
3 . 구동 및 테스트
service shibd restartservice httpd24-httpd restart
웹브라우저로 “https://IP_ADDRESS/”를 접속해서 원격의 liferay 응용으로 연동이 되면 ‘shibboleth’ 로그인 버튼을 클릭하고 SAML 연동을 확인한다.
26
8
Liferay Shibboleth Plugin 설치
첨부된 shibboleth.war 파일을 Liferay 관리자 페이지에서 업로드한다.
* Control Panel – Apps – App Manager - Install
Shibboleth 플러그인의 설정에서 플러그인을 활성화
* Control Panel – Configuration – Authentication – Shibboleth
설정명 설정내용 Login URL Shibboleth에서 설정된 로그인 URL, 서비스의 로그인 페이 지가 커스터마이징 된 경우 Shibboleth 로그인을 구현하기 위해서는 경로를 직접 추가해야 함 Logout URL Shibboleth 로그아웃 URL, 로컬 로그아웃의 경우에도 Shibboleth를 먼저 로그아웃 시켜야 하기 때문에 기본값으 로 /Shibboleth.sso/Logout?return=/ 으로 설정 Error URL Shibboleth에서 에러가 발생할 경우 이동할 에러 페이지 경 로
27
Shibboleth user eppn header
IdP로부터 넘겨받은 eppn의 속성명, ID 생성, 기관명 확인 을 위해 사용되는 정보
User ID Prefix 자동으로 생성할 User ID의 앞에 입력될 키워드 Shibboleth user email header IdP로부터 넘겨받은 사용자 메일 주소
Shibboleth user firstname header
IdP로부터 넘겨받은 사용자 이름, displayName이 서비스에 서 표시되는 사용자 이름
Custom Fields Affiliation Attribute
기관명을 입력하기 위해 생성한 Liferay User Custom Field 이름, 하단의 테이블에서 도메인에 따른 기관명을 설정, 도 메인을 *로 설정하는 경우 도메인에 해당하는 기관이 없는 상태일 때 지정할 기관명을 설정 할 수 있음
Logout enable Shibboleth 로그아웃 기능 활성화
Auto-create users 사용자가 기존에 존재하지 않을 경우 자동 생성
Auto-update users
Shibboleth를 사용하여 로그인 할 때마다 사용자의 정보를 최신 상태로 업데이트
28
9
Liferay 연합인증 연동 확인
Apache가 설치된 IP1 주소로 접속하면 AJP를 통해 Tomcat에 설치된 LifeLay 로 자동 리다이렉션 된다. KAFE 버튼을 클릭해서 연합인증을 이용한 로그인을 시도한다.
29
아래와 같이 사용자가 사용자 정보 제공에 동의하면 인증게이트웨이에 저장된 사용자 속성 정보가LifeLay로 전달된다.
이어 LifeLay 에서 이용약관 동의 및 암호 설정 창이 나타나는데 동의를 클릭하고 암호를 설정하면 LifeLay 환경에 사용자 정보가 등록된다.
30