ID 제공자의구축 - Korean Access Federation (KAFE) - 한국과학기술정보연구원

Similar documents
서비스제공자의구축 - Korean Access Federation (KAFE) - 한국과학기술정보연구원

1. efolder 시스템구성 A. DB B. apache - mod-perl - PHP C. SphinxSearch ( 검색서비스 ) D. File Storage 2. efolder 설치순서 A. DB (MySQL) B. efolder Service - efolder

본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게 해 주는 프로그램입니다. 다양한 기능을 하는 플러그인과 디자인

LXR 설치 및 사용법.doc

Page 1 / 솔루션소개 WordPress WordPress는세계에서가장인기있는오픈소스웹사이트제작관리도구입니다. 웹표준, 접근성, SEO( 검색엔진최적화 ) 등의강점이있으며다양한테마와확장기능을제공합니다. 2. 설치버전 하기명시된버전은권장설치버전이며필요시다른

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

Page 1 / 솔루션소개 Magento Magento 는강력한기능을제공하는오픈소스쇼핑몰제작관리도구입니다. 커스터마이징가 능한글로벌쇼핑몰구축시에사용을권장하며, 자체마켓플레이스를보유하고있을정도 로다양한기능을유 / 무료로추가할수있습니다. 2. 설치버전 하기명시된

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

기술프로파일 - Korean Access Federation (KAFE) - 조진용, 장희진 한국과학기술정보연구원

Windows 8에서 BioStar 1 설치하기

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

untitled

슬라이드 1

28 THE ASIAN JOURNAL OF TEX [2] ko.tex [5]

PowerPoint 프레젠테이션

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

정적으로 설치된 mod_ssl 모듈확인 동적으로 설치된 mod_ssl 모듈확인 웹서버에 설치된 모듈중 mod_so.c 를 먼저 확인후 동적으로 설치된 모듈중 mod_ssl.so 를 확인합니다. 동적으로 설치된 경우 apache 설치 디렉토리의 module 이나 libe

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Apache install guide

ApacheWebServer.hwp

Apache( 단일도메인 ) SSL 인증서갱신설치가이드 본문서는주식회사한국기업보안에서 SSL 보안서버인증서설치를위해작성된문서로 주식회사한국기업보안의동의없이무단으로사용하실수없습니다. [ 고객센터 ] 한국기업보안. 유서트기술팀 Copyright 201

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

Microsoft PowerPoint - 07-EDU-Apache-9-1.ppt

목차 1. 사전준비 mod_ssl OpenSSL 인증서파일 2. 주의사항 신규및갱신구분 CSR 직접생성여부 3. 인증서설치 httpd.conf 설정 httpd-ssl.conf 설정 갱신설치 서비스재시작 4. 확인및테스트 서비스구동확인 네트워크상태확인 방화벽확인 실제브라

SSL인증서 설치 매뉴얼 (Apache)

