EGL 싱글 사인온
애플리케이션 및 프록시 인증 결합
EGL 싱글 사인온을 사용하여 다음 보안 측면을 하나의 단계로 결합할 수 있습니다: 애플리케이션에 대한 인증(사용자 정의 보안으로 보호됨) 및 EGL Rich UI 프록시에 대한 인증(JEE 보안으로 보호됨). 웹 서비스에 대한 인증을 포함시킬 수도 있습니다.
애플리케이션, EGL Rich UI 프록시, 웹 서비스에 대한 인증에 사용하는 사용자 레지스트리가 동일할 필요가 없어도 EGL 싱글 사인온 중에 사용되는 사용자 ID 및 비밀번호는 인증 오류 방지를 위해 모든 관련 사용자 레지스트리에 있어야 합니다.
useridLabel TextLabel { text = "User ID:", width = 80 };
useridField TextField { width = 100 };
useridBox Box { children = [ useridLabel,
useridField ], margin = 3 };
passwordLabel TextLabel { text = "Password:", width = 80 };
passwordField PasswordTextField { width = 100 };
passwordBox Box { children = [ passwordLabel,
passwordField ], margin = 3};
button Button { text = "Log in", onClick ::= authenticate };
ui Box { background = "blue",
children = [ useridBox, passwordBox, button ],
columns = 1, width = 200 };
웹 서비스를 호출할 때마다 요청이 EGL Rich UI 프록시로 전송됩니다. 프록시가 JEE 기본 인증으로 보안 설정되므로 사용자는 여기에 액세스하기 전에 로그인해야 합니다. 사용자가 로그인하지 않은 경우 "기본 인증을 사용하여 EGL Rich UI 프록시 보안 설정"의 예제와 유사한 브라우저 제공 로그인 화면이 웹 서비스를 처음으로 호출할 때 표시됩니다.
EGL 싱글 사인온으로 사용자가 위의 사용자 정의 로그인 화면을 사용하여 Rich UI 애플리케이션에 대해 인증할 때 EGL이 프록시에 대해 인증할 때에도 사용하도록 해당 신임 정보(사용자 ID 및 비밀번호)를 JEE 보안으로 전달합니다. 그러므로 애플리케이션에 대한 인증은 한 단계의 프록시에 대한 인증과 결합됩니다. EGL 싱글 사인온이 작동하도록 하려면 다른 웹 서비스 전에 애플리케이션에 대한 인증을 위해 웹 서비스가 호출되도록 Rich UI 애플리케이션을 디자인하십시오. 그렇게 하면 브라우저 제공 로그인 대화 상자를 우회합니다.
function authenticate( e Event in )
ServiceLib.setProxyBasicAuthentication(useridField.text,passwordField.text );
srvc LDAPLoginService{ @bindService };
call srvc.login( useridField.text, passwordField.text )
returning to loginCallback onException loginException;
end
웹 서비스 인증 추가
function withdraw( e Event in )
ServiceLib.setHTTPBasicAuthentication(srvc, useridField.text,
passwordField.text );
srvc BankingService{ @bindService };
call srvc.withdraw( useridField.text, passwordField.text )
returning to withdrawCallback onException withdrawException;
end
인증 오류 처리
애플리케이션 및 EGL Rich UI 프록시에 인증하기 위해 EGL 싱글 사인온을 사용하는 경우 애플리케이션에 대한 인증 전에 프록시에 대한 인증이 발생합니다. EGL Rich UI 프록시는 JEE 기본 인증을 사용하여 보안 설정되므로 애플리케이션이 아닌 웹 컨테이너가 로그인 실패를 처리합니다. 웹 컨테이너가 개입하므로 더 이상 단일 단계에서 인증할 수 없습니다. 이 시점에서 사용자가 EGL Rich UI 프록시에 대해 먼저 인증해야 하며 애플리케이션, 웹 서비스 또는 이후에 둘 모두에 로그인해야 합니다.
사용자가 로그인 화면에서 EGL Rich UI 프록시 인증에 대해 올바르지 않은 비밀번호를 입력하는 경우 인증을 다시 시도할 수 있도록 브라우저 제공 로그인 대화 상자가 표시됩니다. JEE 기본 인증에서 웹 컨테이너가 사용자가 성공적으로 로그인할 때까지 이 대화 상자를 표시하도록 브라우저에 프롬프트를 표시합니다. 애플리케이션이 사용자가 이 대화 상자에 입력하는 비밀번호에 액세스할 수 없습니다.
사용자가 EGL Rich UI 프록시에 대해 올바른 신임 정보를 입력한 후에 애플리케이션이나 웹 서비스 또는 둘 모두에 대해 인증해야 합니다. 애플리케이션은 사용자가 사용자 정의 로그인 화면에 올바른 사용자 ID 및 비밀번호를 직접 재입력하고 "로그인" 단추를 다시 클릭하도록 해야 합니다.
사용자가 HTTP 기본 인증으로 보안 설정되는 웹 서비스에 인증할 때 오류가 발생하는 경우 제어는 call 문에 지정된 예외 핸들러 상태가 됩니다. Rich UI 애플리케이션이 이 오류를 발견하고 재인증을 위해 사용자에게 적절한 지시사항을 표시해야 합니다. 다음 예제가 이 오류 유형의 특징을 표시합니다.
웹 서비스 인증 오류
- 구성
- 웹 서비스는 JEE 기본 인증을 사용하여 보안 설정됩니다.
- 문제점
- HTTP 헤더에서 웹 서비스에 대한 올바른 사용자 ID 및 비밀번호를 찾을 수 없습니다.
- 오류
- ServiceInvocationException가 다음과 함께 처리되었습니다. 메시지 ID "EGL1539E", 메시지 "서비스와 통신하는 중에 예외가 발생했습니다. URL: {0}"이(가) 발행됩니다. 여기서 {0}은(는) 웹 서비스의 URL입니다. ServiceInvocationException의 detail1이 "401"로 설정되며 detail2는 "권한 없음"으로 설정되고 detail3은 "서버가 HTTP 응답 코드 401을 리턴함. URL: {0}", "이름": "egl.core.ServiceInvocationException"으로 설정됩니다.
- 솔루션
- ServiceLib.setHTTPBasicAuthentication()을 호출하여 웹 서비스를 이용하기 전에 HTTP 헤더에서 올바른 사용자 ID 및 비밀번호를 설정하십시오.
EGL Rich UI 프록시 및 웹 서비스 인증 모두에 성공하지만 애플리케이션에 대해 인증하려고 시도할 때 오류가 발생하는 경우 Rich UI 애플리케이션이 오류를 처리해야 합니다. 웹 서비스가 리턴될 때 제어가 call 문에 지정된 "returning to" 함수 또는 콜백으로 전달됩니다.