• 검색 결과가 없습니다.

= 개정이력 =

1. 개 요

□ 본 문서는 KISTI Single Sign On 체제를 구축하기 위하여 SSO서비스를 반영하는 원내 및 원외 사이트의 추가 개발 및 수정을 하는 개발자를 위 한 지침서이다.

□ 본 문서를 이해하기 위해 KISTI SSO구축 체제를 이해함과 부분별 적용 기술에 대한 이해를 바탕으로 개별 사이트의 개발 및 수정 작업을 진행해 야 한다.

□ KISTI-SSO시스템은 다음의 전제 조건을 기준으로 출발 한다.

◦ 단일한 고객정보 저장 관리

- 개별 사이트의 고객정보는 sso.kisti.re.kr에서 등록,수정 등의 일관된 관리를 받는다.

- 단, sso.kisti.re.kr의 관리 내용은 여러 고객정보 중 표준으로 정한 공통 항목에만 국한되며 나머지의 부가 항목은 각 개별 사이트별로 추가 개 발된 프로그램을 sso.kisti.re.kr의 프로세스에 접목 시켜 관리된다.

◦ 웹 프로그램 단일화

- 이용자 등록, 수정, 로그인, 아이디/비밀번호 찾기, 탈퇴, 로그아웃 기 능은 본 문서에 정의한 내용을 준수하여 개발 작업을 진행해야 한다.

- 고객정보의 입, 출력에 대한 표준 및 사용자의 행동양식에 대한 분석 정보 수집의 단일화로 원내 사이트의 종합적인 분석을 위해서이다.

◦ Single Sign On 구현 기반기술 준수

- SSO 기능 구현을 위해 Client Agent, Server Agent 기반기술을 습득하 고 이를 반드시 사이트 개발에 적용하여야 한다.

가. 시스템 구성도 및 프로세스 흐름도

2. 개별 업무서버에서 SSO 서버에게 클라이언트 설치 요구 3. SSO 서버에서 ActiveX 배포

4. 사용자 PC에ActiveX 설치

○ 사용자 서비스 요청시 개별업무 서버가 SSO서버에 서비스 요청하는 단 계로 반복적 : 5~9

5. 업무서버로 접속 및 인증토큰 제출

5. 1개별 업무서버에서 토큰 정보 유효성 검사

6. 토큰정보가 유효하지 않으면 SSO 서버에 인증토큰 발급 요청 7. SSO 서버는 LDAP 서버에게 인증 정보 확인

8. 사용자 인증 정보가 확인되면 인증토큰 발급

9. 발급받은 인증토큰을 가지고 사용자가 업무서버로 로그인 및 SSO연 관 업무 처리

나. SSO서비스 요청 및 인증 방식

1) 개별사이트의 SSO서비스 요청 방식

◦ 위 그림에서와 같이 개별 업무 서버에서 sso.kisti.re.kr의 서비스를 요청 하기 위해서는 공용 스크립트

<script language="JavaScript"

src="http://sso.kisti.re.kr/js/TT_User_CommonJSP.js"></script>

을 요청 페이지에서 포함시켜 자바스크립트 함수를 호출 하는 형식을 이용한다.

<위 예에서는 바닥에 개별사이트가 로그인 서비스를 요청하여 SSO의 로그인 처리 창이 open window가 나타난 것이다.>

◦ 이는 모든 SSO 연계 사이트에서 공통된 표준을 만들기 위함이며 또한 요청 처리 URL을 sso.kisti.re.kr에서 관장하기 위함이다. 즉, 개별 사이 트에서 javascript 함수의 URL을 직접 호출할 경우 운영 및 개편 시 서 비스 URL이 바뀌면 서비스를 보장할 수 없지만 공용 javascript 함수를 통한 호출의 경우는 이를 보장하게 된다.

◦ 아래의 예제 프로그램을 보고 간단히 이해 할 수 있다.

<script language="JavaScript"

src="http://sso.kisti.re.kr/js/TT_User_CommonJSP.js"></script>

...

<form name="LoginForm">

<input type="hidden" name="returnURL" value="http://AAA.com/tokenCheck.asp">

<input type="hidden" name="server_num" value="SS01">

<input type="text" name="userid">

<input type="text" name="passwd">

<img src="login.gif" OnClick="TT_UserLogin('LoginForm')">

</form>

<표 개별사이트 로그인 요청 입력 화면 코딩 예>

위 코드에서 공용 javascript 함수를 include하여 실제 로그인 submit을 하는 img에 “TT_UserLogin('LoginForm')" 함수를 호출하여 사용한 것 을 볼 수 있다.

2) 토큰 유효성 검증 방법

◦ 개별 업무 서버와 SSO서버는 서로 다른 도메인을 사용하므로 다른 도

