2010-04-21 7 views
1

UI 용 ASP.net 2.0, 중간 계층의 .Net 웹 서비스 (ASMX) 및 DB 용 SQL Server 2005를 사용하여 기존의 3 계층 웹 응용 프로그램을 상속 받았습니다. 현재 회사 직원으로 만 구성된 인트라넷 응용 프로그램입니다. 현재이 응용 프로그램은 Active Directory (AD) 인증을 사용합니다.웹 서비스 보안

로그인 화면에서 사용자 이름/비밀번호 대화 상자가 표시됩니다. 중간 계층은 사용자 이름/비밀번호를 확인하기 위해 AD에 간단한 호출을합니다. ok이면 sessionId guid가 생성되어 UI로 다시 전송됩니다. 그런 다음이 sessionId는 세션 내 UI의 모든 후속 호출에 전달됩니다. 중간 계층의 모든 메서드는 먼저 요청을 처리하기 전에 SQL Server의 단순한 세션 테이블에 대해 세션 ID의 유효성을 검사합니다.

이제 공용 인터넷에서 사용할 수있는 새 UI에 응용 프로그램의 웹 서비스 중간 계층을 사용할 수 있도록해야합니다. 새 UI로 관리하므로 인증에 대해 걱정할 필요가 없습니다. 그러나 보안없이 웹 서비스를 완전히 열어두고 싶지 않습니다. 서비스를 호출하는 시스템에 그렇게 할 수있는 권한이 있는지 확인하기 만하면됩니다. 현재 사용중인 sessionIds를 유지하면서 새로운 UI에 부담을주고 싶지 않습니다.

새 UI에서 호출 할 때 서비스를 보호하는 최선의 방법에 대한 견해가 있습니까? 나는 x509 인증서를 사용할 수 있다고 생각하지만 이전에이 작업을 수행 했으므로 어떤 단점 (성능)이나 구현 방법에 대해 알지 못합니다.

새 UI가 .Net 3.5로 개발되었습니다. 중간 계층에 .Net 3.5를 설치할 수 있으므로 WCF를 사용하면 도움이 될 것 같습니까?

답변

0

저는 이것이 암호화에 적합한 문제라고 생각하지 않습니다. IP 제한을 사용하여 웹 서비스에 대한 액세스를 제한하는 것이 좋습니다. 이 데이터가 열린 인터넷과 같이 안전하지 않은 연결을 통해 전송되는 경우 은 클라이언트와 서버를 확인하고 전송 된 데이터를 안전하게 유지하기 위해 ssl을 사용할 수 있습니다. VPN을 구현하는 것이 가장 쉬운 방법입니다.

나는 세션 테이블과 관련이있다. 나는 이것이 사용자 계정 철회에 지연 시간을 가져올 것이라고 생각합니다. 이 세션에 만료 시간이 없으면 사용자 계정을 해지 할 수 없게됩니다. 사용자가 로그인 한 후 어떻게 쫓아 낼 수 있습니까?

한 가지 해결책은 각 요청에 대해 ASMX 웹 서비스 쿼리 활성 디렉토리를 갖는 것입니다. AD 서버에 부하가 높지 않은 경우이 방법이 유용 할 것입니다. AD는 매우 유익한 데이터베이스입니다.