Microsoft PowerPoint - [Practice #1] APM InstalI.ppt

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

RedHat Linux Fedora Core 4 + APM 소스컴파일설치 김희균 [ 사전준비 : 리눅스시디, 리눅스설치공간준비와컴퓨터의 IP 주소와넷마스크, 게이트웨이주소기록 1. Linux 시디로부팅을한다. 2. Gra

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

PowerPoint 프레젠테이션

Portal_9iAS.ppt [읽기 전용]

슬라이드 1

하는 gd의예를들면, /usr/ports/graphics/php52-gd 에서설치해줄수있고, xml 처리를담당하는 xml 확장모듈은 /usr/ports/textproc/php52-xml 에서설치가능하다. 어느디렉토리에서제공되는지를알려면포트시스템의루트 (/usr/port

Microsoft PowerPoint - 10Àå.ppt

TTA Journal No.157_서체변경.indd

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

Chapter 1

단계

아래 항목은 최신( ) 이미지를 모두 제대로 설치하였을 때를 가정한다

품질검증분야 Stack 통합 Test 결과보고서 [ The Bug Genie ]

SPECweb Install

4. CSR 값확인. (vi csr.pem) CSR(Certificate Signing Request) 즉, 인증서서명요청입니다. 이는자신이설치할웹서버에서 DN 값, 각종정보를암호화한파일로써 한국전자인증 신청란에서붙여넣으면됩니다. 인증서설치 1. 직접 CSR 및 KEY

Cloud Friendly System Architecture

MySQL-Ch10

벤처연구사업(전동휠체어) 평가

PowerPoint 프레젠테이션

작성자 : 기술지원부 김 삼 수

Slide 1

PowerPoint Template

Snort Install Manual Ad2m VMware libnet tar.gz DebianOS libpcap tar.gz Putty snort tar.gz WinSCP snort rules 1. 첫번째로네트워크설정 1) ifconf

소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를 제공합니다. 제품은 계속 업데이트되므로, 이 설명서의 이미지 및 텍스트는 사용자가 보유 중인 TeraStation 에 표시 된 이미지 및 텍스트와 약간 다를 수

FileMaker 15 WebDirect 설명서

Webtob( 멀티도메인 ) SSL 인증서갱신설치가이드 본문서는주식회사한국기업보안에서 SSL 보안서버인증서설치를위해작성된문서로 주식회사한국기업보안의동의없이무단으로사용하실수없습니다. [ 고객센터 ] 한국기업보안. 유서트기술팀 Copyright 201

Apache( 단일도메인 ) SSL 인증서갱신설치가이드 본문서는주식회사한국기업보안에서 SSL 보안서버인증서설치를위해작성된문서로 주식회사한국기업보안의동의없이무단으로사용하실수없습니다. [ 고객센터 ] 한국기업보안. 유서트기술팀 Copyright 201

Install stm32cubemx and st-link utility

BEA_WebLogic.hwp

Microsoft Word - SSL_apache.doc

Mango220 Android How to compile and Transfer image to Target

4. CSR 값확인. (vi csr.pem) CSR(Certificate Signing Request) 즉, 인증서서명요청입니다. 이는자신이설치할웹서버에서 DN 값, 각종정보를암호화한파일로써 한국전자인증 신청란에서붙여넣으면됩니다. 인증서설치 1. 직접 CSR 및 KEY

10.ppt

Apache( 멀티도메인 ) SSL 인증서신규설치가이드 본문서는주식회사한국기업보안에서 SSL 보안서버인증서설치를위해작성된문서로 주식회사한국기업보안의동의없이무단으로사용하실수없습니다. [ 고객센터 ] 한국기업보안. 유서트기술팀 Copyright 201

SBR-100S User Manual

WebtoB.hwp

Assign an IP Address and Access the Video Stream - Installation Guide

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

윈도우시스템프로그래밍

Federating ID for R&D Services

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Tomcat 4.x 웹서버에 J2SE 를설치를확인합니다. java -version java version "1.4.2_05" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04) Java HotSp

Apache( 멀티도메인 ) SSL 인증서갱신설치가이드 본문서는주식회사한국기업보안에서 SSL 보안서버인증서설치를위해작성된문서로 주식회사한국기업보안의동의없이무단으로사용하실수없습니다. [ 고객센터 ] 한국기업보안. 유서트기술팀 Copyright 201

슬라이드 1

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

bn2019_2

Apache( 단일도메인 ) SSL 인증서신규설치가이드 본문서는주식회사한국기업보안에서 SSL 보안서버인증서설치를위해작성된문서로 주식회사한국기업보안의동의없이무단으로사용하실수없습니다. [ 고객센터 ] 한국기업보안. 유서트기술팀 Copyright 201

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - postfix) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i postfix spf-filter 년 6 월

2. 개인키권한설정 보안경고개인키의유출방지를위해 group 과 other 의 permission 을모두제거한다. chmod 600 /etc/pki/tls/private/lesstif-rootca.key 3. CSR(Certificate Signing Request) 생

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - qmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i qmail 1.03 spf-filter 년 6 월

EJRWXFSEKSPJ.hwp

Observational Determinism for Concurrent Program Security

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

로거 자료실

Remote UI Guide

untitled

Network seminar.key

소프트웨어설치 1. 소프트웨어설치및제거 ( 소스코드 ) 소스코드컴파일을이용한 S/W 설치 1. 소스코드다운로드 - 예 ) httpd tar.gz - 압축해제 : #tar xzvf httpd tar.gz - INSTALL 또는 README파일참조

DW 개요.PDF

< FBBE7B0EDB3EBC6AE5FB5F0C6FAC6AEC6D0BDBABFF6B5E5C3EBBEE0C1A128BCF6C1A4292E687770>

메일서버등록제(SPF) 인증기능적용안내서 (AIX - sendmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 AIX 5.3 sendmail spf-filter 년 6 월

Microsoft Word - Windows_apahce_php_CUBRID2008

untitled

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2000) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2000 Exchange Server 2003 GFI MailEssentials 14 for

Table of contents 1. 구성도 Maxgauge For MySQL 설치정보... 6 설치파일정보... 6 포트정보... 6 주요디렉토리... 6 소프트웨어기동 / 종료... 7 기동... 7 종료 Maxgauge For MySQ

INDEX 1. 개요 데이터백업스크립트작성 crontab 을이용한자동백업예약 활용 - 다른서버에백업하기

Server Agent Guide

Microsoft Word - src.doc

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

Transcription:

ID 제공자의구축 - Korean Access Federation (KAFE) - 한국과학기술정보연구원

