SSO 중복 로그온 선택 UI 구성하기

중복 로그온 정책을 사용하면 먼저 인증 받은 사람(선입자)에 대한 처리와 나중에 로그인 하는 사람(후입자)에 대한 처리를 해야 합니다.

선입자에게는 후입자가 로그온을 요청한 시간, IP 정보를 표시할 수 있습니다.

후입자에게는 로그온 시 선입자가 있고 선입자의 인증 세션 정보를 무효화 시키고 로그온 할 것인지 선택할 수 있는 페이지로 이동되게 할 수 있습니다.

샘플코드

dupChoice.jsp
<%@ page import="com.nets.sso.agent.authcheck.AuthCheck" %>
<%@ page import="com.nets.sso.agent.authcheck.DupCheck" %>
<%@ page import="com.nets.sso.common.AgentException" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String ssoRequest = request.getParameter("ssoRequest");
    String dupIP, dupTime, dupUserID, timeoutMinutes;
    try {
        AuthCheck auth = new AuthCheck(request, response);
        DupCheck dupCheck = new DupCheck(auth, request, response);
        dupIP = dupCheck.getDupIP();
        dupTime = dupCheck.getDupTime();
        dupUserID = dupCheck.getDupUserID();
        timeoutMinutes = dupCheck.getTimeoutMinutes();
%>
<!DOCTYPE html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>NETS*SSO Duplication</title>
    <script language="javascript" type="text/javascript">
        function startTimer(duration, display) {
            if (0 == duration) {
                display.textContent = "limitless";
            } else {
                var timer = duration, minutes, seconds;
                setInterval(function () {
                    minutes = parseInt(timer / 60, 10);
                    seconds = parseInt(timer % 60, 10);
                    minutes = minutes < 10 ? "0" + minutes : minutes;
                    seconds = seconds < 10 ? "0" + seconds : seconds;
                    display.textContent = minutes + ":" + seconds;
                    if (--timer < 0) {
                        timer = duration;
                    }
                }, 1000);
            }
        }
        function OnLogon() {
            document.forms["form1"].target = "_top";
            document.forms["form1"].action = "./dupChoiceLogon.jsp";
            document.forms["form1"].submit();
        }
        function OnCancel() {
            document.forms["form1"].target = "_top";
            document.forms["form1"].action = "./dupChoiceCancel.jsp";
            document.forms["form1"].submit();
        }
        function OnInit() {
            var minutes = 60 * <%=timeoutMinutes%>;
            var display = document.querySelector('#time');
            startTimer(minutes, display);
        }
    </script>
</head>
<body onLoad="OnInit();">
<form id="form1" method="post" action="">
    <input type="hidden" name="ssoRequest" value="<%=ssoRequest%>"/>
    <table>
        <tr>
            <td colspan="2">Duplication</td>
        </tr>
        <tr>
            <td>ID:</td>
            <td><%=dupUserID%>
            </td>
        </tr>
        <tr>
            <td>IP:</td>
            <td><%=dupIP%>
            </td>
        </tr>
        <tr>
            <td>Time:</td>
            <td><%=dupTime%>
            </td>
        </tr>
        <tr>
            <td>Select Choice</td>
            <td>
                <input type="button" value="Yes, let me logon" onclick="OnLogon()">
                <input type="button" value="No, Let him logon" onclick="OnCancel()">
                left: <span id="time"></span>
            </td>
        </tr>
    </table>
</form>
</body>
</html>
<%
} catch (AgentException e) {
    e.printStackTrace();
%>
<%=e.toString()%>
<%
    }
%>

Last updated

Was this helpful?