2011-04-01 3 views
4

저는 www 프론트 엔드 (www.example.com)와 개발자 API (api.example.com)를 모두 가지고있는 ASP.NET MVC 3 앱을 만들고 있습니다. 나는 개발자가 간단한 서비스를 이용하여 키를 등록하고 REST 호출을하는 곳에서 만들고 싶다. 몇 가지 사항에 대해 잘 모르겠습니다.ASP.NET MVC 3에서 개발자 API 플랫폼 만들기?

1) 키를 생성하고 저장하려면 어떻게해야합니까? 데이터베이스에 일반 텍스트로 저장할 수 있습니까? 아니면 해시하고 소금을해야합니까?

2) API 호출을 인증하려면 어떻게해야합니까? ASP.NET 멤버십을 통해이 작업을 수행하고 싶지 않습니다.

이러한 두 가지 문제를 이해하면 속도 제한과 같은 일이 간단 해 보입니다.

답변

3

1) 귀하에게 달려 있습니다. 나는 다른 API에서 완전히 다르게 수행 된 것을 보아왔다. 일부 키는 GUID와 매우 유사하지만 다른 키는 분명히 임의의 문자열이지만 중요한 것은 고유하고 쉽게 추측 할 수없는 키입니다. 데이타베이스를 데이터베이스에 저장하는 방법은 데이타를 보호하기 위해 얼마나 많은 노력을 기울이는가는 실제로 사용자 계정의 민감도 수준에 달려 있습니다. 제공하는 서비스의 성격이 매우 기밀이고/또는 감사가 끝날 수있는 경우에는 데이터를 보호하는 데 필요한 모든 수단을 취해야합니다 (단방향 해시 및 염도 사용). 개인적인 철학은 복잡성을 추가 할 이유가있을 때까지 가능한 한 단순하게 유지하는 것이지만 인증을 위해 소금으로 1 방향 해싱을 사용하는 사이트에서 작업했습니다.

2) 누가 서비스를 사용하게 될지에 따라 다릅니다. 기본 제공 ASP.NET 폼 인증 멤버쉽 공급자를 사용하고 공개 웹 사이트와 통합 할 수도 있지만 HttpProxies에서 쿠키를 지원하는 플랫폼을 사용하는 개발자에게 API 사용을 제한하며 API를 더 어렵게 만듭니다 따라와. 제가 경험 해본 대부분의 REST-ful 서비스는 가장 광범위한 개발자 지원을 제공하는 기본 인증과 SSL의 조합을 사용했지만 사용자 측에서 구현하기가 더 복잡합니다. 서버 측에서는 HTTP 헤더에서 사용자 자격 증명을 캡처하여 사용자 데이터베이스에 대해 인증해야합니다.

+0

감사합니다. Joel. 나는 분명히 표준 기본 인증과 SSL 접근 방식을 사용하고 싶다고 생각한다. 그래서 내가 SSL 인증서를 받아야한다는 뜻인가? –

+0

예, 확실합니다. 그렇지 않으면 기본 인증을 사용할 때 사용자 이름과 비밀번호가 암호화되지 않은 상태로 전송됩니다. 무료 일 수있는 자체 생성 인증서를 사용할 수 있지만 일부 프레임 워크는 SSL 경고를 생성하는 경우 요청이 완료되지 않도록 매우 까다 롭습니다. 따라서 임시 또는 개발 환경에서만 그렇게해야합니다. dev 환경에서 직접 생성 된 인증서를 신뢰할 수있는 인증서에 추가하여 컴퓨터에서 SSL 경고가 발생하지 않도록 할 수 있습니다. –

+0

좋아요,하지만 개발자가 클라이언트 측 자바 스크립트를 API로 호출하는 것은 불가능합니다. 내가 이해할 때 기본적으로 개인 키의 해시 및 세션의 시작 시간 인 사용자 지정 서명을 생성해야합니다. 그게 맞습니까? –

관련 문제