간단한 컨트롤러를 가진 MVC 3 REST API가 있습니다 : ApiController
.JSON에 대한 Javascript 요청은 ASP.NET MVC 3에서 폼 인증을 사용합니다.
public class ApiController : Controller
{
[HttpPost]
public JsonResult Foo(string input)
{
...
}
}
내가 어떤 사용자가 입력 한 데이터로 JQuery와 메소드 호출 푸를하고 결과를 표시 할하십시오 JSON 결과를 일부 문자열 정보를 받아 반환 ApiController
의 방법 Foo
이있다.
여기서 catch는 사용자가 Foo에 대한 액세스가 허용되는지 확인하고자하는 것입니다. ASP.NET MVC 3에서이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 그 대답은 SSL과 기본 인증을 사용하는 것이라고 생각하지만, 나는 그것이 어떻게 생겼는지 전혀 모른다. 또한, 내 자신의 암호 해싱/소금을 굴려야 만합니까 또는 폼 인증을 사용하는 몇 가지 방법이 있습니까?
편집 : 제 3의 개발자가 사용할 수있는 API를 만들려고합니다. 예를 들어 Gmail을 검색하고 텍스트를 Foo로 보내고 브라우저에 표시하는 Rapportive 스타일 브라우저 플러그인을 작성하는 경우
또한 양식 인증을 사용하면 일반 텍스트로 사용자 이름/암호 정보가 전송 될 것입니다. 이 문제를 방지하기 위해 SSL을 구현하는 방법을 잘 모르겠습니다.
대린 감사합니다. 저는 RequireHttps에 대해 몰랐습니다. 타사 개발자가 내 API를 사용하여 빌드하는 것을 허용하려면 어떻게해야합니까? 나는 그들이 전화를 할 때마다 username/pw를 기본적으로 제출하는 무국적 API를 원한다. 예를 들어, 일부 레일 개발자가 Foo를 호출하는 웹 앱을 만들려는 경우 문제가되지 않아야하며 개발자 계정에 적절한 사용자 이름/pw가있는 URL을 호출하기 만하면됩니다. 페이스 북이 내가 생각하는 개발자 키를 사용하는 것과 비슷하다. –
@Wesley Tansey,이 경우에는 클라이언트가 전달한 일부 토큰의 유효성을 확인하는 사용자 정의 'Authorize' 속성을 작성할 수 있습니다. 그것은 사용자 정의 HTTP 헤더 또는 다른 뭔가가 될 수 있습니다.사용자 이름/패스워드가 될 수도 있고, 클라이언트가 각 요청을 보낼 때 그리고 오버라이드 된'AuthorizeCore' 메쏘드에서 해독하고 그 유효성을 검증하기 위해 필요한 개인 키를 클라이언트에게 보낼 수 있습니다. –
감사합니다. 그게 내가 생각한거야. 같은 일반적인 작업이 .NET에서 좀 더 솔직해야합니다. 요즘 웹 앱을 만드는 거의 모든 개발자 API가 필요하지 않습니까? –