목 차 제 1 장설치환경제 2 장 simplesamlphp 의설치제 3 장 SAML ID 제공자의설치제 4 장 ID 제공자와사용자 DB 의연동제 5 장사용자속성의제어제 6 장메타데이터의설정제 7 장사용자인터페이스의변경제 8 장 Consent 화면의변경제 9 장보안설정제 10 장기타설정

SAML ID 제공자시스템의구축 2015.09.24. - 내용추가 2015. 08. 20. - 초안 제 1 장설치환경 본 설치매뉴얼은 simplesamlphp 1.13 버전을 이용해 Ubuntu 또는 CentOS 환경에서 SAML 2.0 IdP(Identity Provider) 를 구축하는 방법을 기술한다. IdP 의 구축을 위해 다음과 같은 요구조건이 충족되어야한다. - LAMP 스택의설치 : Apache, MySQL, PHP 5.3 이상 - 공인인증서 (SSL) 의설치 제 2 장 simplesamlphp 의설치 2.1 절 simplesamlphp simplesamlphp 는 UNINETT 에서개발한 SAML v2.0 소프트웨어이다. IdP 또는 SP(Service Provider) 로설치가능하며최신버전은 1.13.2 이다 (2015 년 9 월 ). 이하 IdP 또는 SP 는 SAML 2.0 IdP 또는 SAML 2.0 SP 를의미한다. simplesamlphp.org 에서추가적인정보를얻을수있다. 2.2 절 simplesamlphp 의설치환경 simplesamlphp 의설치를위한서버환경은다음과같다. 특별한언급이없는한 ID 제공자용서버는 Ubuntu 14.04 LTS(64 비트 ) 를이용한다. - php, MySQL, httpd 가설치 - IPv6 disable 권장 - selinux disable - Linux 방화벽 (iptables) 80/443(http/https) 포트개방 - 시간동기화를위한 NTP 설정 (NTP 서버 : time.kriss.re.kr) 2.3 절 simplesamlphp 의설치 simplesamlphp 의구동을위해요구되는소프트웨어패키지를설치한다. simplesamlphp 의설치경로는 /var/simplesamlphp 로가정한다. ~# clear

~# sudo apt-get install php-date openssl php5-mcrypt // 인증소스로 LDAP 를이용하경우 ~# sudo apt-get install php5-ldap //simplesamlphp 다운로드 ~#sudo wget https://simplesamlphp.org/res/downloads/simplesamlphp-1.13.2.tar.gz // 압축해제및설치 ~# sudo cp./simplesamlphp-1.13.2.tar.gz /var/ ~# sudo cd /var ~# sudo tar zxvf./simplesamlphp-1.13.2.tar.gz ~# sudo mv./simplesamlphp-1.13.2./simplesamlphp 2.4 절 Apache 서버설정 아래설정방법은 HTTP(80 포트 ) 에대한환경설정을보여준다. HTTPS(443) 에대한 Apache 환경설정방법은생략한다. ID 제공자서버는반드시공인인증서를설치하고 HTTPS(443) 을이용해야한다. ~# sudo cd /etc/apache2/sites-available ~# sudo nano 000-default.conf // <VirtualHost *:80> 을찾아아래와같이수정 <VirtualHost *:80> DocumentRoot /var/www/html/ Alias /simplesaml /var/simplesamlphp/www ~# sudo nano /etc/apache2/apache2.conf // 다음과같은항목을추가 <Directory /var/simplesamlphp/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> ~# sudo service apache2 restart

2.5 절 simplesamlphp 의구동환경설정 아래와같이 simplesamlphp 를환경설정한다. 'secretsalt' 는다음명령을이용해추출할수있다. tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' </dev/urandom dd bs=32 count=1 2>/dev/null;echo ~# sudo cd /var/simplesamlphp/config ~# sudo nano config.php // 아래와같이환경설정함 'baseurlpath' => 'simplesaml/', 'certdir' => 'cert/' 'loggingdir' => 'log/', 'datadir' => 'data/', // 다음사항은꼭수정해야함 'auth.adminpassword' => '[ 관리용패스워드입력 ]', 'secretsalt' => '[secret salt 입력 ]', 'technicalcontact_name' => '[ 관리자이름 ]', 'technicalcontact_email' => '[ 관리자이메일 ]', 'language.default' => 'en', 'timezone' => 'Asia/Seoul', simplesamlphp 에서제공하는특정모듈을활성화하고싶다면 [ 모듈명 ] 디렉토리에서 enable 파일을생성한다. 다음예는 LDAP 모듈을활성화하기위한방법이다. ~# sudo cd /var/simplesamlphp/modules ~# sudo cd./ldap ~# sudo touch enable 환경설정이완료되었다면웹브라우저를이용해 http://[ 서버주소 ]/simplesaml 을접속한다. 정상적으로설치되었다면아래와같은화면이나타난다.

