2014-09-09 3 views
1

웹 API와 MVC를 모두 사용하는 프로젝트가 있습니다. 인증은 FormsAuthentication에 의해 처리됩니다. FormsAuthentication은 사용자와 관련된 일부 데이터가 들어있는 쿠키를 만듭니다.맞춤 인증 i asp.net 웹 API

System.Web.Mvc.AuthorizeAttribute를 확장하여 모든 MVC 컨트롤러에 추가했습니다. 그것이하는 일은 AuthorizeCore를 확장하고 사용자가 현재 제한된 접근 권한을 가지고 있기 때문에 IPrinciple의 확장 기능인 쿠키의 내용을 확인하는 것입니다.

내 웹 API 호출에 대해 비슷한 검사를하고 싶습니다. 따라서 IsAuthorized 메서드를 재정의하는 System.Web.Http.AuthorizeAttribute 확장을 만들었습니다. 이 방법은 내가 컨트롤러와 같은 확인하고 싶습니다,하지만 쿠키에서 정보를 얻는 방법을 모르거나 이것도 적절한 방법입니다.

+0

인증 쿠키를 만질 필요가 없습니다! 그대로 놔둬. – frenchie

답변

0

일반적으로 웹 API에서 쿠키 인증을 사용하지 않는 것이 좋습니다. 그 이유는 쿠키가 브라우저에서만 잘 처리된다는 것입니다. 웹 API의 전체 개념은 다른 클라이언트 (기본 클라이언트, Java 스크립트 ...)도이를 사용하는 것입니다.

브라우저에서 서버에 액세스하는 것이 확실한 경우 api 작업을 MVC 프로젝트로 이동해야합니다 (json/xml도 반환 할 수 있음). 이런 식으로 문제를 해결할 필요가 없습니다.

웹 API의 경우 토큰 기반 인증을 사용하는 것이 좋습니다