36
ISBN : OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 일 자: 2014년 11월 30일 부 서: 첨단연구망센터/첨단연구망개발팀 제출자: 장 희 진 - 2 - < 목 차 > 1 개요 및 구성도 ·············································································· 4 1.1 기술 개요 ····································································································· 4 1.2 시스템 구성도 ····························································································· 5 1.3 설치 S/W 목록 ··························································································· 5 1.4 H/W 사양 ····································································································· 6 2. S/W 설치 및 기본 환경 설정 ···················································· 7 2.1 가상화 S/W 설치 및 가상머신(VM) 생성 ············································ 7 2.2 네트워크 정보 설정 ··················································································· 9 2.3 참고사항 ····································································································· 14 3. Service Provider 서버 구축 ·················································· 17 3.1 SimpleSAMLphp 설치 ··········································································· 17 3.2 Service Provider 설정 ·········································································· 21 3.3 참고사항 ····································································································· 30 4. Identity Provider 서버 구축 ·················································· 33 4.1 SimpleSAMLphp 설치 ··········································································· 33 4.2 Identity Provider 설정 ·········································································· 33 4.3 참고사항 ····································································································· 39 5. OpenConext VM 서버 구축 ··················································· 44 5.1 OpenConext VM 설치 ··········································································· 44 5.2 SP 등록하기 ······························································································ 46 5.3 IdP 등록하기 ····························································································· 51 6. OpenConext 연동 테스트 ························································ 58 6.1 SP의 서비스 페이지 작성 ······································································ 58 6.2 SP-OpenConext-Mujina IdP 연동 ···················································· 59 6.3 SP-OpenConext-KISTI IdP 연동 ······················································ 61 6.4 참고사항 ····································································································· 67

OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

ISBN :

OpenConext VM을 이용한 인증 페더레이션

설치 및 관리 매뉴얼

일 자: 2014년 11월 30일

부 서: 첨단연구망센터/첨단연구망개발팀

제출자: 장 희 진

- 2 -

< 목 차 >

1 개요 및 구성도 ·············································································· 4

1.1 기술 개요 ····································································································· 4

1.2 시스템 구성도 ····························································································· 5

1.3 설치 S/W 목록 ··························································································· 5

1.4 H/W 사양 ····································································································· 6

2. S/W 설치 및 기본 환경 설정 ···················································· 7

2.1 가상화 S/W 설치 및 가상머신(VM) 생성 ············································ 7

2.2 네트워크 정보 설정 ··················································································· 9

2.3 참고사항 ····································································································· 14

3. Service Provider 서버 구축 ·················································· 17

3.1 SimpleSAMLphp 설치 ··········································································· 17

3.2 Service Provider 설정 ·········································································· 21

3.3 참고사항 ····································································································· 30

4. Identity Provider 서버 구축 ·················································· 33

4.1 SimpleSAMLphp 설치 ··········································································· 33

4.2 Identity Provider 설정 ·········································································· 33

4.3 참고사항 ····································································································· 39

5. OpenConext VM 서버 구축 ··················································· 44

5.1 OpenConext VM 설치 ··········································································· 44

5.2 SP 등록하기 ······························································································ 46

5.3 IdP 등록하기 ····························································································· 51

6. OpenConext 연동 테스트 ························································ 58

6.1 SP의 서비스 페이지 작성 ······································································ 58

6.2 SP-OpenConext-Mujina IdP 연동 ···················································· 59

6.3 SP-OpenConext-KISTI IdP 연동 ······················································ 61

6.4 참고사항 ····································································································· 67

Page 2: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 3 -

7. 참고 문헌 및 사이트 ································································· 71

7.1 SP 설치 참조 ···························································································· 71

7.2 IdP 설치 참조 ··························································································· 71

7.3 OpenConext 설치 참조 ········································································· 71

- 4 -

1 개요 및 구성도

1.1 개요

Federation 기능은 사용자가 서비스 공급자(Service Provider, SP)의 웹서비스를 이용시 소속된 기관

(Institution) 혹은 신원공급처(Identity Provider, IdP)의 익숙한 인증절차를 거쳐 로그인할 수 있도록 하는

편리한 서비스이다. 본 보고서에서는 서비스 공급자(SP)와 신원 공급자(Id), 그리고 중간에서 이 두 공급자를

중계하는 Federation 기능을 제공하는 OpenConext VM 서버를 설치하고 각 구성요소의 연동하는 방법에

대해 기술한다.

[그림 1] Federation 서비스 예시

Page 3: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 5 -

1.2 구성도

[그림 2] 테스트베드 전체 구성도

1.3 설치 S/W 목록

S/W 이름 SP IdP OC 설치 버전SimpleSAMLphp v v SimpleSAMLphp-1.13.0OpenConext VM v OpenConext-vm 74.4Apache v v v Apache 2.2.15*

PHP v v v PHP 5.3.3*

CentOS Vmware 이미지 v v v CentOS 6.2 VMware 이미지JAVA v v v OpenJDK 1.7.0_65*

VMWare Workstation 또는 VMWare Player v v v VMWare Workstation 9.0.2

[표 1] 설치 S/W 목록

※ * 표시는 OpenConext VM S/W에 포함되어 함께 설치되는 프로그램 목록

- 6 -

1.4 H/W 사양

1.4.1 H/W 사양

H/W 사양Memory 16.0GB Dual-Channel DDR3 @ 802MHzProcessor Intel Core i7 2700K @ 3.50GHz

Hard Disk 119GB SAMSUNG SSD 931GB Western Digital WDC

NIC Intel(R) 82579V Gigabit Network ConnectionOS Windows 7 Professional K SP1 (64-bit)Motherboard ASUSTeK COMPUTER INC. P8Z77-V (LGA1155)Graphics 1023MB NVIDIA GeForce GTX 560Optical Drives HL-DT-ST BDDVDRW CH10LS28

[표 1] 컴퓨터 H/W 사양

1.4.2 가상머신 H/W 사양

H/W 사양Memory 2 GProcessor 1Hard Disk 60 GBNetwork Adapter NATOS CentOS 6.2 (kernel v2.6.32)

[표 1] 가상머신 H/W 사양

Page 4: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 7 -

