6

asp.net 웹 API에 있습니다. 로그인 방법에서 나는 데시벨에 대해 사용자/암호를 확인하고 일치하지 않는 경우에, 나는401 메시지 보내기 : Asp.net Web-api

var content = new StringContent("Invalid user name or password"); 
var message = new HttpResponseMessage(HttpStatusCode.Unauthorized); 
message.Content = content; 
throw new HttpResponseException(message); 

처럼 invalid user or password method 401 상태 코드를 따라 돌아하지만 API는 같은 일부 HTML을 내 메시지를 무시하고 단순히 돌아

보인다
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> 
<title>401 - Unauthorized: Access is denied due to invalid credentials.</title> 
<style type="text/css"> 
<!-- 
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;} 
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;} 
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF; 
background-color:#555555;} 
#content{margin:0 0 0 2%;position:relative;} 
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;} 
--> 
</style> 
</head> 
<body> 
<div id="header"><h1>Server Error</h1></div> 
<div id="content"> 
<div class="content-container"><fieldset> 
    <h2>401 - Unauthorized: Access is denied due to invalid credentials.</h2> 
    <h3>You do not have permission to view this directory or page using the credentials that you supplied.</h3> 
</fieldset></div> 
</div> 
</body> 
</html> 

이유는 무엇입니까? 어떻게 이것을 무시할 수 있습니까? 이 응답의

답변

1

하나의 잠재적 인 원인은 폼 인증을 허용하도록 구성되는 IIS 웹 사이트입니다. 이 older but still valid post에서 웹 API에 대한 폼 인증을 사용하지 않도록 IIS를 구성하는 방법을 살펴보십시오.

+0

그런 경우라면 401 용 사용자 정의 html을 던져 넣어도 로그인 페이지로 리디렉션하지 않습니까? –

+0

응답 코드는 올바른 401이며 로그인 페이지로 리디렉션되지 않습니다. 문제는 단지 자신이 선택한 HTML을 반환한다는 것입니다. –

1

나는 당신이 점점 응답이 웹 API에서 IIS에서하지 믿습니다. API 내에서 직접 인증 프로세스를 처리하려면 IIS에 익명 액세스가 허용되어 방해가되지 않도록해야합니다. 또한

, 만약 401하면 WWW-Authenticate 헤더를 반환해야 돌아올 때 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2 참조). 이것은 클라이언트에 허용되는 인증 유형을 알려줍니다.