2012-06-13 2 views
5

일반 사례 : EJB (3.1)를 통해 서비스를 제공하는 간단한 응용 프로그램 - 대부분 Stateless Sessions Beans (여기서는 재미 없음) 및 SWING 기반 클라이언트 원격 인터페이스를 통해 이러한 서비스를 호출하고해야 할 일을하십시오.스윙 클라이언트의 Apache Shiro - 인증 권한 부여를위한 EJB 3.1 사례

보안 :이 호출주기를 인증/승인하고 물론 내 서비스를 보호하고자합니다 분명한 대답은 서버에서 JAAS를 사용하고 기본 서버에서 모든 사용자 정의 배선 설정을 사용하는 것입니다. - 잠재적 응용 프로그램 서버가 독립적이 될 수 그래서 많은 사람들이 아파치 시로에 대해 이야기하고 실제로는 아주 간단한 API와 메커니즘을 제공합니다 : 그것은 옵션

아파치 시로에게 아직도있다.

기술 질문 :

  1. 세션 : 내 경우에는 내가 HTTP 세션을 해달라고 - 내가 이해 한 내용을 시로에서 적어도 내가 주위를 통과해야 세션 ID의 일종 필요합니다. 내 비즈니스 API를 오염시키지 않으면 서 내 RMI/IIOP 호출에서 사용자 자격 증명을 주입하는 좋은 방법이 있습니까?

  2. 서버 측 구현 : 내가 간 통해 얻은 몇 가지 리소스에 대해 Shiro DefaultSecurityManager를 'Singleton Ejb 3.1 bean'을 '참조'하여 구현할 수 있다고 생각합니다. 다른 아이디어? 그러면 인터셉터를 쉽게 생성하여 원격 호출에 추가 할 수 있습니다. 원격 호출을 통해 Remote Client 메소드를 사용하면 Shiro Intereceptor가 내 사용자의 유효성을 검사하거나 특정 권한을 검사 할 수 있습니다.

모든 의견/팁/예?

많은 감사

답변

0

shiro에서 ServiceLocator 패턴을 사용해보십시오. EJB의 조회는 컨테이너 (JBoss, Netweaver, Weblogig 등)마다 다릅니다.

응용 프로그램 서버에서 컨테이너 기반 보안 제한 조건 (@RolesAllowed, @PermitAll, @Deny ...)을 사용해보십시오. JAAS는 사용자 주체와 함께 주제를 작성하므로 컨테이너 권한 부여 (@RolesAllowed, @PermitAll, @Deny ...) 만 사용하십시오. 한 컨테이너에서 다른 컨테이너로 마이그레이션 할 때 더 좋을 수 있습니다.

+0

안녕하세요 마르셀로, 답변을 주셔서 감사합니다. -하지만 JAAS를 사용하려고하는 경우 - 시로 배선의 큰 이점을 찾지 못했습니다. 제 생각은 100 % JAAS를 통과하고 Shiro를 사용하여 모든 것을 구현하는 것입니다. – javapapo

+0

확인. 응용 프로그램을 shiro에 종속 된 공급 업체로 만들기 위해 문제를 생각하지 않는다면 문제가 없습니다. 제 말은, 당신이 컨테이너를 사용한다면 cotainer는 이미 보안 구현을 가지고 있다는 것입니다. web.xml constrainsts 또는 Annotations constraints security와 같은 일부 기능이 손실 될 수 있습니다. – Marcelo