3

이 애플리케이션이 다른 모바일/웹 클라이언트 애플리케이션의 소스 데이터가 될 ASP.Net MVC 4 웹 API 애플리케이션을 개발 중입니다. 사용자를 인증해야 사용자의 올바른 콘텐츠 집합을 반환 할 수 있습니다. 내 웹 API 응용 프로그램의 모든 요청에 ​​전송되는 API 키 사용에 대해 생각하고 있습니다. API 키는 사용자를 식별합니다. From API Key to User with ASP.NET Web APIAPI 키로 ASP.Net 웹 API 보안하기

Facebook, Twitter 등에서 oAuth 2.0뿐 아니라 폼 인증도 지원해야합니다. 이러한 모든 접근 방식을 통해 토폴로지에서 앞뒤로 보낼 토큰을 얻을 수 있습니다. 다른 클라이언트를 내 웹 API에 연결하여 사용자를 식별 할 수 있습니다. Facebook 액세스 토큰이 만료되었다는 것을 이해합니다. Facebook 상호 작용을 다루는 가장 좋은 방법은 무엇인지 약간 혼란 스럽습니다. 가장 좋은 방법은 다음 경로 중 어느 이동하는 것입니다 :

  1. 는 내 웹 API 응용 프로그램에 전달있어 페이스 북 액세스 토큰을 설정하기 위해 페이스 북 (및 기타 OAuth를 제공)에 대해 인증하는 다른 클라이언트 응용 프로그램에 의존? 즉, 모든 클라이언트가 Facebook 액세스 토큰이 만료되지 않도록해야합니다. 웹 API 응용 프로그램은 액세스 토큰이 항상 유효하다고 가정합니다. 이것은 나에게 위험한 것처럼 보인다. 다른 응용 프로그램은 사용자를 인증 한 다음 WebAPI 응용 프로그램에 사용자 정보를 보내 사용자가 웹 API 응용 프로그램의 데이터를 사용할 수 있도록 사용자를 등록합니다. 이것은 많은 중복처럼 보입니다.

  2. 내 웹 API 응용 프로그램은 내 웹 API를 사용하는 모든 다른 클라이언트 응용 프로그램 대신 Facebook (및 기타 oAuth 공급자)과 상호 작용할 책임이 있습니다. 그래서이 접근 방식은 웹 API 앱을위한 일종의 인증 UI를 구축해야한다고 제안하는 것 같습니다. ASP.Net MVC 웹 API는 뷰와 프론트 엔드를 가질 수 있지만 언제나 당신이 함께 섞여있는 것처럼 보입니다. 웹 API 앱은 데이터를 반환하는 데만 집중해야합니다. 모든 다른 클라이언트 응용 프로그램의 사용자는 등록 양식을 작성하거나 Facebook, Twitter 등을 사용하여 내 Web API 응용 프로그램에 등록합니다. UI보기를 순수한 REST 웹 API 응용 프로그램과 혼합해도 괜찮습니까? 그런 다음 다른 기기의 UI와 관련된 모든 것에 대해 걱정해야합니다.

  3. 내가 볼 수없는 다른 방법이 있습니까?

정말 도움이 될만한 지침과 링크를 제공해 주셔서 감사합니다. 시간 내 줘서 고마워.

답변

0

다음과 같이 접근하는 것이 좋습니다.
1. 사용자를 인증 할 인증 API를 만듭니다. 사용자가 성공적으로 인증되면 해당 사용자에 대해 세션을 생성합니다 (자체 구현, db의 레코드 일 수 있음).
2. 다음에 사용자가 해당 사용자의 콘텐츠를 반환하는 다른 API를 호출합니다. 이 경우 해당 사용자가 첫 번째 단계에서 만든 세션 ID를 제공하여 콘텐츠를 가져와야합니다. 사용자가 제공 한 sessionId가 끝에 없으면 사용자가 인증되지 않았 음을 의미합니다. 이 경우 사용자에게 먼저 인증을 받아야한다는 인증 오류 메시지를 반환 할 수 있습니다. 해당 사용자 세션에 관한 많은 정보를 저장할 수있는 방식으로 매우 유연하고 확장 가능한 솔루션입니다. 또한 일단 인증되면 사용자는 콘텐츠를 얻기 위해 다른 API를 호출 할 때마다 인증받을 필요가 없습니다. 매번 사용자를 인증하지 않아도됩니다.

+0

SessionId라고하는 APIKey라고 할 수 있습니다. –

+0

내 웹 API 앱에 사용자가 사용자 이름/비밀번호를 입력하거나 페이스 북 등으로 인증을받는 UI보기 형식을 제안 하시겠습니까? 따라서 클라이언트 응용 프로그램이 내 웹 API에 액세스하려고하면 웹 API는 사용자가 인증되지 않았 음을 인식하고 로그인 페이지로 리디렉션합니다. crossdomain 문제에 빠지지 않겠습니까?아니면 인증 (UI보기)을 수행하기 위해 클라이언트 응용 프로그램을 사용 하시겠습니까? –

+0

@Tom, 나는 (사용자 인터페이스 또는 페이스 북 인증 API를 내부적으로 호출하는 인증 API를 통해) 첫 번째 API 호출에서 사용자의 자격 증명을 가져 와서 사용자를 인증하고 마지막에 세션을 생성하고 API는 다음 온 워드를 호출합니다. 이 접근 방식은 글로벌 티켓 예약 공급자가 사용하며이 좋은 해결책을 찾았습니다. –