2 S/W 설치 및 기본 환경 설정

2.1 S/W 설치 및 가상머신(VM) 생성

2.1.1 VMware 및 가상머신 생성

VMware S/W를 설치하고 아래 순서에 따라 SP(Service Provider), OpenConext, IdP(Identity

Provider)를 위한 가상머신 3 대를 설치한다. 가상머신은 모두 동일한 CentOS 6.2를 사용하므로 가

상머신 1 대 설치 후 이미지를 복사하여 나머지 2 대를 준비한다.

1. 가상화 S/W 설치

- VMware Workstation 또는 VMware Player를 설치한다.

2. 리눅스 가상머신 설치

- 리눅스 ISO 이미지로부터 가상머신 내 리눅스를 직접 설치하거나, 리눅스가 설치된 VMware 이미

지를 다운받아 사용한다.

- 본 설치 과정에서는 리눅스 가상머신으로 CentOS-6.2를 사용했으며 아래 SourceForge 사이트를

통해 다운로드 받는다.

http://sourceforge.net/projects/centos-6-vmware/

※ OpenConext VM은 리눅스 가상머신으로 CentOS 6 또는 RedHat EL 6 이상 설치를 권고한다.

3. VMware-tools-install 설치

- 리눅스 가상머신으로 부팅 후 VMware-tools-install 프로그램을 설치하여 모니터 등 작업환경을

최적화한다.

2.1.2 가상머신 복사

1. 가상머신 복사

- 2.1.1의 절차에 따라 가상머신이 1 대 설치되었으므로 *.vmx, *.vmdk 등이 포함된 가상머신이 설

치된 폴더 전체를 복사하여 나머지 두 대의 리눅스 가상머신을 준비한다.

2. 가상머신 환경 구성

- 8 -

- 각 가상머신 부팅 시 아래와 같이 설정한다.

※ 첫 번째 설치한 가상머신 외 복사한 가상머신 2 대의 경우 부팅 시 'I copied it'을 선택한다. 'I copied it'을 선택

한 경우, NIC 카드에 새로운 MAC address (HW address)를 생성한다.

[그림 3] 가상머신 구동 후 설정

※ 그래도 새로운 MAC address가 생성되지 않을 경우가 간혹 있으므로 복사한 가상머신들의 VM > Settings 메뉴에서

'Network Adapter' 항목을 지우고 새로 생성한다. 가상머신 부팅 후 ‘ifconfig' 명령을 통해 새로운 MAC address가

생성되었음을 확인할 수 있다.

[그림 4] 가상머신 네트워크 어댑터 재설치

Page 5: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 9 -

2.2 정보 설정

2.2.1 IP 정보 설정

1. 활성화된 네트워크 인터페이스 확인

- 사용가능한 네트워크 인터페이스를 확인한다.

# ls /sys/class/net

[그림 5] 사용가능한 네트워크 인터페이스 확인

2. MAC 주소 중복 확인

- 아래 명령어를 통해 SP, IdP, OpenConext의 활성화된 인터페이스의 MAC 주소가 중복되지 않은지 확인한다.

# ifconfig

[그림 6] 맥주소 확인 (SP)

- 10 -

[그림 7] 맥주소 확인 (IdP)

[그림 8] 맥주소 확인 (OpenConext)

3. 네트워크 설정파일 생성

- 활성화된 인터페이스에 대해 아래와 같이 네트워크 설정파일을 작성하여 IP 주소를 정적으로 할당한다.

※ 네트워크 설정을 위해서는 'su'명령어를 이용해 root로 로그인 후 작업한다.

Page 6: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 11 -

# cd /etc/sysconfig/network-scripts/# vi ifcfg-eth3

[그림 9] 네트워크 정보 수동설정 (IdP)

[그림 10] 네트워크 정보 수동설정 (SP)

- 12 -

[그림 11] 네트워크 정보 수동설정 (OpenConext)

- DEVICE, NAME 항목은 활성화된 인터페이스를 입력한다.

- IPADDR, PREFIX는 구성하고자 하는 IP 정보를 입력한다.

- DNS 서버주소는 아래 명령어의 결과를 통해 확인한다.

# nslookup www.naver.com

- GATEWAY의 주소는 아래 명령어의 결과를 통해 확인한다.

# netstat -rn

- 이때 MAC 주소(HWADDR)는 1의 과정에서 확인한 MAC 주소를 입력한다.

Page 7: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 13 -

[그림 12] DNS 및 게이트웨이 정보 조회

4. 네트워크 서비스 재시작 및 설정정보 확인

# service network restart# ifconfig eth3

5. 도메인 네임 설정파일에 IdP/SP/OpenConext 서버에 대한 호스트 네임을 추가한다.

# vi etc/hosts

[그림 13] 도메인 네임 추가

- 14 -

6. IP 연결 확인

- ping 을 이용해 SP, IdP, OpenConext 서버 간 상호 IP 연결 및 도메인 네임을 이용한 연결성을 확인한다.

# ping 192.168.149.100# ping demo.openconext.org

2.3

2.3.1 Trouble Shooting & Tip

1. 방화벽 기능 해제

- iptables 등 로컬 Firewall 프로그램이 IP 연결 설정 시 문제가 될 수 있으므로 Firewall 기능을 모두 해제한다.

- ‘setup' 명령어의 'Firewall configuration' 에서 'Enable' 항목을 해제한다.

# setup

[그림 14] 방화벽 기능 해제

2. SE Linux 기능 해제

- 보안강화를 위한 SE linux 기능이 각종 S/W 설치를 방해할 수 있으므로 SE linux 기능을 해제한다.

Page 8: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 15 -

- 현재 SE linux 설정을 확인한다.

# getenforce

- SE linux 기능을 해제한다.

# setenforce 0

※ 0 : permissive 보안에 영향을 미치는 기능이 감지되면 허용은 하지만 로그와 화면에 남김, 1 : enforcing 보안에

영향을 미치는 기능이 감지되면 시스템에서 허용안함

- 재부팅 하면 다시 활성화됨으로 설정파일을 통해 영구적으로 해제한다.

# vi /etc/sysconfig/selinux

[그림 15] SE Linux 기능 해제

