2014-03-14 3 views
1

이것도 가능합니다.사용자 인증을 요구하지 않고 REST API를 보호하는 가장 좋은 방법

주어진 시나리오는 ember.js 또는 backbone.js를 사용하여 상점을 구축하는 것입니다. 상점은 필요한대로 모든 제품과 개별 제품을 확보 할 수 있습니다. 그러나 사용자가 항목을 사고 싶을 때 그들은 계산대로 직접 가져 가고 카트 또는 사용자 가입/로그인 과정이 없습니다. 내가 어떻게 든 그것이 사용자가 로그인하고 인증을 받았지만 어쩌면 요청을 기반으로하는 경우에 기반으로 사용자 배송 정보를 게시하고 수량을 업데이트하기 위해 제공되는 새로운 POST 요청을 인증 할 수 있는지 궁금합니다. ? 예를 들어 IP 기반이거나 클라이언트 측에있는 SSL 인증서의 서명을 기반으로합니다.

저는 Parse를 사용하여 백엔드에서 플레이했고이 시점에서 프론트 엔드를 위해 엠버를 사용했습니다. 엠버 데이터는 REST API와의 인터페이스에 훌륭한 리소스를 제공하지만, 대부분의 경우 키가 어떻게 든 요청에 ​​전달되어야합니다. 바로 클라이언트 측 코드 안에 배치됩니다. 안좋다. 주어진 시나리오로 어떻게 이것을 달성 할 수 있습니까? 아니면 단순히 불가능합니까?

답변

2

사용자가 어떻게 주문했는지 구분할 수 있을지 모르겠다.

온라인 상점은 일반적으로 두 가지 방법 중 하나를 수행합니다

  1. 사용자가 가입 및 로그인 사용자 인증 및 검증이 방법은
  2. 가에 배송 정보를 사용자 공급 장치가 되세요. 사용자가 구매할 때 페이지

옵션 1을 사용하면 사용자가 Ember.js 앱과 서버 측에서 사용자의 유효성을 확인했기 때문에 어떤 사용자가 무엇을 주문했는지 알 수 있습니다.

옵션 2를 사용하면 브라우저 내 쿠키를 만들거나 사용자 데이터와 함께 서버에 보낼 수있는 식별자를 저장해야합니다. 그렇게하면 사용자가 구매할 때 돌아 왔을 때 구매 한 항목을 식별하고 앱에서 적절하게 작동 할 수 있습니다. 생성하고 사용자가 구입을 만들 때, 당신은 몇 가지 추가 정보에 대한 사용자 요청합니다

  • 사이트를 입력 할 때 사용자에게 쿠키를 할당

    1. :

      그래서 당신이 뭔가처럼 될 것입니다 처리 (배송 정보, 이름 등). 이것을 서버로 보내면 쿠키 정보도 받게됩니다.

    2. 사용자가 구매에서 돌아 왔을 때 (서버에서 URL로 다시 전화 할 타사 결제 프로세서를 사용한다고 가정 할 때) 서버 측에서 구매 상태 (승인 됨, 거부 등)을 표시하고 사용자가 구입 당시의 쿠키를 기반으로 사용자에게 구매 상태를 보여줄 수 있습니다.

    사용자가 다른 장치, 브라우저를 사용하거나 쿠키를 삭제하면 이전 구입 정보로 사용자를 표시 할 수 없다는 단점이 있습니다.

    질문에 대한 답변을 드리겠습니다.

  • +0

    당신이 말했듯이, 간단히 말해서 쿠키 부분이 덜 사용되는 과정입니다. 나는 기본적으로 사용자 배송 정보는 물론 제품 정보와 고유 트랜잭션에 대한 데이터베이스를 보내고 있습니다. 이드는 Stripe의 반품에서 얻을 수 있도록 사용자가 배송 정보를 구매할 수있는 방법을 제공하여 Google에서 지불을 완료했는지 확인합니다. 이 점에 대한 나의 유일한 관심사는 내 키가 클라이언트의 javascript에 노출되어 있기 때문에 누군가가 내 데이터베이스에서 파싱을 수행 할 수 없도록하는 것입니다. 따라서 누구나 그 키를 가져 와서 구문 분석 URL을 알아낼 수 있습니다. – Jordan

    +0

    구문 분석은 사용한 적이 없지만 JS 앱과의 통신을 안전하게 수행 할 수있는 방법을 제공하지 않으면 분명히 알 수 있습니다. 공개 API에 고객의 키를 노출하는 것은 매우 나쁜 생각입니다! –

    +0

    그래, 내가 생각하기에 그들이 일종의 서버 스크립트로 추상화하고 있고 아약스 또는 그 라인을 따라 게시하고 있다고 가정하고있는 것 같아, 나는 이것을 시도 할 수있다. 그러나 나는 그 주제에서 아주 잘 알려져 있지 않다. 그래서 우리는 무엇을 볼 것인가? 일어난다. 통찰력에 감사드립니다. – Jordan

    관련 문제