2010-04-12 4 views
2

Swing을 사용하여 풍부한 GUI 클라이언트로 3 티어 응용 프로그램을 프로그래밍하고 일부 인증 및 권한 부여 제어를 추가해야합니다. 저는이 주제에서 완전히 새롭기 때문에 웹에서 약간의 연구를했습니다. 나의 첫 번째 의도는이 기능을 위해 JAAS를 사용하는 것이었지만, JAAS는 권한있는 메소드/액션을 실행하는 기능 만 포함하고 있지만, 일부 "액션"에 대한 액세스가 허용되는지 여부를 결정하는 기능은없는 것처럼 보입니다. GUI를 제어하십시오. 예 : 일부 메뉴 숨기기/사용 중지 등Java GUI 응용 프로그램의 인증 및 권한 부여 프레임 워크

이 점을 잘못 이해하고 있거나 접근 방법이 잘못 되었습니까? JAAS에 대한 대안이 있습니까? GUI 응용 프로그램에 인증 및 권한 부여를 추가하는 "우수 사례"가 있습니까? 도움을

감사합니다, ENY

답변

3

풍부한 GUI 클라이언트는 표준 웹 사이트에서 다르지 않습니다. 둘 다 클라이언트 측이며 잠재적 인 공격자를 통제합니다. 그래서 당신이 생각하는 보안이 무엇이든, 결정된 사람은 그것을 깰 수 있습니다. UI의 버튼 숨기기/비활성화에 대한 전체적인 생각은 보안이 아니라 유용성이라는 것을 기억하십시오.

모든 사용자에게 모든 버튼을 으로 표시하려면을 선택하십시오. 정상적인 경우 관리 버튼을 클릭하면 서버가 허용하지 않습니다. 서버 측 인증 권한을 얻은 후에는 shim을 추가하여 UI의 버튼을 숨기거나 비활성화하십시오. 이를 위해 로그인 한 사용자의 역할/권한을 반환하는 서비스를 작성할 수 있습니다.

JAAS는 서버 측 인증을위한 완벽한 기술입니다. 서버 리소스를 보호하기 위해 많은 문서를 찾을 수 있어야합니다.

사용자는 스윙 GUI에 로그인해야하며 서버에서 인증해야합니다. 이것은 가장 중요한 단계입니다. 서버로 사용자를 인증하지 않으면 보안이 전혀 없습니다.

이후 모든 버튼을 클릭하면 사용자 동작 권한이있는 사용자를 인증하는 서버로 이동합니다. 그가하지 않으면 예외를 클라이언트에 던집니다. 이렇게하면 누군가가 속임수로 버튼을 사용할 수있게되면 서버가이를 잡아낼 것입니다.

+0

서버 측에서 JAAS를 구현하도록 제안 했으므로 올바르게 이해하고 있습니까? 서버는 WebService와 작동합니다.이 경우 WebService 루틴이 호출 될 때마다 인증 정보를 전달해야합니다. 그렇지 않으면 서버에서 오랫동안 LoginContext를 유지해야합니다. – Enyra

+0

요청할 때마다 loginid/password를 전달하지 마십시오. 대신 세션 식별자/토큰을 전달하면 일반 jsessionid도 작동합니다. 일정 시간 동안 사용하지 않으면 세션이 만료되도록 선택할 수 있습니다.이 경우 사용자는 LoginContext를 오랫동안 유지할 필요가 없지만 사용자는 다시 로그인해야합니다. 또는 오래도록 보관할 수 있습니다.이 경우 세션 식별자를 데이터베이스에 유지해야합니다. –

0

@ sri의 대답은 '세션 식별자/토큰 만 전달'에 대한 조언이 너무 쉽게 스푸핑되기 때문에 위험합니다. 신뢰할 수있는 소스에 의해 확인 된 공통 컨텍스트를 설정해야합니다. 자세한 내용은 org.ietf.jgss.GSSContext을 참조하십시오.

GSS 컨텍스트를 작동 시키려면 Key Distribution Center (KDC)이라는 컨셉이 필요합니다. 일반적으로 Kerberos와 보통의 일종의 디렉토리 서버로 연결됩니다. 미묘하지만 조금 모호합니다. 당신이 가지고있는 것만으로는 특정하기가 어렵고 심지어 Active Directory를 통해서만이 작업을 수행했습니다.

인증을 받으면 원래 기능으로 돌아갈 수 있습니다.

인증 프로세스는 javax.security.auth.Subject과 함께 제공되며 여기에는 하나 이상의 java.security.Principal이 포함됩니다. 이러한 주체는 JAAS와 함께 사용하여 설명 된 원칙 (here)을 사용하는 정책 파일을 작성할 수 있습니다. 일반적으로 사용자는 디렉토리 서버에서로드 된 역할을 나타 내기 위해 보안 주체를 사용합니다. 과거에는 더 나은 방법이 있을지 모르지만이를 위해 로그인 모듈을 전문화했습니다.

모든 것이 잠겨 있기 때문에 최종 단계는 사용자가 내게 가장 알맞게 보이게하는 것입니다. 내 지식에 따라 직접 할 수 있습니다. 작업을 수행 할 수 없거나 그룹 구성원을 기반으로보다 정교한 작업을 수행 했으므로 모든 기능을 사용 가능으로 설정하고 사용자에게 경고 할 수 있습니다.

0

사용 JAAS

JAAS는 일반적인 프레임 워크 및 해제로 모든 응용 프로그램을 특정 기능을주지 못할 것이다/당신이 당신의 응용 프로그램에 권한 부여 논리를 포함해야합니다 버튼 등을 활성화 JAAS 당신은 핸들에 제공 그러한 시나리오에 편리한 인증 된 /인가 된 Principal 객체

관련 문제