2.6 절설정된환경의검증 Authentication 탭에서 admin 으로로그인한다. 현재 IdP 가활성화되지않은상태이므로 2 와같이적색원이보여야한다. admin 으로로그인한후 3 과같이표시된다면정상적으로설치된상태이다. 관리자이메일과 LDAP Extension 을설치했다면모두녹색원으로표시되어야한다.

제 3 장 SAML ID 제공자의설치 3.1 절 ID 제공자기능의활성화 환경설정파일을수정해 IdP 기능을활성화시킨다. SAML2.0 이외에 SAML1.0 을지원하기위해서는 'enable.shib13-idp' 를 true 로설정한다. ~# sudo cd /var/simplesamlphp/config ~# sudo nano config.php // 아래와같이수정한다. 'enable.saml20-idp' => true, 'enable.shib13-idp' => false, 'enable.adfs-idp' => false, 'enalbe.wsfed-sp' => false, 'enable.authmemcookie' => false, 위와같이환경설정을한후웹브라우저를이용해접근했을때다음과같이 SAML 2.0 IdP 항목이녹색원으로표시되어야한다. 3.2 절인증소스의선택 simplesamlphp 는 LDAP, LDAPMulti, SQL, Radius 등다양한사용자인증소스와의연동을지원한다. 더자세한사항은 simplesamlphp.org 를참조한다. 본매뉴얼에서는 exampleauth:userpass 모듈을이용해사용자를인증한다. 모듈을다음과같이활성화시킨다. 이하 employee/employeepass( 사용자 ID/ 비밀번호 ) 또는 student/studentpass( 사용자 ID/ 비밀번호 ) 로사용자인증이가능하다. ~# sudo cd /var/simplesamlphp/modules/exampleauth ~# sudo touch enable ~# sudo cd /var/simplesamlphp/config ~# sudo nano authsources.php // 아래와같이 authsources.php 를수정한다.

/* ( 주석제거 ) 'example-userpass' => array( 'exampleauth:userpass', 'employee:employeepass' => array( 'uid' => array('employee'), 'edupersonaffiliation' => array('member', 'employee'), ), ), */( 주석제거 ) 3.3 절 SSL 자가인증서의생성 아래 [myidp.mydomain.ac.kr] 은 IdP 구축자의기관환경에맞게적절히변경해야한다. Common Name (e.g., server FQDN or YOUR name) 은 IdP 용서버의 IP 주소또는도메인명으로설정해야한다. 자가인증서를생성한후환경설정을계속한다. ~# sudo cd /var/simplesamlphp ~# sudo mkdir cert // 생성된.cert 파일과.pem 파일은 /var/simplesamlphp/cert 디렉토리로이동 IdP 의메타데이터를수정해자가인증서를등록한다. 인증소스 'example-userpass' 는앞서 authsources.php 에등록한인증소스의이름과일치해야한다. 본매뉴얼은 authsources.php 등록된이름 'example-userpass' 를이용한다. ~# sudo cd /var/simplesamlphp/metadata

~# sudo nano saml20-idp-hosted.php // 아래와같이수정해인증서를등록한다. 'privatekey' 'certificate' => '/var/simplesamlphp/cert/[ 인증서이름 ].pem', => '/var/simplesamlphp/cert/[ 인증서이름 ].crt', // 인증소스의등록 'auth' => 'example-userpass', 3.4 절환경설정의검증 http://[ 서버주소 ]/simplesaml 에접속해설정된 SAML IdP 환경이정상적으로동작하는지확인한다. Authentication 탭에서 Test configured authentication sources 를선택하면등록된인증소스의목록을확인할수있다. Example-userpass 를선택한후 student/studentpass( 사용자 ID/ 비밀번호 ) 를이용해로그인하면다음그림과같이 uid 와 Affiliation 정보가화면표시된다. 3.5 절 ID 제공자의메타데이터확인 SAML 2.0 은 IdP 와 SP 간신뢰관계를확인하기위해메타데이터를교환한다. IdP 와 SP 가서로통신하기위해서는상대방의메타데이터정보를저장하고있어야한다. http://[ 서버주소 ]/simplesaml 에접속해 Federation 탭을선택하면자신의메타데이터정보를확인할수있다.

IdP 와연계되는상대 SP 의 SAML 소프트웨어가 simplesamlphp 일경우 php 문법의 flat 포맷을이용한다. 상대 SP 가 Shibboleth 를이용할경우 XML 포맷을이용한다. 아래그림과같은 flat 포맷의메타데이터값을상대 SP 와교환해야 IdP-SP 간통신이가능하다.

