2011-08-18 6 views
4

현재 ASP.Net Web Forms를 사용하여 내부 웹 응용 프로그램을 작성 중이며 이상한 문제가 있습니다. 나는 현재 로그인 한 Windows 사용자를 가장 할 수 있어야하고 Windows 인증을 기반으로하는 명령을 실행하여 로그인해야합니다. 그리고 ... 사용해야하는 응용 프로그램에서 Windows 인증을 설정하지 않은 경우 로그인하면 사용자 이름과 암호를 받아 들일 수 있어야합니다. 또한 .NET 4.0에서 응용 프로그램을 작성하고 가능한 많이 확보해야합니다. web.config에서 Windows 인증 또는 폼 인증을 사용하지 않고 작업하는 대신이 세션 변수를 설정하여 사용자가 로그인 한 웹 응용 프로그램의 페이지에 액세스하지 못하도록합니다. 이상한 이름의 세션 변수를 작성하여이 작업을 수행했습니다. 사용자 이름 (windows auth 또는 not)을 기반으로 한 값과 비밀 세션 변수. 비밀 변수는 256 비트 암호화 된 문자열로 web.config에 있으며, 여기서 암호를 해독하고 세션 비밀로 설정합니다. 페이지를로드하려면 첫 번째 세션 변수를 비워 둘 수 없으며 두 번째 변수는 해독 된 키 값과 같아야합니다. 변수가 검사를 통과하지 못하면 두 번째 변수는 로그인 페이지로 리디렉션됩니다. 웹 응용 프로그램의 모든 페이지, 제네릭 처리기 및 webservice 메서드에서이를 설정합니다. 몇 분 동안 아무런 활동이 없으면 세션 시간 제한을 설정하고 로그 아웃하면 모든 세션 변수를 아무 것도 설정하지 않고 모든 쿠키를 만료시킵니다. (나는 또한 모든 캐시를 비활성화합니다).양식 인증이 완전히 필요합니까?

내 질문은 ... 이것은 폼 인증과 비교할 수있는 보안을 제공합니까? 항상 양식 인증을 사용했지만 여기서는 사용할 수 없습니다. 그렇게했다면 사용자는 IIS의 설정을 재구성해야하고 web.config를 사용하여 로그인 절차를 전환해야합니다 (본인의 지식으로는 양식 인증과 Windows 인증을 모두 사용하여 페이지 및 기타 웹 보안을 관리 할 수는 없습니다) 자원). 위에서 설명한 방법을 사용하면 두 가지 장점을 모두 얻을 수 있지만 내 방법의 보안에 대해 궁금합니다. 양식 인증을 사용하는 것과 다른 최상의 보안을 보장하기 위해 여기서 구현할 수있는 것이 있습니까? 폼 인증을 사용하지 않고 동일한 수준의 보안을 수행 할 수 있습니까?

미리 감사드립니다.

+0

와우, 몇 년 후 ... 나는이 질문을 바보 생각합니다. 물론 필자가 설명한 것은 Forms Authentication #facepalm과 비교됩니다. 필자는 Kerberos와 Forms Auth 및 맞춤 멤버쉽 공급자를 사용하여 작업을 완료했습니다. – wakurth

답변

5

이 기능은 폼 인증과 비교할 수없는 보안 기능을 제공합니까?

없음

첫 번째 규칙은 보안에 올 때 당신이 절대적으로 필요하지 않는 한 바퀴를 재발견하지 않는 것입니다.하지 가정용 구운 솔루션으로는 가능성이이고 Windows 또는 Forms 인증과 같은 보안 기능을 제공합니다. 문제는 자생적 인 해결책이 그 잠재력에 거의 미치지 못한다는 것입니다. 그들은 괜찮은지 테스트 할 수 있지만 미묘한 버그가 남아있을 수 있습니다. 6 개월 전에 해킹 당했음을 1 년 후 확인하고 싶지는 않습니다. 기존 솔루션은 이미 수백만 개의 응용 프로그램에서 테스트 및 사용되어 왔지만 한 응용 프로그램에서 사용되며 소수의 사람들 만 테스트 할 수 있습니다.

빠른 검색은 동일한 응용 프로그램에서 Windows와 Forms 인증을 모두 구현할 수 있음을 제시하므로 더 자세히 살펴 보겠습니다.

Mixing Forms and Windows Security in ASP.NET

+1

또한 보안 구멍에 제안한대로 세션에 자격 증명을 저장합니다. 위와 동의하십시오. 필요한 것은 Windows 인증 만 있으면됩니다. – TheCodeKing

+0

조언 주셔서 감사합니다! 유일한 문제는 ... 둘 다 혼합하는 것은 매우 성가신 일입니다.어쩌면 나는 그것을 다시 시도 할 것이다. 그러나 그것들이 그 기사 (이미 읽었고 시도한 것)에 있기 위해 그것을 밖으로 만드는 것처럼 완전한 증거가 아니다. 이 문제는 또한 내가 사이트에서 사용자를 인증하기 위해 사용해야하는 제 3 부 프로그램을 사용하고 있다는 사실에 있습니다. 이 프로그램은 창 인증 (가장이 필요함) 또는 UN 및 PW를 허용합니다. 닷넷 4.0 프레임 워크와 윈도우 인증을 사용하여 사용자가 자신의 도메인 creds를 입력하지 않고도 로그인 화면에 접근 할 수있게하는 것은 매우 기발합니다. – wakurth

+0

@ TheCodeKing .. web.config에 256 비트 암호화 된 문자열로 credue를 저장하려고합니다. . 그들은 (하드 코딩 된) 세션의 이름을 해독하고 비밀을 해독해야 할 것입니다 ... 어쨌든, 어쨌든, 조언을 위해 모두에게 감사 할 수있는 몇 가지 구멍이있을 수 있습니다 .. 그리고 나는 이것을하기 위해 다른 방법을 찾아야 할 것입니다. auth를 3 부 앱으로 믹싱하고, .net 4.0과 가장이 일관되게 충분하지 못하기 때문입니다. – wakurth

관련 문제