양식 인증과 Windows 인증 혼합
저는 (ASP)가 있습니다.NET 3.5) 양식 인증을 사용하도록 설계된 인트라넷 응용프로그램(기본 aspnet 구성원 자격 시스템과 함께)또한 기본 키를 aspnet_users 테이블과 공유하는 다른 테이블에 사용자에 대한 추가 정보를 저장합니다.
도메인에 속한 사용자의 경우 2차 사용자 테이블에 도메인 계정 이름을 저장하고, 테이블에 저장된 이름과 도메인 계정 이름이 일치하는 사용자를 자동으로 로그인합니다.
사용 가능한 가이드를 읽었는데, 모두 2년 이상 전의 것이며 도메인 계정 이름을 추출할 수 있는 별도의 로그인 페이지에서 Windows 인증을 활성화할 수 있다고 가정합니다.그러나 IIS7에서는 불가능한 것으로 알고 있습니다(전체 인증 방식이 모든 페이지에 적용되어 선택적으로 비활성화될 수 없으며, 두 인증 방식을 모두 동일한 페이지에 적용할 수 없습니다).
IIS가 요청한 사용자의 Windows 도메인 계정 이름을 통과하도록 하는 방법이 있습니까?저는 적절한 AD 인증이 필요하지 않고 도메인 이름만 필요합니다.
사실, 당신은 할 수 있습니다.@dr_draik에는 조금 늦었지만, 이것은 저를 위한 구글 결과로 불쑥 나타나서 저는 제가 약간의 지식을 공유해야겠다고 생각했습니다.
클래식 모드인 경우 - Windows 및 Forms 인증을 모두 사용합니다.두 가지를 동시에 수행할 수 없다는 경고가 표시되지만 무시할 수 있습니다.그런 다음 코드:와 같은 다양한 속성 주위에 맞춤법을 지정할 수 있습니다.
HttpContext.Current.Request.ServerVariables["LOGON_USER"]
그리고 거기서 사용자 이름을 빼냅니다.
통합 모드에 있는 경우 - 4021905 IIS7 질문 기반 인증과 로그인 리디렉션 기반 인증을 동시에 사용할 수 없는 경우 IIS 7.0 양식 인증 및 Windows 인증을 사용한 2단계 인증으로 연결됩니다. 이 모듈은 다른 페이지에 대한 인증을 선택적으로 변경할 수 있는 모듈입니다.
IIS7에서는 항상 두 개의 개별 응용 프로그램을 설정할 수 있습니다.하나는 Windows 인증을 사용하도록 설정합니다.다른 하나는 양식 인증이 있는 메인 앱일 것입니다.사용자가 Windows 인증 앱으로 이동하면 페이지에서 자격 증명을 가져와 양식 인증 앱으로 전달할 수 있습니다.
(정보의 완전성에 대한 자세한 내용은 정말로
제가 물어봤습니다.얼마 전 회의에서 넷 보안 담당자가 이 질문을 했습니다.그의 대답은 기술적으로 가능하지만, 그는 그것이 이루어지는 것을 본 적이 없다는 것이었습니다. (그리고 제가 그것을 했고 그것이 효과가 있었는지 그에게 알려주세요!)
그는 자신만의 ISAPI 필터를 만들어 IIS에 설치하는 방법을 제안했습니다.ISAPI 필터는 요청을 가로채서 통합 인증을 사용할 때 IIS가 수행하는 작업을 기본적으로 수행하지만, 이러한 작업이 없으면 양식을 사용하는 작업으로 돌아갑니다.여기에는 필터의 복잡한 질문/응답 논리가 포함되었습니다.그러나 이는 IIS6용이므로 IIS7에서는 다를 수 있습니다.
이것이 기술적으로 가능할 수도 있지만, 저는 이 경로가 약간 해킹처럼 느껴지기 때문에 제안하지 않을 것입니다. 그리고 여러분 자신의 보안을 굴리는 것은 결코 좋은 생각이 아닙니다(여러분이 실제로 무엇을 하고 있는지 알고 있지 않는 한).
앱에 익명으로 액세스할 수 있도록 양식을 사용하도록 구성을 설정하여 인증을 혼합하는 것에 대한 많은 기사가 있습니다.둘째, 통합 인증 페이지는 익명을 거부하고 통합 인증을 사용하도록 설정된 IIS 설정으로 만들어야 합니다.여기서 요청의 ServerVariables 컬렉션의 "Logon_User" 변수를 확인하여 마법을 사용할 수 있습니다.마지막으로 통합 인증이 사용자에게 자동으로 로그인하려면 호스트 이름이 짧아야 합니다.따라서 FQDN을 통해 양식 인증 조각이 인터넷에 노출되면 짧은 호스트 페이지로 일종의 리디렉션이 있어야 합니다.저는 2개의 가상 디렉터리를 가진 IIS 아래에서 하나의 애플리케이션만으로 달성할 수 있다고 생각합니다.
특별한 추가 기능을 사용하지 않는 솔루션을 찾았습니다.그것은 까다로웠고 여기에 언급된 모든 페이지의 요소들을 한데 모으는 것을 포함했습니다.저는 그것에 대해 게시했습니다: http://low-bandwidth.blogspot.com.au/2014/11/iis7-mixed-windows-and-forms.html
기본적으로 양식, 창 및 비인증을 사용해야 합니다.로그인 화면은 양식 기반이어야 하며, 성공하면 양식 기반 로그인 티켓을 만드는 HTTP 401 응답 요청을 실행하는 Windows 로그인을 트리거하는 버튼이 포함되어 있어야 합니다.
사안이 다소 복잡하며, 게시물은 원칙과 해결책을 자세히 다룹니다.
안타깝게도, 당신이 하려는 것은 지원되지 않습니다.ASP를 위해서.NET에서 Windows 사용자 이름을 확인하려면 Windows 인증을 사용해야 합니다.
사용자 이름 정보를 다른 페이지로 전달하는 다른 사이트/가상 디렉터리를 설정할 수 있습니다.그러나 Windows 인증되지 않은 사용자가 로그인하려고 하면 어떻게 됩니까?
저는 당신이 시도해 볼 수 있는 것을 가지고 있습니다. 그것이 효과가 있을지 확신할 수 없습니다.
과거에 우리는 사용했습니다.Request.ServerVariables["LOGON_USER"]
그러나 분명히 비어 있지 않은 값을 반환하려면 익명 액세스를 사용 불가능으로 설정해야 합니다.
다음 문서를 참조하십시오. http://support.microsoft.com/default.aspx/kb/306359
IIS 측에서 익명 액세스를 유지하고 양식 인증확인을 수행하되, 다음과 같이 익명 사용자를 거부할 것을 제안합니다.
<authorization>
<deny users = "?" /> <!-- This denies access to the Anonymous user -->
<allow users ="*" /> <!-- This allows access to all users -->
</authorization>
언급URL : https://stackoverflow.com/questions/2250921/mixing-forms-authentication-with-windows-authentication
'programing' 카테고리의 다른 글
오류 1064(42000):SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서를 확인하십시오. (0) | 2023.08.04 |
---|---|
Angular - 'HammerJ를 찾을 수 없습니다.에스 (0) | 2023.08.04 |
Spring MVC의 @RequestParam에 대한 사용자 지정 변환기 (0) | 2023.08.04 |
선 세그먼트를 특정 거리만큼 확장 (0) | 2023.08.04 |
오레오에 알림이 표시되지 않음 (0) | 2023.08.04 |