‘SELINUX’ 항목을 ‘disabled’ 또는 ‘permissive’ 로 설정 변경한다.

※ ‘setenforce’를 이용한 설정은 현재 상태에서만 유효하며 재부팅하면 설정이 다시 초기화된다. 따라서 재부팅 이후

에도 모두 SE linux 기능을 비활성화시키려면 'selinux' 설정파일에 위와 같이 설정해야 한다.

3. 커맨드라인 호스트네임 표시

- 작업의 편의를 위해 커맨드라인에 해당 머신의 도메인 네임을 표시한다.

- 16 -

# setup

- Network configuration > DNS configuration 에서 Hostname 항목을 설정한다.

SP Hostname : sp-demo1.openconext.orgIdP Hostname : idp-demo1.openconext.orgOpenConext Hostname : demo.openconext.org

[그림 16] 호스트 네임 설정

Page 9: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 17 -

3 Service Provider 서버 구축

3.1 SimpleSAMLphp

3.1.1 요구사항

- PHP 5.3.0 버전 이상의 PHP를 설치한다.

- Apache 등 PHP 실행이 가능한 웹서버 설치되어 있어야 한다.

3.1.2 SimpleSAMLphp 설치

1. 최신버전 확인

- 아래 사이트에서 SimpleSAMLphp의 최신버전을 확인한다.

https://simplesamlphp.org/download

2. 프로그램 소스 다운로드

- 소스를 다운로드 받아 설치한다.

# cd /var# tar xzf simplesamlphp-1.x.y.tar.gz# mv simplesamlphp-1.x.y simplesamlphp

3. 웹서버 설정

- SimpleSAMLphp 페이지(/var/simplesamlphp/www)가 IdP, OpenConext 서버로부터 인터넷 접속이

가능하도록 웹서버를 설정한다.

# vi /etc/httpd/conf/httpd.conf

- ’DocumentRoot’를 ‘/var/www/html’로 설정한다.

- 18 -

[그림 17] 웹서버 설정

- 심볼릭 링크를 생성해서 simpleSAMLphp 페이지가 인터넷 접속이 가능하도록 설정한다.

# ln -s /var/simplesamlphp/www /var/www/html/simplesaml

[그림 18] SimpleSAMLphp 경로 설정

4. SimpleSAMLphp 설정파일 설정

# vi /var/simplesamlphp/config/config.php

- 관리자 암호 설정

config.php

'auth.adminpassword' => 'tomtom',

- 아래 명령어를 이용해 랜덤문자인 ‘secretsalt’를 생성한다.

Page 10: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 19 -

# tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' </dev/urandom | dd bs=32 count=1 2 > /dev/null;echo

- 생성된 문자를 'secretsalt'에 설정한다. 그리고 연락정보를 설정한다.

config.php

'secretsalt' => '0evvxlykxjdh6z427468btg6vaxcqlmb',

'technicalcontact_name' => 'Heejin Jang','technicalcontact_email' => '[email protected]',

[그림 19] config.php 파일 설정

5. 특정 기능 활성화/비활성화 설정

- SimpleSAMLphp의 특정 모듈의 기능을 default 상태에서 변경(활성화/비활성화)하고 싶으면

modules/의 해당 모듈명 디렉토리 하위에 ‘enable’ 혹은 ‘disable’ 이름의 빈 파일을 생성한다.

- 20 -

consent 모듈 활성화

# cd modules# ls -l# cd consent# touch enable

consent 모듈 비활성화

# cd modules/consent# mv enable disable

6. SP의 simpleSAMLphp 설치 페이지 접속 및 요구사항 확인

- simpleSAMLphp 설치 페이지에 접속하면 초록색과 붉은색으로 만족시켜야하는 요구사항의 만족/

불만족 점검 결과가 표시된다. 불만족 항목(붉은색으로 표시된 부분)은 추가 설치를 통해 설치를

계속 진행하기 전에 만족되어야한다.

http://sp-demo1.openconext.org/simplesaml

[그림 20] simpleSAMLphp 설치 페이지

Page 11: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 21 -

3.2 Service Provider

3.2.1 생성 및 SP 기본정보 설정

1. 인증서 생성

- SSL을 통해 IdP, 즉 여기서는 OpenConext 측으로 전송하는 request/response 메시지에 서명이 가

능하도록 인증서 및 키를 생성한다.

# cd cert# openssl req -newkey rsa:2048 -new -x509 -days 3652 -nodes -out saml.crt -keyout saml.key

2. SP 설정

- 추가하고자 하는 SP('sp-demo1')의 설정사항을 아래와 같이 authsources.php에 기재한다.

- '1'의 과정에서 생성된 키 및 인증서 정보를 'privatekey' 및 'certificate'에 설정한다.

- 'idp'는 OpenConext IdP metadata URL 주소를 입력한다.

※ OpenConext IdP metadata URL : https://engine.demo.openconext.org/authentication/idp/metadata

config/authsources.php

'sp-demo1' => array( 'saml:SP', 'privatekey' => 'saml.key', 'certificate' => 'saml.crt', 'idp' => 'https://engine.demo.openconext.org/authentication/idp/metadata',),

- 22 -

[그림 21] authsources.php 설정

3.2.2 OpenConext 정보를 SP에 추가

본 절의 설치과정은 5.1절의 OpenConext VM 설치가 완료된 후에 진행한다.

1. OpenConext IdP metadata URL 접속

https://engine.demo.openconext.org/authentication/idp/metadata

2. OpenConext IdP metadata 복사

- 페이지 소스보기(View Page Source)를 한 후 페이지 소스를 복사한다.

Page 12: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 23 -

[그림 22] OpenConext IdP metadata URL 접속화면

[그림 23] OpenConext IdP metadata URL 페이지의 소스보기

- 24 -

3. OpenConext IdP metadata 변환

- SP의 SimpleSAMLphp 설치사이트 접속한다.

http://sp-demo1.openconext.org/simplesaml/module.php/core/frontpage_welcome.php

- Federation > Tools > XML to simpleSAMLphp metadata converter를 클릭한다.

[그림 24] simpleSAMLphp metadata converter 메뉴

- Metadata parser> XML metadata에 ‘2’의 과정에서 복사한 metadata를 붙여넣기 한 후 ‘Parse'