제 4 장 ID 제공자와사용자 DB 의연동 지금부터 Ubuntu 대신 CentOS 기준으로설명한다. Ubuntu 환경에서도유사한방법으로환경설정이가능하다. 4.1 절 MySQL 사용자 DB 이구성 연동방법을설명하기위해 MySQL 데이터베이스에사용자계정을생성한다. SQL 기반의사용자데이터베이스가존재할경우본절은생략가능하다. MySQL 에로그인한후데이터베이스와테이블을생성한다. 4.2 절 ID 제공자에사용자 DB( 인증소스 ) 등록 authsources.php 를다음과같이수정한다. 인증소스의이름을 dgist-userpass 로, 사용자 DB 의이름은 user_db_test 로가정한다. 이후사용자 ID 와비밀번호는 student/student1234 이다. 인증소스의이름의임의로수정할수있으나이름이디렉토리구조를반영할것을권장한다. ~# cd /var/simplesamlphp/config/ ~# nano authsources.php

// 아래와같이수정한다. <?php $config = array( 'dgist-userpass' => array( 'dgist:coreauth', 'dsn'=>'mysql:host=localhost;dbname=user_db_test', 'username'=>'[mysql 사용자 ID]', 'password' =>'[MySQL 사용자비밀번호 '], ), saml20-idp-hosted.php 파일을수정한다. ~# cd /var/simplesamlphp/metadata/ ~# nano saml20-idp-hosted.php // 다음부분을찾아수정한다. /* * Authentication source to use. Must be one that is configured in *'config/authsources.php'. */ 'auth' => 'dgist-userpass', 'userid.attribute' => 'uid', Authentication sources 가등록되었으므로 dgist:coreauth 라는이름으로인증모듈을구현한다. 4.3 절 dgist:coreauth 모듈의생성 simplesamlphp 에서모듈의이름은디렉토리구조를반영한다. 따라서 CoreAuth 모듈은 dgist 디렉토리밑에존재하게된다. CentOS 에서 IdP 와 MySQL 데이터베이스를연동시키기위해서 PDO(PHP Data Objects) 모듈을설치해야한다. ~# yum install php-mysql 또는 yum install -enablerep mysql ~# service httpd restart ~# cd /var/simplesamlphp/modules ~# mkdir -p./dgist/lib/auth/source

~# cd./dgist/lib/auth/source ~# touch CoreAuth.php // dgist 모듈을활성화시킨다. ~# cd /var/simplesamlphp/modules/dgist/ ~# touch default-enable CoreAuth.php 파일을수정한다. ~# cd /var/simplesamlphp/modules/dgist/lib/auth/source ~# nano CoreAuth.php <?php class sspmod_dgist_auth_source_coreauth extends sspmod_core_auth_userpassbase { private $dsn; private $username; private $password; public function construct($info, $config) { parent:: construct($info, $config); if(!is_string($config['dsn'])) { } throw new Exception('Error'); $this->dsn = $config['dsn']; If(!is_string[$config['username']]) { throw new Exception('Error'); } $this->username = $config['username']; If(!is_string($config['password'])) { throw new Exception('Error'); }

$this->password = $config['password'] private function checkpassword($db_in_pw, $user_in_pw) { } return $user_in_pw === $db_in_pw; protected function login($username, $password) { "$this->password"); //$db = new PDO("mysql:host=localhost;dbname=user_db_test", "$this->username", $db = new PDO($this->dsn, $this->username, $this->password); $db->setattribute(pdo::attr_errmode, PDO::ERRMODE_EXCEPTION); /* * Ensure that we are operating with UTF-8 encoding * This command is for MySQL. Other database may need different commands. */ $db->exec("set NAMES 'utf8'"); /* * With PDO we use prepared statements. This saves us from having to escape * the username in the database query. */ $st = $db->prepare("select username, password, name, email, affi from ex_users where username = '$usernam$ if(!$st->execute()){ throw new Exception('Failed to Query database for the user'); } $row = $st->fetch(pdo::fetch_assoc); if (!$row) { /* User not found */ SimpleSAML_Logger::warning('MyAuth: Could not find user '.

var_export($username, TRUE). '.'); throw new SimpleSAML_Error_Error('WRONGUSERPASS'); } if (!$this->checkpassword($row['password'], $password)) { SimpleSAML_Logger::warning('MyAuth: Could not find user '. var_export($password, TRUE). '.'); throw new SimpleSAML_Error_Error('WRONGUSERPASS'); } $attributes = array( 'uid' => array($username), ); return $attributes; } }?> 4.4 절 dgist:coreauth 모듈의검증 http://[ 서버주소 ]/simplesaml 에접속해 dgist:coreauth 모듈이정상동작하는지확인한다. 정상적으로설치되었다면아래그림처럼 dgist-userpass 가존재한다. dgist-userpass 를선택하고 username 과 password 에 student/student1234 를각각입력한다. 정상적으로설치되었으면아래그림처럼사용자속성값이보인다.

