0

현재 Windows 인증을 사용하고있는 응용 프로그램에 문제가 있습니다.Windows 인증에서 Mvc.AuthorizeAttribute와 Http.AuthorizeAttribute가 서로 다른 동작을하는 이유

사용자 정의 AuthorizeAttribute가 적용된 MVC Controller와 ApiController가 있습니다. MVC에서 Mvc.Authorization이 실패하면 오류 페이지로 리디렉션 할 수 있지만 Http.Authorization의 경우 IsAuthorized를 true 또는 false로만 반환 할 수 있으며 사용자가 아닌 경우 Windows 인증의 로그인 모달과 동일한 모달 대화 상자가 표시됩니다. 인정 받은. 나는 그것이 일어나는 이유에 대한 올바른 설명을 찾을 수 없다. 그것을 커스터마이즈 할 수 있습니까? 둘 다 401 상태를 반환하지만 왜 다른 행동을합니까?

답변

2

언급 한 것은 의도 된 동작입니다.

일반적으로 Asp.NET MVC는 브라우저 클라이언트에 웹 페이지를 제공하므로 어떤 리소스에 대한 무단 액세스의 경우 사용자를 서버 자체에서 사용자에게 오류/메시지를 표시 할 수있는 다른 페이지 (보기)로 리디렉션합니다. 따라서 귀하의 응답은 승인되지 않은 401 상태 코드가 아닌 다른 페이지로 리디렉션됩니다.

그러나 ASP.NET WebAPI는 다른 앱에서 소비해야하는 서비스로, 출력은 일반적으로 특정보기가 아닌 데이터입니다. 따라서 인증되지 않은 액세스가 확인되면 웹 API는 상태 코드 401로 응답합니다 (의도 된 동작 임).

브라우저를 통해 웹 API에 액세스하려고하면 서버에서 인증되지 않은 응답을 받으면 사용자에게 자격 증명을 제공하고 다시 API에 충돌 할 수있는 기회를 제공하는 팝업이 표시됩니다.

관련 문제