버튼을 클릭한다.

Page 13: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 25 -

[그림 25] metadata 변환

- 변환된 metadata를 모두 복사하여 metadata/saml20-idp-remote.php에 OpenConext IdP metadata를 추가한다.

[그림 26] saml20-idp-remote.php 설정

- 26 -

3.2.3 SP OpenConext에 등록하기

5.2절의 절차에 따라 SP를 OpenConext VM에 등록한다.

3.2.4 SP 설정 테스트

1. SP SimpleSAMLphp 설치사이트 접속

http://sp-demo1.openconext.org/simplesaml/module.php/core/frontpage_welcome.php

2. SP-OpenConext 연동 테스트

- Authentication > Test configured authentication sources 클릭 후 설정된 SP 이름(‘sp-demo1’)을 클릭한다.

[그림 27] SimpleSAMLphp 설정 테스트 메뉴

Page 14: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 27 -

[그림 28] SP 선택

- 3.2.3절에 따라 SP가 OpenConext에 등록되지 않은 경우 아래 페이지가 표시된다.

[그림 29] SP가 OpenConext에 미등록된 경우

- 28 -

- 3.2.3절에 따라 SP가 OpenConext에 등록된 경우 아래 페이지가 표시된다.

[그림 30] SP가 OpenConext에 등록된 경우

3.2.5 SP OpenConext와 연동하기

SP의 웹페이지에서 접속을 가로채어 OpenConext로 연동하기 위해서 SimpleSAMLphp API를 추가하여 구현한다.

1. OpenConext 연동 구현

- 아래와 같이 simpleSAMLphp SP API를 SP의 웹페이지 이전에 삽입한다.

※ SimpleSAML_Auth_Simple()의 API 인자로는 authsources.php에 등록된 entity의 이름(‘sp-demo1’)을 넣는다.

※ SimpleSAMLphp의 주요 API 및 사용법은 simpleSAMLphp SP API reference (https://simplesamlphp.org/docs/1.5/

simplesamlphp-sp-api)를 참고한다.

Page 15: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 29 -

[그림 31] SP의 index.php 예시화면 1

[그림 32] SP의 index.php 예시화면 2

- 30 -

3.3

3.3.1 Trouble Shooting & Tip

1. SimpleSAMLphp 로그파일 설정

- SimpleSAMLphp 로그메시지를 syslog의 기본 로그파일(/var/log/messages)에 남기지 않고 별도의

로그파일을 만들고 싶을 경우 아래와 같이 config.php 파일의 'logging.handler'를 ‘syslog'->'file'로

변경한다.

※ 설정 후 rsyslog 데몬을 재시작하여야 설정사항이 반영된다.

config/config.php

'logging.handler' => 'file''logging.logfile' => 'simplesamlphp.log'

# cd /var/simplesamlphp/log# touch simplesamlphp.log # chown apache:apache simeplesamlphp.log# service rsyslog restart

2. OpenConext IdP metadata 유효기간 만료 문제

‣ 증상

- SP 페이지(sp-demo1.openconext.org/simplesaml/) 접속 시 빈 화면이 표시

- Authentication > Test configured authentication sources 클릭 후 설정된 SP(‘sp-demo1’) 클릭 시

아래 페이지 표시

Page 16: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 31 -

[그림 33] OpenConext IdP metadata 유효기간 만료 시

☞ 3.2.2의 절차에 따라 OpenConext IdP metadata (saml20-idp-remote.php)를 갱신한다.

☞ 이렇게 해도 문제가 해결되지 않을 때가 있는데 이것은 캐쉬된 브라우저의 에러페이지가 재로드 되는

것으로, 이때는 새 브라우저를 실행 시킨 후 재접속을 시도한다.

※ OpenConext IdP metadata가 갱신되면 가능한 SP에서도 3.2.2의 절차에 따라 최신정보에 맞게 갱신하도록 한다.

2. OpenConext page에서 IdP 이미지가 제대로 표시되지 않는 문제

‣ 증상

- OpenConext 연동 시 아래와 같이 IdP 이미지가 표시되지 않는 문제가 발생한다.

- 32 -

[그림 34] OpenConext 연동 시 IdP 이미지가 표시되지 않을 경우

☞ 접속하는 머신의 /etc/hosts 파일에 ‘static.demo.openconext.org’를 추가한다.

☞ 동일 증상이 지속되고 브라우저로 ‘static.demo.openconext.org’로 직접 접속 시 아래 화면이 표시되면

https로 연결시도 후 신뢰사이트로 등록한다.

[그림 35] 미등록된 신뢰사이트 접속 시 OpenConext 표시화면

Page 17: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 33 -

사용자 인증 방법 설명authcrypt:Hash Username & password authentication with hashed passwordsauthcrypt:Htpasswd Username & password authentication against .htpasswd file

authX509:authX509userCert Authenticate against a LDAP database with a SSL client certificate

exampleauth:UserPassAuthenticate against a list of usernames and passwords.exampleauth:Static Automatically log in as a user with a set of attributes

ldap:LDAP Authenticates an user to a LDAP server

ldap:LDAPMulti Authenticates an user to one of several LDAP server. The user can choose the LDAP server from a dropdown list

sqlauth:SQL Authenticate an user against a database.radius:Radius Authenticates an user to a Radius server

4 Identity Provider 서버 구축

4.1 SimpleSAMLphp

3.1의 절차에 따라 SimpleSAMLphp를 설치한다.

4.2 Identity Provider 설정

4.2.1 인증정보 설정

1. IdP 기능 활성화

- 설정파일에 IdP 기능을 활성화한다.

config/config.php

'enable.saml20-idp' => true,

2. 사용자 인증 방식 및 정보 설정

- IdP에서 사용할 인증 방법을 결정한다. SimpleSAMLphp는 아래와 같은 다양한 인증방식을 지원한다.

- 34 -

InfoCard:ICAuth Authenticate with an InfoCard

multiauth:MultiAuthAllow the user to select from a list of authentication sources.openid:OpenIDConsumer Authenticate against an OpenID provider

saml:SP Authenticate against a SAML IdP. Can be used for bridging.authYubiKey:YubiKey Authenticate with an YubiKey

