2013-11-24 5 views
4

다른 MVC 사이트에서 액세스하는 MVC 웹 API에 대한 인증을 구성하려고합니다. 나는 web.config에서 많은 것을 시도했다. 그래서 많은 제안이있다. 그러나 아무 소용이 없습니다.MVC Web API로 인증을 사용하는 방법은 무엇입니까?

나는 MVC 웹 사이트에서 다음 코드를 사용하고 있습니다 :

var web = new WebClient(); 
web.UseDefaultCredentials = false; 
web.Credentials = new NetworkCredential(username, password); 

내가 만 API 컨트롤러를 포함하는 다른 MVC 사이트에서 메소드를 호출하는 웹 클라이언트를 사용합니다. 인증 없이는 모든 것이 제대로 작동하지만 인증을받지 못합니다. 요청을 할 때 401이 반환된다는 예외를받습니다 (나에게 묻는다면 좋은 일이지만 자격 증명을 보내지는 않는 것 같습니다).

또한 URL에 사용자 이름과 암호를 넣으려고했으나 작동하지 않았습니다.

<authentication> 
     <forms 
     cookieless="UseUri" 
     enableCrossAppRedirects="false"> 
     <credentials passwordFormat="Clear"> 
      <user name="site" password="XYZ123!"/> 
     </credentials> 
     </forms> 
    </authentication> 
    <authorization> 
     <deny users="?"/> 
    </authorization> 

내가 그냥 호출하는 웹 사이트이 있는지 확인이 하나의 사용자 이름/암호를 설정하려면 : 여기

웹 API 사이트의 web.config 파일의 관련 섹션 행동 양식. 내 API 컨트롤러에는 '인증'속성 btw가 있습니다.

내 질문은 : 인증을 사용하여 메소드를 호출 할 수 있도록 웹 API 사이트에 인증을 어떻게 추가 할 수 있습니까?

답변

4

기본 인증을 사용하십시오. Authorization 헤더의 사용자 이름/암호를 확인하고 권한이없는 경우 401 응답을 반환하는 AuthorizationAttribute를 만들 수 있습니다.

자세한 내용은 this post을 참조하십시오.

1

this answer에서 설명한대로 양식 인증 대신 기본 인증을 사용할 수 있습니다. 다른 인증 방법도 가능합니다. this blog post과 같이 토큰 기반 인증을 예로들 수 있습니다.

관련 문제