File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.ubintis.agt5.api.ApiDataService" %>
<%@ page import="com.ubintis.agt5.common.util.JsonUtil" %>
<%@ page import="com.ubintis.agt5.common.util.StrUtil" %>
<%@ page import="com.ubintis.agt5.framework.bean.AgentBean" %>
<%@ page import="com.ubintis.agt5.framework.config.AgentConfig" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.List" %>
<%
String agent_id = "";
String agent_domain = "";
String server_id = "";
String server_app_url = "";
AgentBean agentBean = AgentConfig.getInstance().getAgentBean();
if( agentBean != null ) {
agent_id = agentBean.getAgent_id();
agent_domain = agentBean.getAgent_domain();
server_id = agentBean.getServer_id();
server_app_url = agentBean.getServer_app_url();
}
String pni_token = StrUtil.NVL( session.getAttribute( "pni_token" ) );
String user_data = StrUtil.NVL( session.getAttribute( "user_data" ) );
String strAgentList = "";
String loginPolicy = "";
if( !"".equals( pni_token ) ){
ApiDataService apiDataService = new ApiDataService();
strAgentList = StrUtil.NVL( apiDataService.getAgentList() );
loginPolicy = StrUtil.NVL( apiDataService.getLoginPolicy() );
}
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>Pass-Ni SSO Agent Sample</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="icon" href="img/favicon.ico" />
<link rel="stylesheet" href="css/default.css" />
<script type="text/javascript" src="js/jquery-3.6.3.min.js"></script>
<script type="text/javascript" src="js/countdown.js"></script>
<script type="text/javascript">
var agent_id = '<%=agent_id%>';
var server_id = '<%=server_id%>';
var sso_url = '<%=server_app_url%>';
var sso_login_url = sso_url + '/user/login/link';
var sso_logout_url = sso_url + '/user/logout';
var pni_token = '<%=pni_token%>';
$(function() {
if( pni_token != '' ) {
var policy = '<%=loginPolicy%>';
if( policy != '' && policy != 'none' ) {
var objPolicy = JSON.parse( policy );
var atmc_logout_yn = objPolicy.atmc_logout_yn;
var atmc_logout_time = objPolicy.atmc_logout_time;
var login_dup_yn = objPolicy.login_dup_yn;
console.log(atmc_logout_yn + '-' + atmc_logout_time + '-' + login_dup_yn);
if(atmc_logout_yn == 'Y') {
fnAutoLogout(atmc_logout_time);
}
}
fnLoginCheck();
}
});
function fnAutoLogout(atmc_logout_time) {
$('#autologout').show();
Countdown.start(atmc_logout_time, function() {
alert( '일정시간(' + atmc_logout_time + '분)동안 이용이 없어 자동로그아웃 되었습니다.' );
fnLogout();
}, 'countdown');
}
function fnLoginCheck() {
$.get('login_check.jsp', function(resdata) {
if(resdata != '') {
console.log('login_check : ' + resdata.code);
if(resdata.code == 'SS0010') {
alert( '로그아웃 되었습니다.' );
fnLogout();
} else if(resdata.code == 'SS0007') {
alert( '[' + resdata.data + '] IP에서 접속하여 로그아웃 되었습니다.' );
fnLogout();
}
}
}, 'json' )
.fail(function(e) {
alert('error:' + e);
});
}
function fnLogin() {
var agt_url = $(location).attr('protocol') + '//' + $(location).attr('host');
document.loginForm.agt_url.value = agt_url;
$('#loginForm').attr('action', sso_login_url).submit();
}
function fnLogout() {
var agt_url = $(location).attr('protocol') + '//' + $(location).attr('host');
document.logoutForm.agt_url.value = agt_url;
$('#logoutForm').attr('action', sso_logout_url).submit();
}
function fnSSO(agt_id, sso_url) {
$.get('sso_code.jsp', function(resdata) {
if(resdata.errorCode == '') {
console.log('sso_code : ' + resdata.sso_code);
$('#sso_code').val(resdata.sso_code);
$('#ssoForm').attr('target', agt_id);
$('#ssoForm').attr('action', sso_url);
$('#ssoForm').submit();
//window.open('about:blank').location.href = sso_url + '?sso_code=' + data.sso_code;
} else {
alert('error:' + resdata.errorCode);
}
}, 'json' )
.fail(function(e) {
alert('error:' + e);
});
}
function fnClientSSO(agt_id) {
var req_data = '';
req_data += 'server_id=' + server_id;
req_data += '&agt_id=' + agent_id;
req_data += '&target_agt_id=' + agt_id;
$.ajax({
url : 'https://127.0.0.1:49443/serverapi?method=sso',
type : 'post',
data : req_data,
async : true,
success : function(responseData) {
console.log(responseData);
}
});
}
</script>
</head>
<body>
<form name="loginForm" id="loginForm" method="post" action="">
<input type="hidden" id="agt_id" name="agt_id" value="<%=agent_id%>" />
<input type="hidden" id="agt_url" name="agt_url" value="" />
<input type="hidden" id="add_param" name="add_param" value="add_param_value" /> <!-- 추가 파라미터가 있을 경우 -->
</form>
<form name="logoutForm" id="logoutForm" method="post" action="">
<input type="hidden" id="agt_id" name="agt_id" value="<%=agent_id%>" />
<input type="hidden" id="agt_url" name="agt_url" value="" />
<input type="hidden" id="pni_token" name="pni_token" value="<%=pni_token%>" />
</form>
<form name="ssoForm" id="ssoForm" method="post" action="">
<input type="hidden" id="sso_code" name="sso_code" value="" />
</form>
<div class="wrap">
<h1>Pass-Ni SSO Agent 샘플 화면</h1>
</div>
<div class="bg-section">
<div class="wrap">
<div class="block1">
<p><span class="tit">연동시스템 정보</span></p>
<table>
<tr>
<td width="90px"><span class="subtit">Agent Info</span></td>
<td width="*"><span class="cont">Domain : <%=agent_domain%>, ID : <%=agent_id%></span></td>
</tr>
<tr>
<td><span class="subtit">Server URL</span></td>
<td><span class="cont"><%=server_app_url%></span></td>
</tr>
</table>
<p style="padding-top: 30px;"><span class="tit">사용자 정보</span></p>
<table>
<tr>
<td width="90px"><span class="subtit">인증 토큰</span></td>
<td width="*"><span class="cont"><%=pni_token%></span></td>
</tr>
<tr>
<td><span class="subtit">사용자 정보</span></td>
<td><span class="cont"><%=user_data%></span></td>
</tr>
<tr id="autologout" style="display:none;">
<td><span class="subtit">자동 로그아웃</span></td>
<td><span class="cont" id="countdown"></span></td>
</tr>
</table>
</div>
</div>
</div>
<div class="wrap">
<%
if( "".equals( pni_token ) || "".equals( user_data ) ) {
%>
<ul class="icon-bt">
<li><a href="javascript:fnLogin();"><img src="img/bt-3.jpg" alt="통합 로그인" /></a></li>
<li class="subtit"><a href="javascript:fnLogin();">통합 로그인</a></li>
<li class="cont">( 통합 로그인 화면 호출 )</li>
</ul>
<%
} else {
%>
<ul class="icon-bt">
<li><a href="javascript:fnLogout();"><img src="img/bt-4.jpg" alt="통합 로그아웃" /></a></li>
<li class="subtit"><a href="javascript:fnLogout();">통합 로그아웃</a></li>
<li class="cont">( 통합 로그아웃 호출 )</li>
</ul>
<%
if( !"none".equals( strAgentList ) && !"".equals( strAgentList ) ) {
List<HashMap<String, Object>> agentList = JsonUtil.parseList( strAgentList );
for( HashMap<String, Object> hm : agentList ) {
String agtId = StrUtil.NVL( hm.get( "agt_id" ) );
String agtNm = StrUtil.NVL( hm.get( "agt_nm" ) );
String agtTy = StrUtil.NVL( hm.get( "agt_ty" ) );
String ssoUrl = StrUtil.NVL( hm.get( "sso_url" ) );
if( "CLIENT".equals( agtTy ) ) {
%>
<ul class="icon-bt">
<li><a href="javascript:fnClientSSO('<%=agtId%>')"><img src="img/bt-1.jpg" alt="SSO 연동" /></a></li>
<li class="subtit"><a href="javascript:fnClientSSO('<%=agtId%>')"><%=agtNm%> SSO 연동</a></li>
<li class="cont">( <%=agtNm%>으로 SSO 연동 )</li>
</ul>
<%
} else {
%>
<ul class="icon-bt">
<li><a href="javascript:fnSSO('<%=agtId%>', '<%=ssoUrl%>')"><img src="img/bt-1.jpg" alt="SSO 연동" /></a></li>
<li class="subtit"><a href="javascript:fnSSO('<%=agtId%>', '<%=ssoUrl%>')"><%=agtNm%> SSO 연동</a></li>
<li class="cont">( <%=agtNm%>으로 SSO 연동 )</li>
</ul>
<%
}
}
}
}
%>
<ul class="icon-bt">
<li><a href="javascript:location.href='api_guide.jsp';"><img src="img/bt-2.jpg" alt="API 가이드" /></a></li>
<li class="subtit"><a href="javascript:location.href='api_guide.jsp';">API 가이드</a></li>
<li class="cont">( SSO Agent API 가이드 )</li>
</ul>
</div>
</body>
</html>