# 중복 로그온

{% hint style="danger" %}
**현재 해당 기능은 SSO 정책 서버에 설정 되어 있지 않으며, 해당 기능을 요구하는 업무시스템이 있다면 담당자에게 문의 하시기 바랍니다.**
{% endhint %}

![중복 로그온 Flow](https://2326782925-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lkbt3DI8xkYNG7Cdw3E%2F-LkfbUbTkEaN15Ti2T5L%2F-Lkfbj7nb_huS0phZy9_%2Fimage.png?alt=media\&token=7156f2ce-0daa-4637-96f5-9dc4ac7c62eb)

SSO 관리자는 SSO 인증 정책 중에 중복 로그온 관련 정책을 설정할 수 있습니다. 중복 로그온이란 **동일한 계정으로 중복하여 로그온을 시도하는 경우**를 말합니다. 즉 다른 컴퓨터 혹은 웹 브라우저를 이용하여 로그온을 시도하면 중복 로그온에 해당합니다.

SSO 인증 정책에서 중복 로그온을 허용하다면 동일한 계정으로 여러 브라우저나 여러 컴퓨터에서 중복으로 로그온을 할 수 있습니다. 하지만 중복 로그온을 허용하지 않는다고 하면 뒤에 **로그온을 시도한 자(후입자)에게 선택 권한**을 줄 수 있습니다. 선택은 다음과 같습니다.

* **선입자의 인증 세션을 무효화 하고 후입자가 로그온 함**
* **선입자가 로그온 되어 있으니 후입자의 로그온 시도를 취소 함**

물론 SSO **정책 설정에 따라 후입자에게 선택권 없이 바로 후입자 우선 로그온을 진행 시킬 수도 있습니다.** 이 설정은 SSO 인증 전체에 영향을 미치는 사항으로 신중히 결정하여야 합니다.

사용자는 선택 UI에서 로그온을 선택하면 이 정보는 인증 서버에까지 전달되어 중복이 발생한 선입자의 세션을 무효화 시킵니다. 그리고 중복 로그온 상황 때문에 중지 되었던 로그온을 다시 시작합니다. 반대로 사용자가 로그온 취소를 선택하면 이 정보도 인증 서버에까지 전달되어 진행 중인 중복 로그온 데이터를 삭제합니다.

{% hint style="success" %}
샘플로 제공된 중복 로그온 선택 페이지는 디자인이 적용되어 있지 않습니다. 필요하다면 업무 시스템 개발자가 디자인을 적용해야 합니다.
{% endhint %}

###

### **중복 로그온 대상 예외 처리**

중복 로그온을 허용하지 않게 되면 **기본적으로** **모든 사용자가 정책의 대상**이 됩니다. 하지만 **특정 사용자만 중복 로그온을 허용** 할 수도 있습니다. 예를 들어 대표이사와 같이 비서가 업무를 대신 처리해야 하는 상황이라면 대표이사와 같은 계정은 중복 로그온 대상에서 제외할 필요가 있을 수 있습니다. 이 부분은 정확한 정책을 먼저 정한 뒤에 **SSO 프로젝트 수행자가 개인 정책 핸들러에 추가 개발을 해야 하는 사항**입니다.



### 중복 로그온 UI 처리

**중복 로그온 방지 정책을 사용하고 사용자가 로그온 시 중복 로그온이 감지**되면 업무 시스템은 사용자가 **인증 진행 여부를 선택할 수 있는 페이지를 제공**해야 합니다. 이 페이지에 전달되는 정보는 SSO agent가 분석하여 조회 할 수 있도록 API를 제공합니다.&#x20;

[**개발하기**](../development) **챕터에서 개발언어 별로 "SSO 중복 로그온 선택 UI 구성하기"** 부분에서 상세하게 볼 수 있습니다.

{% hint style="info" %}
다른 업무 시스템의 UI를 이용할 경우는 SSO 담당자와 협의가 필요합니다. SSO 정책에 업무 시스템들을 등록 할 경우, 유관한 업무 시스템들을 묶어 그룹화 할 수 있습니다. 해당 그룹에 기본 업무 시스템을 지정하여 그룹 내 다른 업무 시스템들의 UI를 대신 처리 할 수 있습니다. 만약 해당 그룹 내에서 UI를 서비스하는 URL을 찾지 못하면 SSO 전체 시스템에서 UI를 대신해줄 업무 시스템을 찾습니다. 물론SSO 담당자가 SSO 전체 시스템에 기본 업무 시스템을 설정해야만 사용할 수 있습니다. 여기에서도 UI를 서비스할 URL을 찾지 못하면, "사용자에게 UI를 제공할 Endpoint를 찾을 수 없다"는 오류가 발생합니다.
{% endhint %}

["SSO의 동작과 이해"로 돌아가기]()
