asp.net WebForms 응용 프로그램의 결합 된 양식 / Windows 인증을 asp.net MVC 응용 프로그램으로 마이그레이션

크리스토퍼 게일

복합 양식 / Windows 인증을 수행하는 asp.net으로 작성된 응용 프로그램이 있습니다. 이 인증 방법을 asp.MVC / webAPI 응용 프로그램에서 복제하고 싶습니다 .MVC 초보자로서 몇 가지 조언을 받았습니다.

먼저, 이러한 인증 조합을 사용하는 이유는 개별 / 일반 로그온의 혼합을 지원하고 다른 Windows 사용자로 로그온 한 PC를 사용하는 사용자가 로그온 자격 증명을 입력하여 액세스 할 수 있도록하기 위해서입니다. 시스템이 Windows 자격 증명을 사용하여 PC에 로그온하면 시스템이 자동으로 로그온합니다.

MVC에서 세션 변수를 사용하는 것이 RESTful 원칙을 위반하기 때문에 눈살을 찌푸리는 것을 이해하지만 혼합 로그온 요구 사항을 처리하는 더 좋은 방법을 찾을 수 없습니다. 맞춤형 멤버십 공급자에 대해 생각했지만 이것은 과도하게 보이며 여러 PC에 로그온 할 수있는 '일반'계정에서 작동하는 것을 볼 수 없습니다.

현재 global.asax session_start 이벤트에서 먼저 request.servervariables ( "LOGON_USER")에서 무언가를 찾고 있는데, 이는 IIS에서 Windows 인증이 켜져 있고 익명 인증이 꺼져있을 때 채워집니다. 이것이 발견되면 '사용자'클래스의 인스턴스를 만들고 Windows 로그온만을 기반으로 인증하는 메서드를 호출합니다. 그들이 OK를 인증하면 응용 프로그램 전체에서 사용되는 세션에 'currentUser'개체를 저장합니다.

LOGON_USER가 없으면 (또는 쿼리 문자열에서 다른 사용자가 요청 된 경우) 요청에서 Request.QueryString ( "User") 및 Request.QueryString ( "Password")을 찾습니다. 둘 다 있으면 'user'클래스의 인스턴스가 생성되고 사용자 이름 / 암호를 사용하여 인증하기 위해 호출되는 메서드가 생성됩니다. 그들이 OK를 인증하면 응용 프로그램 전체에서 사용되는 세션에 'currentUser'개체를 저장합니다.

인증이 실패하면 사용자는 로그온 페이지로 리디렉션됩니다.

MVC에서 어떻게 이것을 달성 할 수 있을지 아십니까? 리디렉션은 어떻게 수행합니까? 이 작업을 수행하는 더 많은 'MVC'방법이 있습니까?

조언을 해주셔서 감사합니다.

크리스

사이먼 길

RESTful 애플리케이션에 세션 데이터를 저장하는 것이 적절합니다. 중요한 것은 다른 행동의 부작용에 의해 생성되지 않는다는 것입니다.

UserSession 컨트롤러를 get 및 post Login 작업과 함께 사용할 수 있습니다. get은 사용자 이름 및 암호 양식과 "Windows로 로그인"단추가있는보기를 제공합니다.

사용자 이름과 암호가 제공된 경우 게시 작업은 세부 정보를 확인하고 세션에 저장할 현재 사용자 개체를 만들 수 있습니다. Windows로 로그인 버튼을 누르면 현재 사용자 개체가 Windows ID를 사용해야한다는 태그를 지정할 수 있습니다.

다른 컨트롤러가 제대로 인증되었는지 확인하려면 요청에 연결된 유효한 사용자가 있는지 확인하는 사용자 지정 권한 필터가 필요합니다.

ASP.NET MVC 5를 사용하려는 경우 인증 및 권한 부여 필터가 모두 있습니다. 그것은 당신이하려는 것을 좀 더 읽기 쉽게 만들 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관