authfacebook:Facebook Authenticate with a Facebook ID

authtwitter:Twitter Authenticate with your Twitter account using the Twitter OAuth API

papi:PAPI Authenticate by means of the PAPI protocol[표 1] SimpleSAMLphp에서 지원하는 사용자 인증 방법

- 본 설치과정에서는 독립적으로 구동될 수 있는 가장 간단한 형태인 'exampleauth:UserPass' 방법

을 선택한다. 이 방법은 DB 및 다른 모듈과의 의존성 없이 설정파일 내에 사용자 ID/사용자 암호

를 저장한다.

3. 인증모듈 활성화

- 'exampleauth:UserPass' 방식을 사용하기 위해서 해당 모듈을 활성화한다.

# touch modules/exampleauth/enable

4. 사용자 인증 정보 생성

- 인증 상세정보를 설정파일인 config/authsources.php에 기재한다. 아래와 같이 두 명의 사용자에

대한 계정(student, employee)과 암호정보(studentpass, employeepass)를 생성한다.

Page 18: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 35 -

[그림 36] authsources.php 설정

4.2.2 생성 및 IdP 기본정보 설정

1. 키 및 인증서 생성

- private key와 self-signed certificate 생성한다. (10년간 유효)

# cd cert/# openssl req -newkey rsa:2048 -new -x509 -days 3652 -nodes -out saml.crt -keyout saml.key

2. IdP 설정

- IdP의 기본정보를 metadata/saml20-idp-hosted.php 파일에 설정한다.

※ metadata/saml20-idp-hosted.php 파일의 ‘auth' 정보는 config/authsources.php에 추가된 이름(’idp-demo1)과 동일해야한다.

- 36 -

[그림 37] saml20-idp-hosted.php 설정

4.2.3 OpenConext를 IdP에 추가

1. OpenConext SP metadata URL 접속

https://engine.demo.openconext.org/authentication/sp/metadata

2. OpenConext SP metadata 생성

- 3.2.2의 2~3의 절차와 동일한 방법으로 OpenConext SP metadata를 변환하여 metadata/saml20-sp-remote.php에

OpenConext SP metadata를 추가한다.

Page 19: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 37 -

[그림 38] saml20-sp-remote.php 설정

4.2.4 IdP OpenConext에 등록하기

1. 5.3절의 절차에 따라 IdP를 OpenConext VM에 등록한다.

2. OpenConext 연동 시 표시되는 IdP 로고(KISTI IdP 로고) 이미지 파일을 아래 경로에 IdP 서버의

아래 위치에 복사한다.

# cp kisti_logo.gif /var/simplesamlphp/www/kisti_logo.gif

4.2.5 IdP 설정 테스트

1. SP SimpleSAMLphp 설치사이트 접속

http://idp-demo1.openconext.org/simplesaml/module.php/core/frontpage_welcome.php

2. SP-OpenConext 연동 테스트

- Authentication > Test configured authentication sources 클릭 후 설정된 IdP 이름(‘idp-demo1’)을 클릭한다.

- 38 -

[그림 39] SimpleSAMLphp 설정 테스트 메뉴

[그림 40] IdP 선택

Page 20: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 39 -

- IdP가 제대로 설정된 경우 아래 페이지가 표시되고 사용자 인증 후 성공적으로 로그인된다.

[그림 41] SimpleSAMLphp IdP 인증화면

4.3

4.3.1 Trouble Shooting & Tip

1. SimpleSAMLphp 로그파일 설정

- SimpleSAMLphp 로그메시지를 syslog의 기본 로그파일(/var/log/messages)에 남기지 않고 별도의

로그파일을 만들고 싶을 경우 3.3.1의 ‘1’과 같이 config.php 파일의 'logging.handler'를

‘syslog'->'file'로 변경한다.

2. OpenConext SP metadata 유효기간 만료 문제

‣ 증상

- SP 페이지(sp-demo1.openconext.org/simplesaml/) 접속 시 아래와 같은 웹페이지 표시

- IdP 서버의 log/simplesamlphp.log에 아래 그림과 같은 로그메시지가 확인됨

- 40 -

[그림 42] OpenConext SP metadata 유효기간 만료 시 표시화면

[그림 43] OpenConext SP metadata 유효기간 만료 시 IdP 로그메시지

☞ 3.2.2의 절차에 따라 OpenConext SP metadata (saml20-sp-remote.php) 갱신한다. 이때 OpenConext

IdP metadata URL이 아닌 OpenConext SP metadata를 사용한다.

https://engine.demo.openconext.org/authentication/sp/metadata

☞ 이렇게 해도 문제가 해결되지 않을 때가 있는데 이것은 캐쉬된 브라우저의 에러페이지가 재로드되는 것

Page 21: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 41 -

으로, 이때는 새 브라우저를 실행 시킨 후 재접속을 시도한다.

※ OpenConext SP metadata가 갱신되면 가능한 IdP에서도 3.2.2의 절차에 따라 최신정보에 맞게 갱신하도록 한다.

3. State Information lost 문제

‣ 증상

- SP 페이지(sp-demo1.openconext.org/simplesaml/) 접속 시 간혹 아래와 같은 웹페이지 표시

[그림 44] State lost 에러 화면

☞ 브라우저 재시작 후 재접속을 시도한다.

4. SP 접속 시 디버그메시지가 출력 현상

‣ 증상

- SP 접속 및 OpenConext 연동 시 IdP 인증페이지로 연결되지 않고 IdP 소스코드에 임의로 삽입한 디

버그 메시지가 출력되는 현상 (디버그 메시지가 없을 경우 빈 화면 표시)

- saml20-sp-remote.php 또는 saml20-idp-hosted.php에서 syntax 적인 문제가 발생했을 경우 발생

- 42 -

[그림 45] SP 접속 시 디버그메시지가 출력화면

☞ saml20-sp-remote.php 또는 saml20-idp-hosted.php의 설정을 다시 확인한다.

※ saml20-idp-hosted.php 파일을 수정하면 OpenConext의 ‘service registry’ 에서 다시 import하여 최신정보를 유지하는 것이 좋다.

5. OpenConext에서 IdP metadata import 에러

‣ 증상

