싱글 사인-온 (SSO) 의 사용여부.

elfs의 이미지

현재 진행하는 프로젝트관련해서 클라이언트측에서 로그인세션이나 쿠키관련하여 싱글사인온 방식 도입을 검토요청해 왔습니다.

해당 업체는 접속량이 많아서 웹서버 여러대를 클러스터링 방식으로 돌릴 계획이구요. 단일 사이트 입니다.

디비세션방식을 권유했는데 SSO 에 대한 검토를 같이 요구하더군요.

그래서 어제 몇몇 자료를 찾아보았더니 SSO 는 단일사이트에서 사용하기는 무게가 좀 버겁다고 해야하나 단지 클러스터링 된 서버들이 세션을 공유하기 위해 사용하기는 좀 느리거나 무겁지 않을까 라는 생각이 들더군요. 지향하는 부분도 한 사이트를 병렬처리 하는것과는 약간 거리가 먼것같구요.

싱글사인온을 사용해 보신 분들께 조언 구합니다.

snaiper의 이미지

저도 SSO 를 약간 해본 입장에서 말씀드리자면 대부분의 SSO 전문 업체에서 말하는 것들은 멀티 도메인에 대한 SSO 입니다. 여러 시스템을 한 아이디로 로그인 한다는 게 쉽지 않기 때문에 그것에 대한 솔루션을 제공하고 있는 형태입니다.
(고려해야 할 것이 너무 많거든요. 보안 강도, DB 공유를 못할 수도 있기 때문에 발생하는 문제, 다양한 방법으로 구축된 사이트들을 전부 묶으려면 머리 빠지죠. 보통은 처음 사이트 만들 때 이런 것을 전혀 고려하지 않고 하기 때문에 대강의 떠오르는 방법만으로는 하기가 그리 쉽지 않습니다.)

말씀하시는 상황이 단일 사이트, 즉 단일 도메인에 서버가 여러 대인 상황이라는 말씀이신데, 글쎄요... 음.. 좀 무겁다고 느끼실 수도 있겠네요. 여튼 그런 경우에도 맞는 다른 SSO 방법이 있긴 합니다. 말씀하신 DB 세션도 되고, 한 서버에서 인증을 받으면 토큰을 생성해서 클라이언트에 쿠키로 내려준 후에 다른 서버에서 그 토큰을 쿠키에서 받으면 그 정보를 이용해서 이미 인증 받았고, 그건 누구다라는 걸 인식해서 인증 해버리는 구조가 있습니다. 물론 보안에 대한 고려를 해야 되기 때문에, 토큰은 당연히 암호화 해야 하고, 일정 시간 지나면 못 쓴다거나 하는 등의 토큰 복사하지 못하도록 하는 특별한 처리를 해줘야 합니다.

뭐 이런 구조에는 커버로스 기반 인증 사용하는 시스템은 다 이렇고, 또 Lotus Notes(LTPA Token 방식을 씁니다.) 가 이런 구조를 씁니다. 대강 유명한 것만 적으면 대강 이렇습니다.

이외에도 방법이 더 있긴 한데, 대략 저정도가 일반적으로 써먹을 수 있는 방법이 아닐까 하네요.