2010-07-05 2 views
1

내 응용 프로그램을 서비스하는 데 사용되는 세 개의 웹 응용 프로그램 시스템 A, B & C가 있습니다. A 시스템은 핵심 비즈니스 로직을 가지며 전체 애플리케이션에 대한 사용자/계정 데이터를 저장합니다. 시스템 B & C는 응용 프로그램에 추가 기능을 제공해야합니다.분산 웹 응용 프로그램 시스템의 보안

사용자 U가 메인 시스템 A에 로그인하고 시스템이 사용자 U의 요청을 다른 시스템 B에 인증하는 데 필요한 현재 세션의 보안 토큰을 생성하는 보안 메커니즘이 생각났습니다. & C. 사용자가 시스템 A에 로그인하는 순간 내부적으로 토큰을 생성하고 서브 시스템 B & C.에 토큰 xyz를 보냅니다. 이제 사용자 U는 서브 시스템 B & C에 유효한 토큰을 사용하면 사용자는 리소스에 액세스 할 수 있습니다. 그러나 이것이 최선의 접근법인지 정확한지는 확실하지 않습니다.

그래서 전체 워크 플로에 대해 다소 혼란 스럽습니다. 이와 관련하여 도움이 될 것입니다.

Java로 개발하므로 이미 관리하는 모듈로 인해 개발 시간이 많이 절약됩니다. 나를 안내 해줘.

답변

2

설명하는이 모델은 여러 클라이언트가 제 3자가 사용자 인증을 처리 할 수 ​​있도록 신뢰하는 형태의 신뢰 에스크로입니다.

Kerberos 분산 보안 시스템을 참조하십시오.

  • B + C 사용자가 로그인 A에서 토큰을 보낼 필요가 없습니다 :

    Kerberos 프로토콜과 웹 응용 프로그램 구현, 스탠포드 WebAuth,

    당신이 무엇을 설명을 통해 몇 가지 장점을 가지고 대신에 A (Kerberos 용어의 "KDC")는 B (Kerberos 암호화 된 서버)와 비밀 관계를 공유하고 신뢰 관계의 초기 설정시에만 C를 사용합니다.
  • 토큰은 A에서 사용자에게 명확하게 보내지지 않으므로 가로 챌 수 없습니다.

당신은 구현하기가 복잡 할 수 있습니다 본격적인 Kerberos 인증을 필요로하지 않는 경우, 나는이 같은 모델 보시기 바랍니다 :

  • 사용자 조 바람직 챌린지를 사용하여에 인증을 조의 암호를 A로 보내는 것을 포함하지 않는 응답 프로토콜
  • Joe의 사용자 이름, 현재 시간 및 임의로 생성 된 일부 쓰레기를 암호로 표시합니다.
  • B 및 C는 서명 한 패키지를 제시 할 수있는 지정된 시간 내에 사용자를 허용합니다. A는 사용자 이름과 적절한 시간

이것은 기본 인증 토큰 프로토콜입니다. 여러 가지 방법으로 결함이 있지만 사용자 비밀번호를 보내는 것보다 여전히 좋습니다.

+0

OpenId를 사용하여 GUI에서 사용자를 인증 할 계획입니다. 사용자가 인증되면 다른 두 시스템에 B & C에게 사용자에게 시스템 호출을 허용해야한다는 것을 알릴 수있는 메커니즘이 필요합니다. Stanford WebAuth가 나를 도울 수 있는지 확실하지 않습니다. 세 시스템 A, B 및 C는 모두 HTTP/HTTPS를 통해 실행되는 웹 응용 프로그램입니다. – Qedrix

+0

설명했듯이 A는 OpenID 인증이 성공한 후에 만 ​​토큰을 발급하는 토큰 기반 프로토콜을 사용할 수 있습니다. 또한 B + C가 OpenID 인증을 독립적으로 확인하도록 설정할 수도 있습니다. 또는 HTTPS 보안 및 세션 id 고유성에 의존하고 A-B-C (예 : memcached) 사이의 공유 메모리에서 세션 변수를 사용할 수 있습니다. 덜 안전하지만 아마 충분히 좋습니다. WebAuth는 백엔드에서 Kerberos를 사용하는 경우에만 도움이됩니다. – Borealid

0

이 배열도 가능합니다. 서버 A, B 및 C에 대한 모든 요청을 먼저 모든 사용자 관련 데이터가있는 인증 용 서버 A로 리디렉션 할 수 있습니다. 이제 일단 요청이 인증되면 (어느 방법을 선호하든) 비즈니스 논리에서 서버간에 내부 호출을해야합니다. 이를 위해 배포 할 때 각 서버에서 생성되고 권한 토큰이 지갑에 저장되는 내부 사용자를 사용할 수 있습니다. 지갑에서이 내부 사용자의 인증 토큰을 가져오고 호출을 시작하면 다른 서버가 사용자를 인증합니다. 참고 :이 작업을 수행하는 실제 사용자는 누가 필요합니까? 토큰이 내부 사용자 인 경우 해당 정보를 인증 토큰에서 파생시킬 수 없습니다. 이 경우 http 권한 부여 헤더에 현재 로그인 한 사용자 이름을 전달할 수 있습니다.

관련 문제