2011-08-02 3 views
3

나는 모든 DB 상호 작용 요구를 위해 Hibernate를 사용하는 Spring MVC를 기반으로하는 애플리케이션을 가지고있다. LDAP 인프라를 사용하여 이름과 전자 메일 같은 기본 사용자 데이터뿐만 아니라 인증 및 권한 부여 요구 사항을 포함하여 사용자 정보를 사용하도록 응용 프로그램을 업데이트해야합니다.Spring Security, Spring LDAP 및 Hibernate로 사용자 정보를 처리하는 방법은 무엇입니까?

Hibernate는 필요한 쿼리로 시작할 때 필요에 따라 정보 검색을 관리하기 때문에 모든 것이 한 자리 (DB)에 있으므로 지금까지 보고서는 모두 매우 간단합니다. Hibernate가 느리게 데이터를로드하기 때문에 사용자의 이름을 잡는 것은 매우 간단하다.

LDAP를 사용하여 사용자 정보를 구동하고자하므로 Hibernate는 사용자 정보를 관리하지 않으므로 사용자 정보를 즉시 채울 수 없습니다. Name과 같은 사용자 데이터를 가져와야 할 때 LDAP를 사용하여 사용자 데이터를 구동하고 인증/권한 부여를 처리하려면 어떻게해야합니까?

우리는 LDAP가 데이터의 "원본"으로 취급되고 현재 시스템이 그대로있는 하이브리드 방식을 고려했습니다. 따라서 라이브 트랜잭션이 최신 정보를 사용하고 LDAP에 대해 주기적으로 동기화하여보고 목적으로 응용 프로그램 DB를 최신 상태로 유지하도록 LDAP에 대해 업데이트하기 위해 트랜잭션 처리 코드를 변경해야합니다.

이 솔루션은 약간 해킹 된 것 같아서 움직이는 부분이 많은 것처럼 보입니다.하지만이 주제에 대해서는 웹의 다른 곳에서 찾을 수 없었습니다.

사용자 정보는 어떻게 처리해야합니까? 모든 사용자 정보에 쉽게 액세스 할 수 있고보고 목적으로 나머지 시스템에 쉽게 묶일 수 있도록 앱을 구성하는 방법은 무엇입니까? 데이터 레이어 위의 레이어를 알 필요가 없도록 Spring LDAP와 Hibernate를 통합하는 방법이 있습니까? 아니면 LDAP에서 기존 데이터베이스로 정보를 가져 오는 것이 가장 쉬운 방법일까요?

+0

데이터 모델에 사용자에 대한 참조가있어 사용자 데이터베이스 엔터티가 필요합니까? – Ralph

+0

@Ralph - 예, 다른 엔티티가 특정 사용자와 연결되어 있습니다 (예 : 사용자 X가 작업 Y를 수행함). – cdeszaq

답변

1

과의 통합, 다음 내 제안은 비즈니스 물건에서 보안 물건의 separete하는 것입니다 .

이 의미는 사용자 테이블 (로그인, 암호, ...)에서 보안에 필요한 정보 만 제거하여 buiness 사례를 구현하는 데 필요한 항목 만 남도록합니다.

그런 다음 LDAP를 기반으로 보안 내용을 다시 작성하십시오. 주어진 prinipal에 대해 사용자 데이터베이스 객체를 얻는 방법을 찾은 것 같습니다.

새 사용자가 새 로그인을 얻는 경우 새 사용자 데이터베이스 엔터티를 만드는 방법은 하나만 남습니다. 먼저는

  • 데이터베이스 엔티티를 생성해야하는 경우 사용자가 처음
  • 데이터베이스 개체를 만들고 로그인하면

    • 데이터베이스 개체를 만들기 : 당신은 3 개 선택이, 어떤 것은 최고의 하나는 강력하게 귀하의 응용 프로그램에 따라 다릅니다 예를 들어 cron 작업 또는 일부 Spring Scheduling 서비스와 함께 LDAO (또는 나중에 일부 광)에서 생성 될 때.
  • +1

    이것이 제가 함께 간 해결책입니다. 사용자 정보 (시스템의 계정과 계정의 정보)는 chron 작업으로 LDAP에서 가져옵니다. – cdeszaq

    0

    저는 이것을 모든 Spring 개발에 사용합니다. 그것은 LDAP에 섹션을 가지고 있으며, 다른 기관에서 사용되기 때문에 당신은 모든 사용자 테이블을 삭제할 수없는 경우 최대 절전 모드

    http://www.manning.com/walls4/

    관련 문제