2015-01-28 9 views
1

다른 권한이 필요한 여러 사용자가 참여하는 Java 프로그램이 있습니다. 현재 기본 CRUD 메서드가있는 클래스가 있습니다. 각 메소드는 현재 사용자가 해당 메소드를 호출 할 수있는 권한이 필요합니다. 예를 들어, 사용자는 "update"및 "create"메소드를 호출 할 수 있지만 "delete"는 호출 할 권한이 없을 수 있습니다. 모든 사용자는 "읽기"메소드를 호출 할 수 있습니다.Java에서 사용자 권한을 처리하는 표준 방법이 있습니까?

각 사용자에게 메서드를 사용하는 임의의 사용 권한 조합을 제공하고 싶습니다. 그래서 각 메서드가 사용자 권한을 확인해야한다고 생각합니다. 그러나 이것을 수행하는 가장 좋은 방법은 무엇입니까? 사용자 객체가 호출 될 때마다 메소드에 매개 변수로 전달되어야하는지, 아니면 더 좋은 방법이 있습니까? Java에서 SecurityManager 클래스를 살펴 봤지만 애플릿 및 파일 시스템 권한 (어느 경우에도 적용 할 수 없음)을 대상으로하는 것으로 보입니다. 맞습니까? 아니면 여기에 뭔가 빠졌습니까?

+2

['Acl'] (http://docs.oracle.com/javase/7/docs/api/java/security/acl/Acl.html)과 [JAAS] (http : //stackoverflow.com/questions/628416/jaas-for-human-beings). [LDAP] (http://docs.oracle.com/javase/jndi/tutorial/ldap/security/ldap.html) 또는 [Kerberos] (http://docs.oracle.com/javase/jndi)와 통합 될 수 있습니다. /tutorial/ldap/security/gssapi.html). 간단히 말해서, 자바에는 원하는 것을 지원하는 메커니즘이 있습니다. 아니요. 'SecurityManager'는 그 중 하나가 아닙니다. –

+0

ACL 및 JAAS를 사용하십시오. – Namphibian

+0

체크 아웃 http://www.jaasbook.com/ 그 책은 내가 잠시 후에 읽었습니다. 구식인지 확실치 않습니다. –

답변

2

예, java.securityjavax.security.auth 패키지를 찾고 있습니다.

기본적으로 무엇을이 프레임 워크는 당신을 제공하는 것은 교장 (인증 할 수 실체 사용자 또는 그룹)의 일반적인 표현, 자격 증명 (암호, 액세스 키, 인증서) 및 권한 (일명 권한 세트 또는 액세스 제어 목록).

솔직히이 프레임 워크는 문제를 복잡하게 만듭니다. IMO는 Subject.doAs()을 사용하여 스레드에 보안 컨텍스트를 첨부하는 것만으로도 유용합니다.

인증의 기본 요지는 누군가가 자신이 주장하는 사람인지 확인하는 것입니다. 인증의 기본 요지는 허용 된 것만 할 수있게하는 것입니다.

이미 사용자, 암호 및 사용 권한에 대한 고유 한 표현이있는 경우 간단하게 유지하는 것이 좋습니다. 사용자의 ID와 권한을 세션 속성에 단일 객체로 숨기고 권한을 확인하기 위해 응용 프로그램의 비즈니스 로직에서이 정보를 사용할 수 있도록 매개 변수로 전달해야합니다. 그것은 간단하고 명시 적이며 매우 테스트 가능합니다.