메인끼리의 서비스 요청 시에

요청 내용이 유효한지를 우선적으로 검증을 한고 유효한 경우에 한해서 서비스를 제공하여야 한다.

◦ 이 과정 중 요청에 대한 유효성을 검증하기 위해서 인증 토큰을 사용한 다. 인증토큰은 도메인과 무관하게 사용자의 개인PC에 ActiveX ( SSO Client Agent ) 형태의 객체에 저장되며 구분자를 포함한 String 형태를 가지고 있다. (토큰 String의 구조는 다음 장에서 상세히 설명 된다.)

◦ 이 토큰정보는 사용자의 요청 시에 SSO서버에서 암호화 된 형태로 최 초 만들어지며 개별업무 서버에서는 이 정보를 복호화 해서 사용하게 된다.

◦ 아래의 예제 프로그램을 보고 간단히 이해 할 수 있다.

<script language="JavaScript">

function checkSSO() {

var ret = document.KISTI_CLIENT.GetToken();

if (ret != "" && ret.length > 2) document.location.href="login_ps.asp?ret="

+ret;

}</script>

<body OnLoad="checkSSO();">

<OBJECT ID='KISTI_CLIENT'

CLASSID='clsid:579CC802-2AF6-436B-8B9C-10F0B6C99FFE'

CODEBASE="http://sso.kisti.re.kr/auth/kisti_client.cab#version=1.0.0.2">

</OBJECT>

</body>

<표 개별사이트 토큰정보 이용 코딩 예>

가) 토큰정보 읽기 ( Client Script )

◦ 토큰정보는 개인PC의 ActiveX를 이용해 저장,확인 되므로 Client Script에만 읽을 수 있다. 이렇게 정보를 읽어 개별업무 서버로 암호

화된 정보를 보내야 Server Script에서 받아 처리 할 수 있다.

☑ 인증토큰을 발급받으면 토큰정보는 레지스트리에 암호화된 상태로 저장됨

☑ 암호화된 인증토큰을 복호화 하는 작업은 서버측에서 암호화 라이 브러리를 사용해 복호화함

☑ 복호화한 토큰정보의 각 항목은 구분자(‘|’)로 연결되어 있어서, 필 요한 항목은 토큰을 잘라서 이용함

* 토큰의 마지막 항목에는 사용자가 접속 가능한 서버ID가 구분자(,) 로 구성되어 있음

예) TokenStr="sessionID|admin|홍길동

|1|samsung|management|0|163123|SS23|localhost|

20040820 10:10|20040821 10:10|SS23,SS24,SS25"

☑ 로그인 시간 및 ExpireTime 의 형식

- (YYYYMMDD HH:mm) ..HH의 형태는 (00~23)시 형태로 되어있 다.

☑ 접속가능 서버 의 형식

- (SS01,SS02,SS03).. 서버아이디가 1개 이상일 경우 콤마(,) 와 결 합하여 더해진다.

4) 사이트 처리 업무 정의

◦ Kisti 통합 인증 시스템의 이용은 개별 사이트에서 아래 내역을 개발 구 현 하여야 가능하다. 아래 표는 개별 사이트 개발자들을 위한 업무 처리 내역 리스트임과 동시에 sso.kisti.re.kr을 운영하는 운영 담당자가 개별 사이트를 통합 인증 시스템을 이용하도록 등록하는데 Check List로 활 용될 것이다.

◦ 개별 사이트 개발자는 자신의 사이트에 Single Sign On 기능을 구축하 기 위해 아래 업무를 반드시 구현하여야 한다.

구분 분류 업무명 설명 비고

순번 작 업 내 역 비 고

1 처음 호출 되는 페이지에 토큰인증 관련 모듈 적용

세부사항은 http://guide.kisti .re.kr/guide/boa rd/View.jsp?men u_id=105008&sT ype=&sText=&pa geSize=10&goto Page=1&seq=4 참조

2 로그인이 필요한 페이지에 이용자 인증 관련 모듈 적용

3 로그아웃을 했을 때 이용자 인증 해제 모듈 적용

4 이용자 등록 시 호출 모듈 적용 및 2차 추가 항목 등록 관련 프로그램 개발(개발된 페이지 통합DB에 기록)

5 이용자 수정 시 호출 모듈 적용 및 2차 추가 항목 수정 관련 프로그램 개발(개발된 페이지 통합DB에 기록)

6 이용자 탈퇴 시 호출 모듈 적용

7 ID/Password 찾기 시 호출 모듈 적용

8 관리자 등급에 따른 호출 모듈 적용

9 통합 DB쪽과 데이터 연계 시 필요한 작업은 Stored Procedure 로 호출 한다.

이때 작성된 프로시져명은 통합 DB쪽에 기록 한다.

관련 문서