제 5 장사용자속성의제어 개별 IdP 에서제공하는사용자속성은 ID 제공자기관에서결정한다. KAFE(Korean Access Federation) 에서는 8 가지속성의이용을권장하고있다. 개별속성은 RFC4519, RFC2798, RFC4524, eduperson, SCHAC 등에정의되어있다. KAFE 가정의하는속성은다음과같다. 보다자세한사항은 www.coreen.or.kr 을참조한다. 제공속성설명개인정보가능성 uid 사용자 ID( 시험서비스기간에한시적적용 ) O edupersontargetedid 서비스제공자별암호화된사용자고유번호 displayname 사용자의화면표시이름 O mail 사용자이메일주소 O edupersonaffilation organizationname schachomeorganization 사용자의기관내직무정보 사용자의소속기관명 사용자소속기관의최상위도메인이름 edupersonprincipalname 도메인내사용자 ID 정보 O edupersonscopedaffilation 도메인내사용자직무정보 5.1 절 MySQL 테이블의확장및 CoreAuth.php 수정 다음과같이데이터베이스테이블을확장한다.

다음그림처럼표시될수있도록테이블에값을추가한다. CoreAuth.php 파일을수정한다. ~# cd /var/simplesamlphp/modules/dgist/lib/auth/source ~# nano CoreAuth.php // 다음과같이수정 /* * With PDO we use prepared statements. This saves us from having to escape

* the username in the database query */ $st = $db->prepare("select username, password, name, email, affi from ux_users where username = '$username'"); // CoreAuth.php 하단의 $attributes 변수를다음과같이수정 $attributes = array( 'uid' => array($username), 'displayname' 'mail' => array($row['name']), => array($row['email']), 'edupersonaffiliation' 'organizationname' => array($row['affi']), => array('dgist'), 'schachomeorganization' => array('dgist.ac.kr'), ); 5.2 절검증 http://[ 서버주소 ]/simplesaml 에접속해속성값들이화면표시되는지확인한다. 5.3 절 edupersontargetedid 값의생성및검증 saml20-idp-hosted.php 에서 userid.attribute 이설정을확인하고 config.php 파일을수정한다. 6.2 절 oid 설정후적용해야함

~# nano /var/simplesamlphp/metadata/saml20-idp-hosted.php // 'userid.attribute' => 'uid' 로설정되어있는지확인 'authproc' => array( 60 => array( 'class' => 'core:targetedid', 'nameid' => TRUE, ), ), 'AttributeNameFormat' => 'urn:oasis:names:tc:saml:2.0:attrname-format:uri', 'attributeencodings' => array( 'urn:oid:1.3.6.1.4.1.5923.1.1.1.10' => 'raw', /* edupersontargetedid with oid NameFormat. */ ), 수정이완료되었다면웹브라우져를이용해 simplesamlphp 에접근한후사용자로그인을수행한다. [ 주의 ] IdP 서버에서로그인했을경우에는 edupersontargetedid 속성값이화면표시되지않는다. SP 와 ID 연계한후, SP 서버에서로그인했을경우속성값이아래와같이출력된다. 5.4 절 Consent 모듈의활성화및검증 Consent 모듈은속성정보를서비스제공자에게전달하기전에사용자동의를구하는기능을갖는다. 개인정보보호법제 17 조 ( 개인정보의제공 ) 에의하면제 3 자에게개인정보를제공할경우에는해당사용자의동의가반드시필요하다. //Consent 모듈을활성화

~# cd /var/simplesamlphp/modules/consent ~# touch enable //config.php 파일의수정 ~# cd /var/simplesamlphp/config ~# nano config.php // 90 번배열의주석제거 90 => array( 'class' 'store' 'focus' => 'consent:consent', => 'consent:cookie', => 'yes', 'checked' => TRUE ), [ 주의 ] IdP 서버에서로그인했을경우에는 Consent 화면이보이지않는다. SP 와 ID 연계한후, SP 서버에서로그인했을경우아래와같이 Consent 화면이출력된다.

제 6 장메타데이터의설정 6.1 절제공기관관련정보의설정 IdP 의메타데이터에제공기관관련정보를설정한다. 제공해야할정보는 3 가지이다. ~# cd /var/simplesamlphp/metadata ~# nano saml20-idp-hosted.php OrganizationName => array( en => [my school], ), OrganziationDisplayName => array( en => [my school], ), OrganizationURL => array( en => [https://my.school.ac.kr/], ), 6.2 절 oid 설정 KAFE 에서는사용자속성이름의 naming 방식으로 oid 포맷을권장한다. 다음과같이 ID 제공자의메타데이터를수정해 oid 포맷을지원할수있도록설정한다. ~# cd /var/simplesamlphp/metadata ~# nano saml20-idp-hosted.php 'attributes.nameformat' => 'urn:oasis:names:tc:saml:2.0:attrname-format:uri', 'authproc' => array(... 100 => array( 'class' => 'core:attributemap', 'name2oid', ),... ),

