보안 설정하기 위한 자원

보안 설정할 자원을 판별하는 경우 URL 맵핑이 있고 Rich UI 애플리케이션이 액세스하는 모든 컴포넌트를 검토하십시오.

생성된 HTML 파일

EGL이 HTML 파일로 Rich UI 애플리케이션을 생성합니다. HTML 파일이 배치된 프로젝트의 WebContent 폴더(또는 WebContent 폴더의 서브폴더)로 생성됩니다. HTML 파일이 보안 설정되면 HTML 파일에서 정의된 Rich UI 애플리케이션에 액세스하기 전에 인증해야 합니다. 전체 HTML 파일을 보안 설정하려면 JEE 인증을 사용할 수 있습니다. Rich UI 애플리케이션의 민감한 영역을 제한하려면 사용자 정의 보안을 사용할 수 있습니다.

EGL Rich UI 프록시

EGL Rich UI 프록시는 EGL이 Rich UI 애플리케이션 및 웹 서비스에 대해 생성하는 HTML 파일 간의 통신을 처리합니다. JavaScript™에 대한 동일한 오리진 정책으로 인해 HTML 파일은 HTML 파일에서와 다른 오리진(프로토콜, 도메인, 포트로 정의됨)이 있는 웹 서비스를 호출할 수 없습니다. 다른 오리진의 웹 서비스로 가져오기 위해 HTML 파일이 EGL Rich UI 프록시로 알려진 Java™ 서블릿을 사용합니다. Rich UI 애플리케이션에서 호출되는 모든 웹 서비스는 프록시를 통해 액세스됩니다.

EGL Rich UI 프록시 서블릿은 com.ibm.javart.services.RestServiceServlet 유형이며 fda7.jar의 EGL 런타임과 함께 제공됩니다. 서블릿은 생성된 HTML 파일과 동일한 프로젝트로 배치됩니다. HTML 파일이 브라우저에서 실행되는 동안 EGL Rich UI 프록시가 애플리케이션 서버에서 실행됩니다.

EGL Rich UI 프록시의 URL이 사용자의 Rich UI 애플리케이션에 대해 EGL이 생성하는 JavaScript에 표시되므로 웹 서비스를 호출하기 위해 Rich UI 클라이언트가 아닌 다른 사용자가 프록시를 사용하는 것을 방지해야 합니다. 프록시가 보안 설정되지 않은 경우 Javascript 가로채기 공격이 발생할 수 있습니다. Rich UI 애플리케이션이 EGL Rich UI 프록시를 사용하지 않는 경우(즉, 애플리케이션이 웹 서비스를 호출하지 않는 경우) 배치된 프로젝트에서 프록시에 대한 액세스를 제거하십시오. 자세한 정보는 EGL Rich UI 프록시 서블릿에 대한 액세스 제거를 참조하십시오. 그렇지 않으면 JEE 기본 인증을 사용하여 인증되지 않은 클라이언트에 의한 프록시 호출을 방지할 수 있습니다. 이 조치는 웹 상의 위협으로부터 보호를 보장할 수 없지만 위협 발생 가능성을 줄일 수 있습니다.

HTML 파일 및 EGL Rich UI 프록시 모두가 보안 설정되면 HTML 파일에 액세스하기 전에만 인증이 필요합니다. EGL Rich UI 프록시가 보안 설정되고 HTML 파일이 아닌 경우 프록시에 액세스하기 전에(즉, 애플리케이션이 프록시를 통해 호출된 웹 서비스를 호출하기 전에) 인증이 필요합니다.

EGL 웹 서비스

웹 프로젝트에 생성된 EGL 웹 서비스를 보안 설정하려면 HTTP 기본 인증을 통해 JEE 보안을 사용할 수 있습니다. HTTP 기본 인증에서 HTTP 헤더의 올바른 사용자 ID 및 비밀번호를 전달하여 보안 웹 서비스에 액세스합니다. EGL은 ServiceLib, setHTTPBasicAuthentication의 시스템 함수를 제공하며 헤더에서 이러한 값을 설정합니다. setHTTPBasicAuthentication에 대한 호출이 보안 웹 서비스에 대한 각 호출을 선행합니다.

보안 노출을 피하려면 사용자 ID 및 비밀번호를 Rich UI 애플리케이션으로 하드 코딩하지 마십시오. 대신 Rich UI 애플리케이션이 사용자 정의 로그인 화면을 표시하여 setHTTPBasicAuthentication으로 전달할 값에 대해 사용자에게 프롬프트를 표시해야 합니다. 비밀번호를 얻으면 이후의 웹 서비스 호출을 위해 라이브러리에 또는 Rich UI 핸들러에 저장할 수 있습니다. 웹 서비스에 전달하기 위해 다른 신임 정보 세트가 필요할 때마다 사용자에게 다시 프롬프트를 표시해야 합니다.