2010-07-12 4 views
0

인트라넷 용 SSO를 설정하기 위해 노력하고 있습니다. 사용자가 활성 디렉토리 사용자 이름과 암호를 사용하여 워크 스테이션에 로그인한다는 생각입니다. 그런 다음 작은 응용 프로그램은 로그인시 고유하게 식별 가능한 정보, 사용자 이름 및 컴퓨터 MAC 주소를 서버에 보내고 타임 스탬프가있는 데이터베이스에 입력되면 실행됩니다. 그런 다음 사용자가 인트라넷에 액세스하면 Java 애플릿이 사용자 mac 주소를 서버로 보내서 데이터베이스 항목과 비교하여 지정된 시간 프레임 내에 일치하는 항목이 있는지 확인한 후 사용자에게 서명하고 제거합니다 데이타베이스로부터의 엔트리.현재 로그인 한 AD 사용자의 고유 식별자 토큰을 가져옵니다.

불행히도 우리의 인트라넷은 IIS에서 실행되지 않으므로 NTLM을 사용하여 인증을 수행하는 것이 쉽지 않습니다. NTLM은 인트라넷이 intranet.company.com 형식으로 만 액세스 할 수 있으며 NTLM이 해당 형식의 주소와 작동하지 않는다는 것을 알고 있기 때문에 옵션이 아닙니다.

이제 질문에 답변 해주세요. 현재 C++에서 클라이언트 인증 응용 프로그램을 만드는 중이며 합법적으로 기록 된 Active Directory 사용자와 응용 프로그램을 보유하고 로컬 사용자 이름을 변경 한 고유 식별자 또는 토큰을 구별 할 수있는 방법이 필요합니다. 광고 사용자에게.

예 아마도 이것이 잘못된 방법 일 수 있지만 지금은 유일한 옵션 인 것 같습니다. 하지 않는 것 이상의 제안이 있으면 알려주십시오. 또한 NTLM을 사용하여 그 구멍을 패치하는 방법을 생각하면 커다란 갈라지는 보안 구멍이 있음을 알고 있습니다.

답변

0

광고는 Microsoft에서 Kerberos를 구현 한 것입니다. Kerberos가 그러한 권한 티켓을 작성하는 핵심 기능 중 하나입니다. 그래서, 그 측면에서 당신의 솔루션은 전혀 해킹되지 않습니다. 자동차 사고처럼 보이는 유효성 검사 부분 일뿐입니다.

그러나 클라이언트 측 문제는 완전히 사라졌습니다. 일반적으로 AD 또는 Kerberos의 핵심은 인증 된 사용자를 스푸핑 할 수 없다는 것입니다. OS에 로그인 한 사용자의 티켓을 요청하기 만하면됩니다. 앱을 누가 소유 할 것인가, 또는 자신의 로컬 사용자 이름이 무엇이든 상관 없습니다. OS는 로그인 한 사용자를 정확하게 알고 있습니다.

+0

정확히 내가하고 싶은 것이지만 티켓을 얻는 방법에 대해서는 분실 된 것 같습니다. 갭 홀이있는 한 공격자는 사람이 로그인 할 때의 MAC 주소와 시간을 알고 로그인 할 때와 인트라넷에 액세스하기 전에 해당 사용자를 스푸핑 할 수 있습니다 처음으로. 지금 나는 그 가능성이 없다는 것을 안다. 그러나 그것은 아직도 구멍이다. –

관련 문제