제 7 장사용자인터페이스 (Theme) 의변경 7.1 절새로운 Theme 의생성 Theme 은로그인용팝업화면의 GUI(Graphical User Interface) 이다. Theme 생성을위해다음과같이디렉토리를생성하고파일을복사한다. ~# cd /var/simplesamlphp/modules/dgist ~# mkdir p./themes/www/dgistidp/default/includes ~# cd /var/simplesamlphp/modules/dgist/themes/www/dgistidp/default/includes ~# cp /var/simplesamlphp/templates/includes/*.php./ ~# cd /var/simplesamlphp/modules/dgist/themes/www/dgistidp/ ~# mkdir core ~# cd./core ~# cp /var/simplesamlphp/modules/themefeidernd/themes/feidernd/core/loginuserpass.php./ config.php 파일을수정한다. ~# cd /var/simplesamlphp/config ~# nano config.php // theme.use 를다음과같이수정 theme.use => dgist:dgistidp, // 참조 ; 디렉토리이름과동일해야함 (/var/simplesamlphp/modules/dgist/themes/dgistidp/core 스타일파일 (.css) 을복사하고 loginuserpass.php 파일을수정한다. ~# cd /var/simplesamlphp/modules/dgist/www ~# cp /var/simplesamlphp/modules/themefeidernd/www/feidernd.css./ ~# cd /var/simplesamlphp/modules/dgist/themes/dgistidp/core ~# nano loginuserpass.php // themefeidernd/feidernd.css 를 dgist/feidernd.css 로변경한다. <?php echo simplesaml_module::getmoduleurl( dgist/feidernd.css );?> 로고파일을복사하고 loginuserpass.php 파일을수정한다. ~# cd /var/simplesamlphp/modules/dgist/www ~# cp /var/simplesamlphp/modules/themefeidernd/www/ssplogo-fish-only-s.png./

~# cd /var/simplesamlphp/modules/dgist/themes/dgistidp/core ~# nano loginuserpass.php // themefeidernd/ssplogo-fish-only-s.png 를 dgist/ssplogo-fish-only-s.png 로변경한다. <?php echo simplesaml_module::getmoduleurl( dgist/ssplogo-fish-only-s.png );?> 7.2 절새로운 Theme 의검증 http://[ 서버주소 ]/simplesaml 에 접속해 Test authentication sources 화면의 dgist-userpass 를 선택한다. theme 이정상적으로적용되었으면아래와같은화면이출력된다. 7.3 절 KREONET IdP 용으로 Theme 변경하기 다음과같은 KREONET IdP 용 GUI 로 Theme 을변경할수있다.

Theme 변경을위해 2 개의파일 (inthremes.tar.gz, inwww.tar.gz) 이필요하다. coreen@kreonet.net 에요청해 KREONET IdP 용 Theme 을확보한다. // inwww.tar.gz 파일이 /var/simplesamlphp/www 에존재하는것으로가정한다. ~# cd /var/simplesamlphp/www/ ~# tar zxvf inwww.tar.gz // inthemes.tar.gz 파일이 /var/simplesamlphp/modules/dgist/themes에존재하는것으로가정한다. ~# cd /var/simplesamlphp/modules/dgist/themes ~# tar zxvf inthemes.tar.gz ~# mv dgistidp dgistidp_old ~# mv kreonet dgistidp loginuserpass.php 파일을수정한다. ~# cd /var/simplesamlphp/modules/dgist/themes/dgistidp/core ~# nano loginuserpass.php // 아래적색박스의내용을적절히수정한다.

http://[idp 서버주소 ]/simplesaml 에접속해 Test authentication sources 화면의 dgist-userpass 를선택한다. 정상적으로설정되었으면위와같은화면이출력된다. 변경된 Theme 은크게 1 기관 BI, 2 로그인, 3Footer 로구성된다. 개별요소의변경을원하면다음파일을찾아내용을수정한다.

1 기관 BI 이미지위치 css 파일위치 /var/simplesamlphp/www/images/korean/common/kreonet.gif /var/simplesamlphp/www/css/korean/common.css ( kreonet.gif 가위치한라인의내용편경 ) 2 로그인 3Footer /var/simplesamlphp/modules/dgist/themes/dgistidp/core/loginuserpass.php /var/simplesamlphp/www/user_layout_footer.php

