어노테이션 또는 배치 디스크립터를
사용하여 EJB 애플리케이션에 대한 보안을 제공할 수 있습니다.
Java™ EE 5 이전에는
지정된 애플리케이션에 대해 권한 부여를 사용하려는 경우
애플리케이션 배치 디스크립터 ejb-jar.xml 또는 web.xml에서 권한 부여 정보를 지정해야 했습니다. 어노테이션을 사용하면 직접 애플리케이션에서 보안을
설정할 수 있습니다.
공통 보안 어노테이션
JSR
250에서는 다수의 공통 보안 어노테이션을 정의합니다. 다섯 개의 보안 어노테이션이
정의됩니다.
- javax.annotation.security.PermitAll:
- 유형 또는 메소드 레벨에서 사용할 수 있습니다.
- 지정된 메소드 또는 지정된 EJB의 모든 비즈니스 메소드에 모든 사용자가
액세스할 수 있음을 표시합니다.
- javax.annotation.security.DenyAll:
- 메소드 레벨에서 사용할 수 있습니다.
- EJB의 지정된 메소드에 아무도 액세스할 수 없음을 표시합니다.
- javax.annotation.security.RolesAllowed:
- 유형 또는 메소드 레벨에서 사용할 수 있습니다.
- 지정된 메소드 또는 EJB의 모든 비즈니스 메소드에 역할 목록과 연관된
사용자가 액세스할 수 있음을 표시합니다.
- javax.annotation.security.DeclareRoles:
- 유형 레벨에서 사용할 수 있습니다.
- 보안 검사를 위한 역할을 정의합니다. EJBContext.isCallerInRole,
HttpServletRequest.isUserInRole 및 WebServiceContext.isUserInRole에 의해 사용됩니다.
- javax.annotation.security.RunAs:
- 유형 레벨에서 사용할 수 있습니다.
- 지정된 컴포넌트에 대한 실행 도구 역할을 지정합니다.
예제:
@Stateless
@RolesAllowed("team")
public class TestEJB implements Test {
@PermitAll
public String hello(String msg) {
return "Hello, " + msg;
}
public String goodbye(String msg) {
return "Goodbye, " + msg;
}
}
이 예제에서 hello() 메소드에는 모든 사용자가 액세스할 수
있으며 goodbye() 메소드에는 역할 팀의 사용자가 액세스할 수 있습니다.