Java EE 5에서는 엔터프라이즈 애플리케이션의 개발 및 구성을 단순화하는 방법인 주석을 소개합니다. 2007년 3월 31일 테크팁 Using Security Annotations in Enterprise Beans에서는 주석을 사용하여 엔터프라이즈 빈을 사용하는 보안 애플리케이션의 개발을 단순화하는 방법을 보여 줍니다. Java EE 5의 일부 주석은 웹 애플리케이션에 해당합니다. 이 유형의 주석 예제는 @Resource, @EJB 및 @WebServiceRef입니다. @RunAs 및 @DeclareRoles와 같은 다른 주석은 보안과 관련됩니다. 보안 관련 주석은 Using Security Annotations in Enterprise Beans 팁에 소개되었습니다.
다양한 웹 애플리케이션 구성요소에서 주석을 지정할 수 있지만 JSP(JavaServer Pages) 기술 페이지에서는 주석을 지정할 수 없습니다. 그러나 주석은 웹 라이브러리에서 지원됩니다. 이것은 태그 라이브러리 및 서블릿 필터에서 다른 위치에 주석을 지정할 수 있음을 의미합니다. 따라서 웹 애플리케이션에 대한 web.xml 파일에서 적절한 보안 정보를 지정해야 하는 추가 조작을 수행할 경우 안전한 JSP 페이지 및 서블릿을 제공합니다.
이 팁은 서블릿과 JSP 페이지를 포함하는 안전한 웹 애플리케이션을 구성하는 방식을 보여 줍니다. 웹 애플리케이션에 대한 web.xml 파일을 구성하여 SSL(Secure Sockets Layer) 연결을 통해 서블릿과 JSP 페이지를 보호할 수 있습니다. 이것은 웹 프로덕션 환경에서 일반적인 보안 접근 방법입니다.
이 팁에는 샘플 웹 애플리케이션 패키지가 제공됩니다. 이 팁의 코드 예제는 해당 패키지에 포함된 샘플의 소스 코드에서 가져온 것입니다.
서블릿
웹 애플리케이션에 대한 서블릿부터 살펴 보겠습니다. 이 예제에서 서블릿은 로컬 인터페이스 SlessLocal로 엔터프라이즈 빈(이 경우 무상태 세션 빈)을 호출합니다. 서블릿은 메시지 개체를 요청 속성으로 전달한 다음, 표시를 위해 JSP 페이지인 display.jsp로 전달합니다. 다음은 서블릿에 대한 주요 코드 부분입니다.
@EJB 주석은 서블릿에서 빈을 사용할 수 있도록 해당 인터페이스로 엔터프라이즈 빈을 찾는 데 사용됩니다. @DeclareRoles 주석은 HttpServletRequest.isUserInRole(문자열 역할)로 사용되는 역할을 정의합니다. isUserInRole 메소드는 인증된 사용자가 지정된 역할에 포함되는지 여부를 결정합니다. 이 경우 "arole" 역할의 사용자만 서블릿이 "message" 문자열을 검색하여 HttpServletRequest 속성으로 설정되도록 합니다.
@RunAs 주석은 "myrole" 역할이 엔터프라이즈 빈 메소드 SlessLocal.hello(문자열 메시지)에 액세스하는 데 사용되도록 지정합니다.
엔터프라이즈 빈
다음은 무상태 세션 빈에 대한 주요 코드 부분입니다.
@Stateless @Local({SlessLocal.class}) public class SlessBean implements SlessLocal { @RolesAllowed(value={"myrole"}) public String hello(String message) { return "Hello, " + message + ", " + new Date(); } }
hello 메소드는 @RolesAllowed 주석의 사용을 통해 보호됩니다. 이 주석은 "myrole" 역할의 인증된 사용자만 hello 메소드에 액세스할 수 있도록 지정합니다.
JSP 및 태그 라이브러리
JSP 페이지인 display.jsp는 JSP 태그 라이브러리에서 조작을 호출하고 EJB_MESSAGE 속성을 HttpServletRequest의 매개변수로 전달합니다. 다음은 JSP 페이지의 코드 단편입니다.
태그의 태그 처리기는 ejbMessage 매개변수의 값을 읽고 HTML로 표시합니다. DataSource에 대한 로그인 제한 시간도 인쇄합니다. 다음은 태그 처리기의 관련 코드입니다.
public class DisplayInfoTagHandler extends SimpleTagSupport { private @Resource(name="jdbc/__default") DataSource ds; ... public void doTag() throws JspException, IOException { try { JspWriter out = getJspContext().getOut(); int timeout = ds.getLoginTimeout(); if (ejbMessage != null && ejbMessage.length() > 0) { out.println( "<li> Ejb Message: " + ejbMessage); } out.println( "<li> DataSource login timeout: " + timeout); ... } public void setEjbMessage(String ejbMessage) { this.ejbMessage = ejbMessage; } }
태그 처리기의 @Resource 주석은 JNDI 이름 "jdbc/__default"로 DataSource를 검색하는 데 사용됩니다. 이 JNDI 이름은 기본 더비 데이터베이스에 해당합니다. 데이터베이스 연결에 액세스하려면 태그 처리기의 코드에 ds.getConnection()을 추가하십시오.
태그 처리기는 ejbMessage 매개변수에 대한 setter 메소드를 정의합니다.
서블릿 및 JSP 페이지 보안
이 예제는 전송 레이어에서 SSL을 사용하고 사용자 이름과 암호를 요청하여 애플리케이션에 대한 war 파일을 보호하는 접근 방법을 사용합니다. 사용자 이름과 암호는 유선을 통해 일반 텍스트로 전송됩니다. 애플리케이션에서는 Java 코드나 JSP 페이지를 수정하지 않아도 됩니다. 애플리케이션에서 서블릿과 JSP 페이지를 안전하게 하려면 web.xml 파일을 다음과 같이 구성하기만 하면 됩니다.
<security-constraint> 요소를 지정하여 보안 제약조건을 정의하십시오. 그러면 지정된 역할이 액세스할 수 있도록 해당 URL을 보호합니다. 보안 제약조건에서 <http-method> 요소를 지정하여 보안 제약조건이 적용되는 HTTP 메소드를 한 개 이상 정의할 수 있습니다. 보안 제약조건 요소를 모든 HTTP 메소드에 적용하려면 간단히 <http-method> 요소를 생략하십시오.
SSL이 통신에 사용된다고 지정하십시오. 이 작업은 <user-data-constraint> 요소 및 이 요소 내의 <transport-guarantee> 요소를 지정하여 보안 제약조건에서 수행합니다. <transport-guarantee> 요소의 값을 CONFIDENTIAL로 설정하십시오.
인증 메소드를 설정하십시오. 이 작업은 <login-config> 요소 및 이 요소 내의 <auth-method> 요소를 지정하여 수행합니다. <auth-method>의 값을 BASIC으로 설정하십시오.
이 예제에서 "ttrole" 역할의 사용자만 서블릿과 JSP 페이지에 액세스할 수 있습니다. 또한 "arole" 역할의 사용자만 SlessLocal 빈을 호출합니다.
Java EE 환경은 권한 부여를 위해 역할을 사용합니다. 하지만 많은 운영 체제 환경에서 사용자들은 그룹과 연관되어 있습니다. 보안-역할 매핑은 사용자 역할 개념과 principal/그룹 사이의 링크를 제공합니다. Java EE 5 SDK의 썬 자바 시스템 애플리케이션 서버와 같은 Java EE 5 애플리케이션 서버 구현에서는 보안-역할 매핑을 sun-application.xml 파일에 정의합니다. 다음은 그 예제입니다.
NetBeans IDE가 없으면 NetBeans IDE를 다운로드하여 설치하십시오. NetBeans IDE 5.5(NetBeans Enterprise Pack 5.5 포함)는 Java EE 5 SDK Update 2에서 사용 가능하며 Java EE Downloads 페이지에서 다운로드할 수 있습니다.
팁에 대한 샘플 패키지를 다운로드하고 해당 컨텐츠의 압축을 푸십시오. 이제 압축이 풀린 디렉토리가 <sample_install_dir>/webann과 같이 나타납니다. 여기서 <sample_install_dir>는 샘플 패키지를 설치한 디렉토리입니다. 예를 들어, Windows 시스템의 C:\ 경로에 해당 컨텐츠의 압축을 풀었다면 새로 생성된 디렉토리는 C:\webann이 되어야 합니다.
NetBeans IDE를 시작하십시오.
webann 프로젝트를 여십시오. "Resolve missing server problem" 메시지가 표시되면 애플리케이션 서버는 NetBeans의 서버 목록에 추가되지 않습니다. Tools > Server Manager를 선택하여 서버 목록에 서버를 추가하십시오.
NetBeans에서 썬 자바 시스템 애플리케이션 서버를 시작하십시오. 명령줄에 다음 명령을 입력하여 애플리케이션 서버를 시작할 수도 있습니다. <appserv_install_dir>/bin/asadmin start-domain domain1
여기서 <appserv_install_dir>는 썬 자바 시스템 애플리케이션 서버를 설치한 디렉토리입니다.
사용자를 생성하십시오. 이 작업은 관리 콘솔(기본값: http://localhost:4848 )에서 다음과 같이 수행할 수 있습니다.
관리 콘솔의 왼쪽 창을 탐색하십시오.
Configuration > Security > Realms > file
"Manage Users"와 "New"를 차례로 클릭하십시오.
다음 명령을 입력하십시오.
User Id: ttuser Group List: ttgroup New Password: ttpassword Confirm New Password: ttpassword
"OK"를 클릭하십시오.
사용자를 생성한 다음 다음을 입력하여 동일한 그룹에 두 번째 사용자를 생성하십시오.
User Id: ttuser2 Group List: ttgroup New Password: ttpassword Confirm New Password: ttpassword
프로젝트를 다음과 같이 빌드하십시오.
Projects 창에서 webann 노드를 마우스 오른쪽 버튼으로 클릭하십시오.
"Clean and Build Project"를 선택하십시오.
그러면 ear 파일인 web.ear이 빌드되고 webann/dist 디렉토리에 배치됩니다.
ear 파일을 다음과 같이 배포하십시오.
Projects 창에서 webann 노드를 마우스 오른쪽 버튼으로 클릭하십시오.
"Deploy Project"를 선택하십시오.
다음과 같이 관리 콘솔을 통해 ear 파일을 배포할 수도 있습니다.
관리 콘솔의 왼쪽 창을 탐색하십시오.
Applications > Enterprise Applications
"Deploy"를 클릭하십시오.
"Browse" 버튼을 클릭하여 ear 파일을 찾으십시오.
OK를 클릭하십시오.
명령줄에 다음 명령을 입력하여 ear 파일을 배포할 수도 있습니다.
asadmin deploy webann.ear
브라우저에 https://<host>:<port>/webann을 지정하여 애플리케이션을 시작하십시오. 여기서 <host>는 애플리케이션 서버의 호스트 이름(예: "localhost")이고, <port>는 HTTPS 포트(예: 8181)입니다.
브라우저에 따라 웹 사이트의 보안 인증서에 문제가 있거나 알 수 없는 인증 기관에서 인증된 웹 사이트라는 메시지가 표시될 수 있습니다. 이것은 이 예제에서 자체 서명된 인증서를 사용하기 때문입니다. 브라우저는 애플리케이션을 시작할 웹 사이트를 계속하는 옵션을 제공해야 합니다.
그러면 애플리케이션은 로그인하라는 메시지를 표시합니다. 위에서 두 사용자 ttuser 및 ttuser2를 생성했습니다. ttuser로 로그인하면 다음과 유사한 애플리케이션 응답이 표시됩니다.
Hello, ttuser Ejb Message: Hello, World, Sat Jun 30 12:04:46 PDT 2007 DataSource login timeout: 0
ttuser2로 로그인하면 다음과 유사한 응답이 표시됩니다.
Hello, ttuser2 DataSource login timeout: 0
두 응답이 다른 것은 각 사용자의 역할 때문입니다. 사용자 ttuser는 "ttrole" 및 "arole" 역할을 가집니다. 사용자 ttuser2는 "ttrole" 역할을 가지지만 "arole" 역할은 가지지 않습니다. 이 애플리케이션에서 "arole" 역할을 가진 사용자만 SlessLocal.hello(문자열 메시지) 메소드를 호출할 권한을 가집니다. 이 메소드는 "Hello, World" 메시지를 생성합니다.
애플리케이션을 완료하면 다음과 같이 작성한 사용자를 배포 해제하고 제거할 수 있습니다.
다음과 같이 관리 콘솔을 통해 ear을 배포 해제하십시오.
관리 콘솔의 왼쪽 창을 탐색하십시오.
Applications > Enterprise Applications
"webann"을 선택한 다음 "Undeploy"를 클릭하십시오.
다음과 같이 관리 콘솔을 통해 사용자를 제거하십시오.
관리 콘솔의 왼쪽 창을 탐색하십시오.
Configuration > Security > Realms > file
"Manage Users"를 클릭하십시오.
"ttuser" 및 "ttuser2"를 선택하십시오.
"Delete"를 클릭하십시오.
저자 정보
Shing Wai Chan은 썬 마이크로시스템즈의 Java EE 개발 팀의 멤버로서, 지난 몇 년 동안 Java EE 보안에 주요 공헌을 했습니다.
웹 애플리케이션에서 주석 사용하기 팁은 NetBeans IDE 및 Java EE 5 SDK를 사용하여 개발되었습니다. NetBeans IDE 5.5(NetBeans Enterprise Pack 5.5 포함)는 Java EE 5 SDK Update 2에서 사용 가능하며 Java EE Downloads 페이지에서 다운로드할 수 있습니다.
Java EE 5에서는 엔터프라이즈 애플리케이션의 개발 및 구성을 단순화하는 방법인 주석을 소개합니다. 2007년 3월 31일 테크팁 Using Security Annotations in Enterprise Beans에서는 주석을 사용하여 엔터프라이즈 빈을 사용하는 보안 애플리케이션의 개발을 단순화하는 방법을 보여 줍니다. Java EE 5의 일부 주석은 웹 애플리케이션에 해당합니다. 이 유형의 주석 예제는 @Resource, @EJB 및 @WebServiceRef입니다. @RunAs 및 @DeclareRoles와 같은 다른 주석은 보안과 관련됩니다. 보안 관련 주석은 Using Security Annotations in Enterprise Beans 팁에 소개되었습니다.
다양한 웹 애플리케이션 구성요소에서 주석을 지정할 수 있지만 JSP(JavaServer Pages) 기술 페이지에서는 주석을 지정할 수 없습니다. 그러나 주석은 웹 라이브러리에서 지원됩니다. 이것은 태그 라이브러리 및 서블릿 필터에서 다른 위치에 주석을 지정할 수 있음을 의미합니다. 따라서 웹 애플리케이션에 대한 web.xml 파일에서 적절한 보안 정보를 지정해야 하는 추가 조작을 수행할 경우 안전한 JSP 페이지 및 서블릿을 제공합니다.
이 팁은 서블릿과 JSP 페이지를 포함하는 안전한 웹 애플리케이션을 구성하는 방식을 보여 줍니다. 웹 애플리케이션에 대한 web.xml 파일을 구성하여 SSL(Secure Sockets Layer) 연결을 통해 서블릿과 JSP 페이지를 보호할 수 있습니다. 이것은 웹 프로덕션 환경에서 일반적인 보안 접근 방법입니다.
이 팁에는 샘플 웹 애플리케이션 패키지가 제공됩니다. 이 팁의 코드 예제는 해당 패키지에 포함된 샘플의 소스 코드에서 가져온 것입니다.
서블릿
웹 애플리케이션에 대한 서블릿부터 살펴 보겠습니다. 이 예제에서 서블릿은 로컬 인터페이스 SlessLocal로 엔터프라이즈 빈(이 경우 무상태 세션 빈)을 호출합니다. 서블릿은 메시지 개체를 요청 속성으로 전달한 다음, 표시를 위해 JSP 페이지인 display.jsp로 전달합니다. 다음은 서블릿에 대한 주요 코드 부분입니다.
@EJB 주석은 서블릿에서 빈을 사용할 수 있도록 해당 인터페이스로 엔터프라이즈 빈을 찾는 데 사용됩니다. @DeclareRoles 주석은 HttpServletRequest.isUserInRole(문자열 역할)로 사용되는 역할을 정의합니다. isUserInRole 메소드는 인증된 사용자가 지정된 역할에 포함되는지 여부를 결정합니다. 이 경우 "arole" 역할의 사용자만 서블릿이 "message" 문자열을 검색하여 HttpServletRequest 속성으로 설정되도록 합니다.
@RunAs 주석은 "myrole" 역할이 엔터프라이즈 빈 메소드 SlessLocal.hello(문자열 메시지)에 액세스하는 데 사용되도록 지정합니다.
엔터프라이즈 빈
다음은 무상태 세션 빈에 대한 주요 코드 부분입니다.
@Stateless @Local({SlessLocal.class}) public class SlessBean implements SlessLocal { @RolesAllowed(value={"myrole"}) public String hello(String message) { return "Hello, " + message + ", " + new Date(); } }
hello 메소드는 @RolesAllowed 주석의 사용을 통해 보호됩니다. 이 주석은 "myrole" 역할의 인증된 사용자만 hello 메소드에 액세스할 수 있도록 지정합니다.
JSP 및 태그 라이브러리
JSP 페이지인 display.jsp는 JSP 태그 라이브러리에서 조작을 호출하고 EJB_MESSAGE 속성을 HttpServletRequest의 매개변수로 전달합니다. 다음은 JSP 페이지의 코드 단편입니다.
태그의 태그 처리기는 ejbMessage 매개변수의 값을 읽고 HTML로 표시합니다. DataSource에 대한 로그인 제한 시간도 인쇄합니다. 다음은 태그 처리기의 관련 코드입니다.
public class DisplayInfoTagHandler extends SimpleTagSupport { private @Resource(name="jdbc/__default") DataSource ds; ... public void doTag() throws JspException, IOException { try { JspWriter out = getJspContext().getOut(); int timeout = ds.getLoginTimeout(); if (ejbMessage != null && ejbMessage.length() > 0) { out.println( "<li> Ejb Message: " + ejbMessage); } out.println( "<li> DataSource login timeout: " + timeout); ... } public void setEjbMessage(String ejbMessage) { this.ejbMessage = ejbMessage; } }
태그 처리기의 @Resource 주석은 JNDI 이름 "jdbc/__default"로 DataSource를 검색하는 데 사용됩니다. 이 JNDI 이름은 기본 더비 데이터베이스에 해당합니다. 데이터베이스 연결에 액세스하려면 태그 처리기의 코드에 ds.getConnection()을 추가하십시오.
태그 처리기는 ejbMessage 매개변수에 대한 setter 메소드를 정의합니다.
서블릿 및 JSP 페이지 보안
이 예제는 전송 레이어에서 SSL을 사용하고 사용자 이름과 암호를 요청하여 애플리케이션에 대한 war 파일을 보호하는 접근 방법을 사용합니다. 사용자 이름과 암호는 유선을 통해 일반 텍스트로 전송됩니다. 애플리케이션에서는 Java 코드나 JSP 페이지를 수정하지 않아도 됩니다. 애플리케이션에서 서블릿과 JSP 페이지를 안전하게 하려면 web.xml 파일을 다음과 같이 구성하기만 하면 됩니다.
<security-constraint> 요소를 지정하여 보안 제약조건을 정의하십시오. 그러면 지정된 역할이 액세스할 수 있도록 해당 URL을 보호합니다. 보안 제약조건에서 <http-method> 요소를 지정하여 보안 제약조건이 적용되는 HTTP 메소드를 한 개 이상 정의할 수 있습니다. 보안 제약조건 요소를 모든 HTTP 메소드에 적용하려면 간단히 <http-method> 요소를 생략하십시오.
SSL이 통신에 사용된다고 지정하십시오. 이 작업은 <user-data-constraint> 요소 및 이 요소 내의 <transport-guarantee> 요소를 지정하여 보안 제약조건에서 수행합니다. <transport-guarantee> 요소의 값을 CONFIDENTIAL로 설정하십시오.
인증 메소드를 설정하십시오. 이 작업은 <login-config> 요소 및 이 요소 내의 <auth-method> 요소를 지정하여 수행합니다. <auth-method>의 값을 BASIC으로 설정하십시오.
이 예제에서 "ttrole" 역할의 사용자만 서블릿과 JSP 페이지에 액세스할 수 있습니다. 또한 "arole" 역할의 사용자만 SlessLocal 빈을 호출합니다.
Java EE 환경은 권한 부여를 위해 역할을 사용합니다. 하지만 많은 운영 체제 환경에서 사용자들은 그룹과 연관되어 있습니다. 보안-역할 매핑은 사용자 역할 개념과 principal/그룹 사이의 링크를 제공합니다. Java EE 5 SDK의 썬 자바 시스템 애플리케이션 서버와 같은 Java EE 5 애플리케이션 서버 구현에서는 보안-역할 매핑을 sun-application.xml 파일에 정의합니다. 다음은 그 예제입니다.
NetBeans IDE가 없으면 NetBeans IDE를 다운로드하여 설치하십시오. NetBeans IDE 5.5(NetBeans Enterprise Pack 5.5 포함)는 Java EE 5 SDK Update 2에서 사용 가능하며 Java EE Downloads 페이지에서 다운로드할 수 있습니다.
팁에 대한 샘플 패키지를 다운로드하고 해당 컨텐츠의 압축을 푸십시오. 이제 압축이 풀린 디렉토리가 <sample_install_dir>/webann과 같이 나타납니다. 여기서 <sample_install_dir>는 샘플 패키지를 설치한 디렉토리입니다. 예를 들어, Windows 시스템의 C:\ 경로에 해당 컨텐츠의 압축을 풀었다면 새로 생성된 디렉토리는 C:\webann이 되어야 합니다.
NetBeans IDE를 시작하십시오.
webann 프로젝트를 여십시오. "Resolve missing server problem" 메시지가 표시되면 애플리케이션 서버는 NetBeans의 서버 목록에 추가되지 않습니다. Tools > Server Manager를 선택하여 서버 목록에 서버를 추가하십시오.
NetBeans에서 썬 자바 시스템 애플리케이션 서버를 시작하십시오. 명령줄에 다음 명령을 입력하여 애플리케이션 서버를 시작할 수도 있습니다. <appserv_install_dir>/bin/asadmin start-domain domain1
여기서 <appserv_install_dir>는 썬 자바 시스템 애플리케이션 서버를 설치한 디렉토리입니다.
사용자를 생성하십시오. 이 작업은 관리 콘솔(기본값: http://localhost:4848 )에서 다음과 같이 수행할 수 있습니다.
관리 콘솔의 왼쪽 창을 탐색하십시오.
Configuration > Security > Realms > file
"Manage Users"와 "New"를 차례로 클릭하십시오.
다음 명령을 입력하십시오.
User Id: ttuser Group List: ttgroup New Password: ttpassword Confirm New Password: ttpassword
"OK"를 클릭하십시오.
사용자를 생성한 다음 다음을 입력하여 동일한 그룹에 두 번째 사용자를 생성하십시오.
User Id: ttuser2 Group List: ttgroup New Password: ttpassword Confirm New Password: ttpassword
프로젝트를 다음과 같이 빌드하십시오.
Projects 창에서 webann 노드를 마우스 오른쪽 버튼으로 클릭하십시오.
"Clean and Build Project"를 선택하십시오.
그러면 ear 파일인 web.ear이 빌드되고 webann/dist 디렉토리에 배치됩니다.
ear 파일을 다음과 같이 배포하십시오.
Projects 창에서 webann 노드를 마우스 오른쪽 버튼으로 클릭하십시오.
"Deploy Project"를 선택하십시오.
다음과 같이 관리 콘솔을 통해 ear 파일을 배포할 수도 있습니다.
관리 콘솔의 왼쪽 창을 탐색하십시오.
Applications > Enterprise Applications
"Deploy"를 클릭하십시오.
"Browse" 버튼을 클릭하여 ear 파일을 찾으십시오.
OK를 클릭하십시오.
명령줄에 다음 명령을 입력하여 ear 파일을 배포할 수도 있습니다.
asadmin deploy webann.ear
브라우저에 https://<host>:<port>/webann을 지정하여 애플리케이션을 시작하십시오. 여기서 <host>는 애플리케이션 서버의 호스트 이름(예: "localhost")이고, <port>는 HTTPS 포트(예: 8181)입니다.
브라우저에 따라 웹 사이트의 보안 인증서에 문제가 있거나 알 수 없는 인증 기관에서 인증된 웹 사이트라는 메시지가 표시될 수 있습니다. 이것은 이 예제에서 자체 서명된 인증서를 사용하기 때문입니다. 브라우저는 애플리케이션을 시작할 웹 사이트를 계속하는 옵션을 제공해야 합니다.
그러면 애플리케이션은 로그인하라는 메시지를 표시합니다. 위에서 두 사용자 ttuser 및 ttuser2를 생성했습니다. ttuser로 로그인하면 다음과 유사한 애플리케이션 응답이 표시됩니다.
Hello, ttuser Ejb Message: Hello, World, Sat Jun 30 12:04:46 PDT 2007 DataSource login timeout: 0
ttuser2로 로그인하면 다음과 유사한 응답이 표시됩니다.
Hello, ttuser2 DataSource login timeout: 0
두 응답이 다른 것은 각 사용자의 역할 때문입니다. 사용자 ttuser는 "ttrole" 및 "arole" 역할을 가집니다. 사용자 ttuser2는 "ttrole" 역할을 가지지만 "arole" 역할은 가지지 않습니다. 이 애플리케이션에서 "arole" 역할을 가진 사용자만 SlessLocal.hello(문자열 메시지) 메소드를 호출할 권한을 가집니다. 이 메소드는 "Hello, World" 메시지를 생성합니다.
애플리케이션을 완료하면 다음과 같이 작성한 사용자를 배포 해제하고 제거할 수 있습니다.
다음과 같이 관리 콘솔을 통해 ear을 배포 해제하십시오.
관리 콘솔의 왼쪽 창을 탐색하십시오.
Applications > Enterprise Applications
"webann"을 선택한 다음 "Undeploy"를 클릭하십시오.
다음과 같이 관리 콘솔을 통해 사용자를 제거하십시오.
관리 콘솔의 왼쪽 창을 탐색하십시오.
Configuration > Security > Realms > file
"Manage Users"를 클릭하십시오.
"ttuser" 및 "ttuser2"를 선택하십시오.
"Delete"를 클릭하십시오.
저자 정보
Shing Wai Chan은 썬 마이크로시스템즈의 Java EE 개발 팀의 멤버로서, 지난 몇 년 동안 Java EE 보안에 주요 공헌을 했습니다.
웹 애플리케이션에서 주석 사용하기 팁은 NetBeans IDE 및 Java EE 5 SDK를 사용하여 개발되었습니다. NetBeans IDE 5.5(NetBeans Enterprise Pack 5.5 포함)는 Java EE 5 SDK Update 2에서 사용 가능하며 Java EE Downloads 페이지에서 다운로드할 수 있습니다.