제 8 장 Consent 화면의변경 KREONET IdP 용 Consent 를적용하기위해서는 inconsent.tar.gz 파일이필요하다. coreen@kreonet.net 에요청해해당파일을확보한다. // inconsent.tar.gz 파일이 /var/simplesamlphp/modules/consent 에존재하는것으로가정 ~# cd /var/simplesamlphp/modules/consent ~# mv templates templates_old ~# tar zxvf inconsent.tar.gz Consent 화면의변경여부를확인하기위해서 http://[sp 서버주소 ]/simplesaml 에접속해서로그인을수행한다. 해당 SP 는 IdP 와 ID 연계되어있어야한다. http://[idp 서버주소 ]/simplesaml 을이용하면적용된 Consent 화면이나타나지않는다. KREONET IdP 용 Consent 가정상적으로적용되면아래그림과같은화면이출력된다. 1 기관 BI 및 2Footer 의변경을위해다음표에명시된파일을수정한다. 1 기관 BI 2Footer 이미지위치 css 파일위치 /var/simplesamlphp/www/images/korean/common/login_kreonet.gif /var/simplesamlphp/www/css/korean/common.css ( login_kreonet.gif 가위치한라인의내용편경 ) /var/simplesamlphp/www/user_layout_footer.php

제 9 장보안설정 9.1 절페이지접근제어 simplesamlphp 를설치하면일반사용자가웹브라우저를통해 IdP 또는 SP 의 metadata, phpinfo 등보안정보에접근할가능성이있다. simplesamlphp 를설치한후해당정보들을은닉하기위해 config.php 파일을수정해야한다. default themes 의 userloginpass.php 파일을수정해사용자인터페이스를변경할수있다. ~# clear ~# cd /var/simplesamlphp/config/config.php // 아래와같이 protectindexpage 와 protectmetadata 값을 true 로변경한다. 'admin.protectindexpage' => true, 'admin.protectmetadata' => true, SSP 의관리자페이지노출취약점을해결하기위해 apache 설정을변경해줘야한다. CentOS 6.5 기준으로 IdP 가 SSL 이적용되어있을때다음과같이설정한다. ~# clear ~# cd /etc/httpd/conf.d ~# nano ssl.conf //</VirtualHost> 앞에다음과같이추가한다. 설치환경에맞게적절히수정되어야한다. ReWriteEngine On RewriteCond %{REQUEST_URI} ^/simplesaml/module.php/core/loginuserpass.php [NC] RewriteCond %{QUERY_STRING} ^AuthState=(.*)as_login(.*)AuthId(.*)admin(.*) [NC] // 접속가능한 IP 의주소를설정한다 ( 아래예 ; 192.168.0.*) RewriteCond %{REMOTE_ADDR}!^192\.168\.0\.[0-9] + RewriteCond ^ - [F] 9.2 절 SSP 의보안강화사항 showerrors 항목을 false 로해서오류가발생했을때노출되지않아야할오류정보 (stacktrace 는시스템정보를노출함 ) 가사이트에노출되는것을방지한다. 또한, admin 비밀번호를설정해 SSP 의정보가노출되지않도록한다.

~# nano /var/simplesamlphp/config/config.php //5.1과동일 'admin.protectindexpage => true, // 추가또는수정 showerrors => false, 쿠키보안을위해, 평문연결 (plain text connection, Non-TLS) 일때쿠키정보가전송되는것을막고자바스크립트가쿠키에접근하는것을막아야한다. TLS(https connection) 를반드시이용해야한다. 쿠키보안설정을하지않으면 Cross Site Scripting 공격에취약할수있다. ~# nano /var/simplesamlphp/config/config.php // 다음과같이수정 'session.cookie.secure => true, session.phpsession.httponly => true, SSP 가 redirect 를할도메인이름을설정한다. 다음과같이 empty array 로설정하면 SSP 가자동으로신뢰하는도메인으로만 redirect 한다. ~# nano /var/simplesamlphp/config/config.php // 다음과같이수정 trusted.url.domains => array(), SHA1( 보안취약 ) 대신 SHA-256 으로이용한다. ID 제공자는 saml20-idp-hosted.php 를, SP 제공자는 authsources.php 를수정한다. SSP 1.12 이상의버전에서는 config 파일에반영되어있으므로주석표시만제거한다. // ID 제공자일경우에해당 ~# nano /var/simplesamlphp/metadata/saml20-idp-hosted.php // 다음과같이주석제거 'signature.algorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256',

제 10 장기타설정 10.1 절 Metadata 의 EntityID 변경 KAFE 회원기관은 EntityID 를다음과같은방법으로설정해야한다. IdP 또는 SP 의 URL 이 https://z.ac.kr 이며 SAML 소프트웨어로 simplesamlphp 를이용한다고가정한다. ID 제공자 : https://z.ac.kr/idp/simplesamlphp 서비스제공자 : https://z.ac.kr/sp/simplesamlphp ~# cd /var/simplesamlphp/metadata ~# nano saml20-idp-hosted.php // 아래적색박스부분에 EntityID 를기록한다. 10.2 절기타 Single Logout 메타데이터의수정 metadata/saml20-idp-hosted.php logouttype => iframe 레이아웃수정 simplesamlphp/modules/core/templates/logout-iframe.php [ 최근갱신 : 2015-11-6 draft v0.15]