- IdP 측의 소스코드(SSOService.php MetaDataStorageHandler.php: getMetaData 등)에서 출력하는 디버그

메시지가 OpenConext에서 IdP metadata import 시 metadata에 포함되어 전송되므로 아래와 같은 화면 표시

[그림 46] metadata 파싱 오류 시

Page 22: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 43 -

- Openconext log(/var/log/message)에 아래 메시지가 찍힘

[그림 47] 잘못된 metadata 전송 시 OpenConext 에러메시지

☞ IdP 측의 소스코드(SSOService.php MetaDataStorageHandler.php: getMetaData 등)에 삽입한 디버그 메

시지를 찾아 모두 Comment 처리한다.

※ IdP 측의 SimpleSAMLphp 소스에 삽입한 디버그 메시지를 삭제하면 OpenConext의 service registry에서 kisti-idp의 metadata가 즉시

제대로 import 되므로 IdP가 메타 데이터를 전송을 요청받으면 metadata (saml20-idp-hosted.php) 및 metadata를 로드하는 소스코드

를 실시간으로 실행하여 최신의 metadata URL 페이지를 구성하여 OpenConext 쪽으로 전송하는 것으로 추측된다.

※ IdP 측의 metadata인 saml20-idp-hosted.php 변경 시 일부항목은 변경하면 OpenConext에서 idp metadata import 시 즉시 반영되나

일부항목은 반영이 안되는 것으로 보인다 (OpenConext에서 Import 시 ‘No changes to apply’ 메시지가 출력됨).

- 44 -

5 OpenConext VM 서버 구축

5.1 OpenConext VM

5.1.1 요구사항

1. OpenConext VM 설치 요구사항

- 리눅스 가상머신으로 CentOS 6 또는 RedHat EL 6 이상 설치

- JDK 1.4 이상 설치 권고

※ JAVA_HOME 변수가 적절히 설정되어 아래와 같이 java 명령 실행이 가능해야 한다.

[그림 48] java 명령어 실행 화면

5.1.2 OpenConext VM 다운로드 및 설치

1. 설치파일 다운로드

- 아래 명령어를 사용해 OpenConext VM 설치파일을 다운로드 받고 압축을 해제한다.

# curl https://codeload.github.com/OpenConext/OpenConext-vm/tar.gz/v74.4 | tar zx

Page 23: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 45 -

2. OpenConext VM 설정변경

- oc_config.sh 파일 원본을 아래와 같이 복사해 두고, 스크립트 내의 코멘트를 참조해

OpenConext-vm-75/scripts/oc_config.sh 파일을 가상머신에 맞게 설정한다.

# install -d /etc/openconext# cp OpenConext-vm-75/scripts/oc_config.sh /etc/openconext/.

- 이번 설치과정에서는 기본설정을 유지하였다.

※ host name은 기본적으로 [componentname].demo.openconext.org으로 설정된다. 변경을 원하는 경우 초기 설치 시 설정파일에서 변경한다.

3. 설치

- 설치 스크립트를 실행하여 설치를 진행한다.

# bash OpenConext-vm-74.4/scripts/install_openconext.sh

※ 설치 과정 중 중간에 멈춘 듯 보여도 기다리면 설치가 진행되니 인내를 가지고 진행한다.

