인간을위한 JAAS


83

JAAS를 이해하는 데 어려움을 겪고 있습니다. 모든 것이 예상보다 복잡해 보입니다 (특히 Sun 자습서). 사용자 정의 사용자 저장소를 사용하여 Struts + Spring + Hibernate를 기반으로하는 Java 애플리케이션에서 보안 (인증 + 권한 부여)을 구현하는 방법에 대한 간단한 자습서 또는 예제가 필요합니다. ACEGI를 사용하여 구현할 수 있습니다.


멋진 질문입니다. 합법적 인 문서화 실패에 대한 훌륭한 제목.
Guido Anselmi 2013

JAAS에 대한 최고의 Q & A. 나는 그것으로 시작하는 데 정말 힘든 시간을 보내고 있습니다.
cristiandley

@mattb, 가능하면 부록을 만들고 싶습니다. 제 답변 이 귀하의 질문을 이해하는 데 도움이 될 것이라고 믿습니다 . 개념적으로 말하고 있습니다.
pss1suporte apr

답변:


23

3
jaasbook의 연결 고리는 죽었습니다. 그것은 지금 이동되었습니다 jaasbook.wordpress.com
에릭 B.를

@Martlark, 가능하면 부록을 만들고 싶습니다. 제 답변 이 귀하의 답변을 이해하는 데 도움이 될 것이라고 믿습니다 . 개념적으로 말하고 있습니다.
pss1suporte apr

51

다른 사용자는 위의 매우 유용한 링크를 제공하므로 링크를 신경 쓰지 않을 것입니다. 저는 웹 애플리케이션 용 JAAS에서 유사한 연구를 수행했으며 마침내 JAAS가 Java World의 웹 애플리케이션과 다른 "계층"에서 보안을 다루는 프레임 워크라는 것을 깨닫기 전까지 "마음의 장애물"에 부딪 혔습니다. Java EE가 아닌 Java SE의 보안 문제를 해결하기 위해 빌드되었습니다.

JAAS는 웹 애플리케이션보다 훨씬 낮은 수준의 보안을 위해 구축 된 보안 프레임 워크입니다. 이러한 것의 몇 가지 예는 JVM 수준에서 사용할 수있는 코드 및 리소스이므로 JVM 수준에서 정책 파일을 설정하는 모든 기능이 있습니다.

그러나 Java EE는 Java SE를 기반으로 구축 되었기 때문에 LoginModules 및 Callbacks와 같은 Java EE 보안에서 JAAS의 몇 가지 모듈이 재사용되었습니다.

Java EE 보안 외에도 기본 Java EE 보안과 유사하게 웹 애플리케이션 보안 문제에서 훨씬 더 높은 "계층"을 다루는 Spring 보안 (이전의 Acegi)도 있습니다. 별도의 보안 구현이며 표준 Java EE 보안을 기반으로 구축되지 않았지만 여러면에서 유사하게 작동합니다.

요약하면 Java SE 수준 (클래스, 시스템 리소스)에서 리소스를 보호하려는 경우가 아니면 공통 클래스 및 인터페이스를 사용하는 것 외에는 JAAS를 실제로 사용하지 않습니다. Spring Security 또는 일반적인 웹 애플리케이션 보안 문제를 해결하는 일반 Java EE 보안을 사용하는 데 집중하십시오.


2
Java EE 6 Tutorial은 기본적인 보안 개념을 이해하고 있다고 가정하므로 JAAS에 대한 간략한 개요는 문제가되지 않습니다.
jacktrades

JAAS에 대한 최고의 설명!
David Hofmann

@isiu, 가능하면 부록을 만들고 싶습니다. 제 답변 이 귀하의 답변을 이해하는 데 도움이 될 것이라고 믿습니다 . 개념적으로 말하고 있습니다.
pss1suporte apr

11

javax.security는 imho 지나치게 복잡한 API입니다. 결과적으로 LoginModules뿐만 아니라 인증 및 권한 부여 관리자와 같이 위에 추상화 계층을 생성하는 전체 인증 및 권한 부여 API의 구현자가 있습니다.

우선, 인쇄하는 것이 좋다 메모리에.

둘째, JAAS를위한 가장 간단한 setup & go 라이브러리 인 imho는 Jboss PicketBox 입니다. JBossAuthenticationManager 및 JBossAuthorizationManager를 통해 인증 및 권한 부여를 수행하는 방법을 설명합니다. XML 또는 주석을 통해 쉽게 구성 할 수 있습니다. 웹앱과 독립형 애플리케이션을 모두 관리하는 데 사용할 수 있습니다.

리소스에 대한 ACL 측면에서 저장소 액세스를 관리하기위한 권한 부여 부분이 필요한 경우 이것이 확실합니다.

보안 문제는 일반적으로 필요에 맞게 사용자 정의해야하기 때문에 결국 다음을 구현할 수 있다는 것입니다.

LoginModule -userName + 비밀번호 확인

CallbackHandler 는 다음과 같이 사용됩니다.new LoginContext("Sample", new MyCallbackHandler());

CallbackHandler는 기본 LoginModules에 전달되어 사용자와 통신하고 상호 작용할 수 있습니다. 예를 들어 그래픽 사용자 인터페이스를 통해 사용자 이름과 암호를 묻는 메시지가 표시됩니다. 따라서 Handler 내부에서 사용자로부터 사용자 이름과 비밀번호를 가져와 LoginModule에 전달합니다.

LoginContext- 그런 다음 lc.login (); 자격 증명을 인증합니다. LoginContext는 인증 된 주제로 채워집니다.

그러나 Jboss picketbox는 특별한 것이 필요하지 않는 한 정말 쉬운 방법을 제공합니다.


8

lsiu의 대답은 여기에서 실제로 "얻을"수있는 몇 안되는 대답입니다.)

그 대답에 덧붙여서,이 주제에 대한 정말 좋은 참조는 JAAS에 무슨 일이 일어 났습니까? .

JASPIC이 어떻게 Servlet과 EJB 보안 모델과 잠재적으로 JAAS 로그인 모듈 사이의 Java EE의 링크이지만, 많은 경우 JAAS의 역할이 Java EE의 비교적 단순한 사용자 이름 및 역할 제공자의 역할로 축소되는 방법을 설명합니다.

같은 저자의 JAAS in the Enterprise 는 이전 기사이지만 Java SE (JAAS) 및 Java EE 모델이 왜 그랬는지에 대한 많은 역사적 배경을 제공합니다.

전반적으로하지만 JAAS에서 몇 종류의 직접 자바 EE에 사용되는, 기본적으로 Principal, Subject하고 CallbackHandler. 후자의 두 가지는 주로 JASPIC에서 사용됩니다. JASPIC을 사용하여 Java EE에서 컨테이너 인증 구현 기사에서 JASPIC에 대해 설명 했습니다 .



1

순전히 JAAS 튜토리얼을 보려면 this를 확인 하십시오 . 오래되었지만 JAAS 기본에 도움이 될 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.