Contents

넷퍼넬 키 유효성 체크

넷퍼넬 대기를 통해 서비스 페이지에 정상적으로 접근하지 않고 비정상적으로 우회해서 직접 서비스 페이지에 접근하려는 경우, 넷퍼넬 키 유효성을 체크하여 넷퍼넬을 통한 요청만 서비스 페이지에 접근시키도록 하는 라이브러리입니다.

NOTE

해당 라이브러리 적용시 넷퍼넬 TS 서버 시간과 서비스 서버(WAS) 시간은 동기화되어야 합니다. 서버 시간이 맞지 않을 경우 키 유효성 체크시 유효하지 않을 수 있습니다.

서비스 서버(WAS)로 넷퍼넬 키 전달

  • 넷퍼넬 키 유효성 체크를 사용할 경우, 서비스 서버(WAS)로 넷퍼넬 키를 전달하세요.
  • 아래 예제는 ‘netfunnel_key’라는 Parameter에 암호화된 넷퍼넬 키 정보를 담아서 서버로 전달하는 소스이고, 서비스 서버에서 ‘netfunnel_key’라는 Parameter를 읽어들여 유효성을 체크합니다.

User ID :
Password :

서비스 서버(WAS)에서 유효성 체크

Java 적용

  1. 1.“KeyCheck.jar” 라이브러리를 Import 하세요.
  2. 2.서비스 서버에 넷퍼넬 키 유효성 체크 API를 적용하세요.
    • ‘netfunnel-------‘ 이라는 암호화 해독키는 넷퍼넬 TS 서버의 conf/netfunnel.ts.properties 파일에서 확인 및 변경할 수 있습니다.
      // Import
      import kr.co.netfunnel.Key2;
      
      // Instance
      Key2 key = new Key2();
      
      // getParameter
      String netfunnel_key_string = request.getParameter("netfunnel_key");
      
      // Key Valid Check
      // Valid("넷퍼넬 키", "암호화 해독키", "서버 확인 시간(초)")
      if (key.Valid(netfunnel_key_string, "netfunnel-------", 50)){
      	// ---------------------------------
      	// TODO: 정상로직 처리
      	// ---------------------------------
      	String serviceId = key.getServiceId() // 키값이 유효한 경우 서비스 아이디 값 or null
      	String actionId = key.getActionId() // 키값이 유효한 경우 액션 아이디 값 or null
      	System.out.println("서비스 아이디 = "+serviceId);
      	System.out.println("액션 아이디 = "+actionId);
      } else {
      	// ---------------------------------
      	// TODO: 에러 처리가 필요함
      	// ---------------------------------
      }			
      

C# 적용

  1. 1.“NetFunnel.dll” 파일을 서버에 Import 하세요.
  2. 2.서비스 서버에 넷퍼넬 키 유효성 체크 API를 적용하세요.

    클래스 선언

    • ‘netfunnel’ 이라는 암호화 해독키는 넷퍼넬 TS 서버의 conf/netfunnel.ts.properties 파일에서 확인 및 변경할 수 있습니다.
      public class NetfunnelAPI
      {
      	/// 
      	/// 사용자가 요청한(HttpRequest) Authority정보에 대한 NetFUNNEL 진입허용여부 확인
      	/// 
      	/// 사용자 요청한 System.Web.HttpRequest
      	/// true:진입허용 false:인증에러
      	public static bool isAlloewd(System.Web.HttpRequest inHttpRequest)
      	{
      		// TODO: NetFUNNEL 사용여부 확인처리
      		if (false)
      		{
      			return (true);
      		}	
      		
      		/// Authority 정보의 확인 설정
      		NetFunnel.Web.Authority.Check auth_checked = new NetFunnel.Web.Authority.Check();
      		auth_checked.id = "netfunnel_key"; // HttpRequest에서 Authority정보가 설정된 ID
      											//(읽기우선순위: GET > POST > COOKIE)
      		auth_checked.passwordKey = "netfunnel"; // 암호화 해독키
      		auth_checked.expireTime = 30;			// 키에 포함된 갱신시간의 유효 최대경과시간(초)
      		auth_checked.isPeerIP = false;			// 키에 포한된 Peer IP 확인여부
      		
      		/// <summary>
      		/// 사용자가 요청한(HttpRequest) Authority정보에 대한 NetFUNNEL 진입허용여부 확인.
      		/// <summary>
      		/// 사용자 요청한 System.Web.HttpRequest
      		/// 키에 인증 확인 설정
      		/// 진입허용:0이상 인증에러:-1이하
      		if (NetFunnel.Web.Authority.isAlloewd(inHttpRequest, auth_checked) < 0)
      			return (false);
      		return (true);		
      	}
      }									
      

      체크 확인 처리

      // 넷퍼넬 진입허용여무 확인	
      if (!NetfunnelAPI.isAlloewd(Page.Request))
      {
      	// ---------------------------------
      	// TODO: 에러 처리가 필요함
      	// TODO: 에러 처리가 필요함
      	// Response.Redirect("경로")
      	TextBox1.Text += "\nButton1_Click() " + DateTime.Now.ToString() + "\n인증(에러)";
      	return;
      }
      	// ---------------------------------
      	// TODO: 정상로직 처리
      	// ---------------------------------
      TextBox1.Text += "\nButton1_Click() " + DateTime.Now.ToString() + "\n인증(정상)";
      return;