※ Github OpenConext VM 설치 메뉴얼(https://github.com/OpenConext/OpenConext-vm/)에 따르면 30분 정도 소요된다고 언급되어있으나 실

제 설치 시 2시간 정도 소요되었다.

[그림 49] OpenConext VM 설치 화면

- 46 -

4. 구동 확인

- 브라우저를 실행해서 OpenConext 웹사이트를 확인한다.

[그림 50] OpenConext VM 구동 화면

5. 각 컴포넌트 실행

- 사이트 내 각 메뉴는 SP로부터 공급되는 서비스처럼 동작하므로 로그인하려면 OpenConext에 기

본적으로 설치된 (build-in) Mujina IdP로부터 인증 절차를 거쳐야한다. Mujina IdP를 선택하고 아

래 인증 정보를 이용해 로그인 한다.

User : adminPassword : secret

5.2 SP

5.2.1 Connection

1. Service Registry 로그인

Page 24: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 47 -

- Mujina IdP(admin/secret)로 로그인한다.

2. SP Connection 생성

- ‘Connection' 탭에서 'Create connection' 클릭 후 Connection ID를 입력한다.

http://sp-demo1.openconext.org/simplesaml/module.php/saml/sp/metadata.php/sp-demo1

※ Connection ID 값은 SP Metadata URL과 동일하게 입력한다.

※ SP Metadata URL은 SP simpleSAMLphp 설치 페이지 (http://sp-demo1.openconext.org/simplesaml/module.php/core/

frontpage_federation.php) > Federation 탭 > Entity ID에서 알 수 있다.

- ‘SAML 2.0 SP' 선택 후 ’Create' 버튼을 클릭한다.

[그림 51] SP Connection 생성 화면

- Connection 탭에서 ‘State'를 ’Production‘으로 설정한다

- 48 -

[그림 52] SP Connection 설정 화면

5.2.2 SP Metadata

1. SP metadata 설정

- 'Import from URL' 항목에 SP metadata URL 주소를 입력하여 SP metadata를 읽어 들인다.

http://sp-demo1.openconext.org/simplesaml/module.php/saml/sp/metadata.php/sp-demo1

※ Connection ID와 SP metadata URL이 다를 경우 아래와 같은 에러가 발생하므로 두 값은 동일하게 입력한다.

Page 25: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 49 -

[그림 53] SP metadata import 화면

[그림 54] SP metadata URL과 connection ID 값이 다를 경우 에러 페이지 표시

2. name 정보 설정

- Metadata 탭에서 ‘name:en’ 항목을 기재하고 save 한다. 이후부터 Dashboard의 SP list에

- 50 -

name(en)으로 표시된다.

[그림 55] SP metadata 표시 화면

5.2.3 정보 설정

1. Identity Provider 설정

- Identity Provider 탭에서 기본적인 설정(‘Allow All')을 선택하여 모든 IdP를 허용한다.

(현재 설치에서는 기본설정 유지)

[그림 56] Identity Provider 설정

Page 26: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 51 -

2. Manipulation 설정

- Manipulation 메뉴는 SP에 공개되는 사용자의 Attribute 정보를 UI를 통해 수정/삭제/추가할 수

있는 기능이다. (현재 설치에서는 기본설정 유지)

[그림 57] Attribute Manipulation 설정

3. 기타 설정

- 기타 설정은 OpenConext 설치사이트 메뉴얼을 참조하여 적절히 설정한다.

(현재 설치에서는 기본설정을 유지)

5.3 IdP

5.3.1 Connection

1. Service Registry 로그인

- Mujina IdP(admin/secret)로 로그인한다.

2. IdP Connection 생성

- ‘Connection' 탭에서 'Create connection' 클릭 후 Connection ID를 입력한다.

- 52 -

http://idp-demo1.openconext.org/simplesaml/saml2/idp/metadata.php

※ Connection ID 값은 SP Metadata URL과 동일하게 입력한다.

※ IdP Metadata URL은 IdP simpleSAMLphp 설치 페이지(http://idp-demo1.openconext.org/simplesaml/module.php/core/

frontpage_federation.php) > Federation 탭 > Entity ID에서 알 수 있다.

- ‘SAML 2.0 IdP' 선택 후 ’Create' 버튼을 클릭한다.

[그림 58] IdP Connection 생성 화면

- Connection 탭에서 ‘State'값을 ’Production‘으로 설정한다.

Page 27: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 53 -

[그림 59] IdP Connection 설정 화면

5.3.2 IdP Metadata

1. IdP metadata 설정

- 'Import from URL' 항목에 SP metadata URL 주소를 입력하여 IdP metadata를 읽어 들인다.

http://idp-demo1.openconext.org/simplesaml/saml2/idp/metadata.php

※ Connection ID와 IdP metadata URL이 다를 경우 아래와 같은 에러가 발생하므로 두 값은 동일하게 입력한다.

- 54 -

[그림 60] IdP metadata import 화면

[그림 61] IdP metadata URL과 Connection ID가 다를 경우 에러 페이지 표시

2. name 정보 설정

- Metadata 메뉴의 ‘name:en’을 기재하고 save 한다. 이후부터 Dashboard의 IdP list에 'name:en'

Page 28: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 55 -

값으로 표시된다.

※ 'name:en' 값은 OpenConext 연동 시 표시되는 IdP의 이름이다. 이번 설치에서는 아래 값으로 입력한다.

name:en KISTI-Idp

[그림 62] IdP metadata 표시 화면

5.3.3 정보 설정

1. Service Provider 설정

- Service Provider 탭에서 기본적인 설정(‘Allow All')을 선택하여 기본적으로 모든 SP를 허용한다.

- 56 -

(현재 설치에서는 기본설정 유지)

[그림 63] Service Provider 설정

2. Manipulation 설정

- Manipulation 메뉴는 SP에 공개되는 사용자의 Attribute 정보를 UI를 통해 수정/삭제/추가할 수

있는 기능이다.

- 이 기능은 5.5 절에서 사용된다.

Page 29: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 57 -

[그림 64] Attribute Manipulation 설정

3. 기타 설정

- 기타 설정은OpenConext 설치사이트 메뉴얼을 참조하여 적절히 설정한다.

(현재 설치에서는 기본설정 유지)

- 58 -

6 OpenConext 연동 테스트

6.1 SP 서비스 페이지 작성

1. SP 웹서버에서 3.2.5절을 참조해 simpleSAMLphp SP API를 이용해 아래와 같이 SP 웹페이지 방

문 시 처음 게시되는 대표 페이지(index.php)를 작성한다.

# vi /var/simplesamlphp/www/index.php

index.php

<?php require_once('/var/simplesamlphp/lib/_autoload.php');

/* We select our authentication source: */ $as = new SimpleSAML_Auth_Simple('sp-demo1');

/* We then require authentication: */ $as->requireAuth();

echo "<h1>Hello, world!</h1>"; /* And print the attributes: */ $attributes = $as->getAttributes(); echo "<pre>";

print_r($attributes); echo "</pre>";?>

Page 30: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 59 -

6.2 SP-OpenConext-Mujina IdP

OpenConext VM 설치 시 기본적으로 함께 설치되는(Built-in) IdP인 Mujina IdP를 이용해

OpenConext 연동을 테스트한다.

6.2.1 절차

1. SP 접속

- sp-demo1.openconext.org에 접속한다.

http://sp-demo1.openconext.org/simplesaml/

2. Mujina IdP 로그인

- Mujina IdP에 아래 사용자 정보로 로그인 한다.

User : adminPassword : secret

[그림 65] OpenConext 연동화면

- 60 -

[그림 66] Mujina 로그인

3. 사용자가 첫 로그인 시 아래와 같이 IdP 측에 저장된 사용자 정보를 SP 제공에 동의를 요청하는

화면이 표시된다.

[그림 67] 사용자 첫 로그인 시 attribute 전송 요청 승인 화면

Page 31: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 61 -

4. 아래와 같이 SP의 서비스페이지가 표시된다.

[그림 68] OpenConext 연동 및 인증 성공 후 SP 표시 화면

6.3 SP-OpenConext-KISTI IdP

4장에서 설치한 별도의 가상머신에 설치된 KISTI IdP를 이용해 OpenConext 연동을 테스트한다.

6.3.1 절차

1. SP 접속

- sp-demo1.openconext.org에 접속한다.

http://sp-demo1.openconext.org/simplesaml/

- 62 -

[그림 69] OpenConext 연동화면

2. Attribute Manipulation

- 첫 연동 시 아래와 같이 SP가 요구하는 기본정보인 uid 및 schacHomeOrganization 두 항목이 누

락되었다는 오류 메시지가 표시되므로 6.3.2절의 절차에 따라 OpenConext의 Attribute

Manipulation 메뉴를 이용하여 별도로 두 항목에 대한 정보를 IdP metadata에 추가해야한다.

- Attribute Manipulation에 의해 두 항목이 성공적으로 추가된 후 다시 테스트하면 인증 단계로 넘어

간다.

Page 32: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 63 -

[그림 70] SP 요청 필수데이터 누락 시

3. KISTI IdP 로그인

- KISTI IdP에 아래 사용자 정보로 로그인 한다.

User : studentPassword : studentpass

- 64 -

[그림 71] IdP 사용자 로그인 화면

4. 사용자가 첫 로그인 시 아래와 같이 IdP 측에 저장된 사용자 정보를 SP 제공에 동의를 요청하는

화면이 표시된다.

[그림 72] 사용자 첫 로그인 시 attribute 전송 요청 승인 화면

Page 33: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 65 -

5. 아래와 같이 SP의 서비스페이지가 표시된다.

[그림 73] OpenConext 연동 및 인증 성공 후 SP 표시 화면

6.3.2 IdP Attribute Manipulation

1. SP-OpenConext-IdP 연동 시 IdP에서 제공되는 metadata 중 부족한 정보를 Attribute

Manipulation 메뉴를 통해 추가한다. 이 기능을 통해 metadata의 추가/수정/삭제 기능이 가능하다.

※ IdP에서 전송된 IdP metadata에 Attribute Manipulation의 결과가 반영되어 SP에게 최종적으로 전송된다.

- OpenConext VM > Service Registry > KISTI-IdP 선택 > Manipulation 탭에 아래항목을 기입한

후 Metadata 탭의 ‘save'를 클릭한다.

$attr_uid = "urn:mace:dir:attribute-def:uid";$attr_sho = "urn:mace:terena.org:attribute-def:schacHomeOrganization"; $attributes[$attr_uid] = array('test_uid'); $attributes[$attr_sho] = array('test_sho');

- 66 -

[그림 74] Attribute Manipulation을 이용한 attribute 추가

- 참고로 삭제 시 아래와 같이 작성한다.

$attr_uid = "urn:mace:dir:attribute-def:uid";$attr_sho = "urn:mace:terena.org:attribute-def:schacHomeOrganization";unset($attributes[$attr_uid]);unset($attributes[$attr_sho]);

[그림 75] Attribute Manipulation을 이용한 attribute 삭제

4. SP페이지를 방문하여 로그인 하면 두 항목이 정상적으로 추가된 경우 인증화면으로 넘어간다.

Page 34: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 67 -

6.4

6.4.1 Trouble Shooting & Tips

1. OpenConext page에서 IdP 이미지가 제대로 표시되지 않는 문제

‣ 증상

- OpenConext 연동 시 아래와 같이 IdP 이미지가 표시되지 않는 문제가 발생한다.

[그림 76] OpenConext 연동 시 IdP 이미지가 표시되지 않을 경우

☞ 접속하는 머신의 /etc/hosts 파일에 ‘static.demo.openconext.org’를 추가한다.

☞ 동일 증상이 지속되고 브라우저로 ‘static.demo.openconext.org’로 직접 접속 시 아래 화면이 표시되면

https로 연결시도 후 신뢰사이트로 등록한다.

- 68 -

[그림 77] 미등록된 신뢰사이트 접속 시 OpenConext 표시화면

[그림 78] 신뢰사이트 추가 화면 1

Page 35: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 69 -

[그림 79] 신뢰사이트 추가 화면 2

2. OpenConext 네트워크 주소 초기화 문제

‣ 증상

- OpenConext VM 일시정지(suspend) 혹은 재부팅(Reboot) 후 네트워크 인터페이스에 수동으로 설

정된 IP 주소 정보가 삭제되는 문제가 발생한다.

☞ 네트워크 설정파일(ifcfg-eth*)을 통해 설정했음에도 동일한 문제가 지속되고, SP, IdP 가상머신의 경우

문제가 발생하지 않는 것으로보아 OpenConext에서만 생기는 문제로 추측된다.

☞ 아래와 같이 커맨드로 네트워크 서비스를 재시작한다.

# su /* 루트 암호 입력 */# service network restart# ifconfig

- 70 -

3. 지정된 IdP로 자동 로그인 되는 문제

- 가상머신에 쿠키정보 등이 저장되어 있어 OpenConext 연동 시 직전에 로그인 한 IdP를 통해 자동으로

로그인 되는 문제가 발생한다.

☞ Firefox 메뉴 > Advanced > Network 의 웹 캐쉬를 삭제해도 동일문제 지속된다.

☞ 아래와 같이 Firefox 메뉴 > Privacy > History 에서 History 설정을 변경한다. 즉 ’Remember history'일

경우 'Never remember history'로, ’Never remember history'일 경우 ’Remember history'로 변경한다.

[그림 80] Firefox 히스토리 설정

Page 36: OpenConext VM을 이용한 인증 페더레이션 설치 및 관리 매뉴얼 · 2018. 10. 15. · - 14 - 6. IP 연결 확인 - ping 을 이용해 SP, IdP, OpenConext 서버 간 상호

- 71 -

7 참고 문헌 및 사이트

7.1 SP 참조

⦁ SimpleSAMLphp Installation and Configuration

https://simplesamlphp.org/docs/stable/simplesamlphp-install

⦁ SimpleSAMLphp Service Provider QuickStart

https://simplesamlphp.org/docs/stable/simplesamlphp-sp

⦁ OpenConext SP - SimpleSAMLphp

https://wiki.surfnet.nl/display/OpenConext/OpenConext+SP+-+SimpleSAMLphp

⦁ SimpleSAMLphp Documentation

https://simplesamlphp.org/docs/stable/

7.2 IdP 설치 참조

⦁ simpleSAMLphp Installation and Configuration

https://simplesamlphp.org/docs/stable/simplesamlphp-install

⦁ SimpleSAMLphp Identity Provider QuickStart

https://simplesamlphp.org/docs/stable/simplesamlphp-idp

⦁ OpenConext IdP - SimpleSAMLphp

https://wiki.surfnet.nl/display/OpenConext/OpenConext+IdP+-+SimpleSAMLphp

⦁ SimpleSAMLphp Documentation

https://simplesamlphp.org/docs/stable/

7.3 OpenConext 설치 참조

⦁ OpenConext wiki 사이트

- 72 -

https://wiki.surfnet.nl/display/OpenConext/Installing+an+OpenConext+%28VM%29+instance+

for+development

⦁ OpenConext Github Project 사이트

https://github.com/OpenConext/OpenConext-vm/