2009-07-23 5 views
0

내 작업 환경에는 몇 가지 고전적인 ASP 및 ASP.NET 응용 프로그램이 있습니다.ASP.NET 응용 프로그램에 대한 ASP 로그인 페이지

서로 다른 작업을 수행하지만 이러한 모든 응용 프로그램은 하나의 기본 응용 프로그램에서 처리되는 단일 사인온 모드를 통해 통합됩니다.

기본 응용 프로그램은 클래식 ASP에 있으며 초기에 사용자 ID와 암호를 확인한 다음 세션 변수에 UserID를 저장합니다. 세션 변수는 다른 모든 ASP 및 ASP.NET 페이지에서 유효한 인증 된 사용자로 사용됩니다. (우리는 DOT NET 페이지에 대해 세션 브리징을 사용합니다)

인증은 고전적인 ASP입니까? (고전적인 ASP를 많이 알지 못합니다.)

이 설치가 시작된 이래로, 나는이 설정이 결함인지 여부를 걱정하기 시작 했습니까? 같은 것을 처리하는 더 좋은 방법이 있습니까?

같은 로그인 페이지에서 classic asp와 DOT NET의 인증이 가능합니까?

+0

더 많은 DOT를 던져 – JoshJordan

답변

3

내 클래식 ASP 응용 프로그램에서 나는 대략 당신이 설명하는 것을 항상 해왔습니다. 사용자가 로그인 페이지를 사용할 때 자격 증명이 인증 된 다음 사용자 ID 및 기타 관련 정보가 세션 쿠키에 저장됩니다.

이 접근법의 잠재적 인 결함은 이론적으로 사용자가 세션 쿠키를 로컬에서 변경할 수 있으므로 응용 프로그램에 요청할 때 보안 위험이있는 다른 사용자로 보입니다. 내가이 문제를 해결할 수있는 방법은 세션 쿠키에 사용자 정보를 저장할 때이 정보와 일부 숨겨진 소금 정보 (특히 정보 문자열을 만들고 SHA256으로 해시)를 기반으로 인증 코드를 생성하는 것입니다.

그런 다음 정기적으로 인증 코드를 다시 검사하여 인증 코드가 예상 코드와 더 이상 일치하지 않고 사용자가 부팅되는 방식으로 쿠키가 변경되면 해당 사용자의 예상 코드와 일치하는지 확인할 수 있습니다.

비슷한 일을 할 때 가장 중요한 문제는 주어진 출력 문자열에 대해 동일한 해시 값을 제공하는 ASP 및 ASP.Net에서 해싱 알고리즘 구현을 찾는 것입니다. 또는 적절하게 변환해야합니다. 개인적으로는 64 자리 16 진수로 결과를 반환 고전적인 ASP http://www.frez.co.uk/vb6.aspx에 대한 Frez의 무료 SHA256 구현을 사용했습니다

가 소문자 문자열을 인코딩 ASP.Net을 위해 내가 사용했던 반면이를 반환하는 http://msdn.microsoft.com/en-us/library/system.security.cryptography.sha256managed.aspx을 System.Security.Cryptography.SHA256Managed 결과는 동일하지만 대문자로 표시됩니다 (약간의 작업이 포함됨 - 아래 예 참조). 따라서 필요한 경우 간단한 전환 전화 만 있으면됩니다.

Function SHA256(ByVal input As String) 
    Dim bytInput() As Byte 
    Dim bytHash() As Byte 
    Dim objBuilder As New StringBuilder 
    Dim objCrypto As New SHA256Managed 
    Dim intI As Integer 

    bytInput = Encoding.ASCII.GetBytes(input) 
    objCrypto = New SHA256Managed() 
    bytHash = objCrypto.ComputeHash(bytInput) 

    For intI = 0 To UBound(bytHash) 
     objBuilder.Append(Hex(bytHash(intI))) 
    Next 

    Return objBuilder.ToString() 
End Function 
+0

감사합니다 롭 ... 이것은 실제로 아주 좋은 sugession입니다. 불행히도 나는 당신을 투표하는 데 충분한 신용을 가지고 있지 않습니다. 그리고 아직이 질문에 답이 없습니다 ... 같은 로그인 페이지에서 classic asp와 DOT NET 모두를 인증 할 수 있습니까? ASP/DOT NET. asp.net의 인증이 세션 변수를 만드는 것을 의미하는 경우 일반 ASP.NET 폼 인증과 함께 asp.net 로그인 페이지에서 클래식 ASP에 세션 변수를 추가하는 것과 같지 않습니다. 이 방법으로 내 DOT NET 페이지를 안전하게 유지할 수 있습니다. - Raja –

+0

VBScript 용 SHA256 라이브러리가 http://www.frez.co.uk/vb6.aspx로 옮겨졌습니다. # 링크가 없으므로 페이지에 앵커 또는 ID가 없습니다. SHA를 검색하십시오. – lambacck

+0

링크를 적절히 업데이트했습니다. 이미 링크를 사용하고있는 프로젝트의 소스에 이미 통합 했으므로 링크를 다운로드해야하므로 잠시 동안되었습니다. – RobV

1

Windows 도메인 사용자 ID를 사용하여 PC에 로그인하는 경우이 기능은 완전히 통합 된 단일 사인온에 가장 적합한 옵션 일 수 있습니다. ASP와 ASP.Net은 모두 Windows 통합 인증을 지원하므로이 정보를 세션 변수에 저장할 필요가 없습니다.

+0

시간 내 주셔서 감사합니다. 나는 그것에 동의한다. 그러나 우리는 Windows 인증 모드를 사용할 수 없습니다. 다른 옵션을 제안 하시겠습니까? –

0

Windows 인증을 사용할 수없는 경우 세션 변수와 함께 쿠키를 사용하십시오. 이렇게하면 쿠키를 보내는 경우 사용자를 로그인 할 수 있습니다. 이것은 asp.net이 로그인을 처리하는 방법입니다.

쿠키도 자바 나 PHP와 함께 작동 할 수

...하지만 최적의 솔루션이 될 것 고전적인 ASP를 제거합니다. 하지만이 일은 할 수 없다는 걸 압니다 ...

관련 문제