2014-10-02 2 views
1

내 자신의 소비를 위해 API를 마무리하고 있습니다. Laravel로 만든 API로 Backbone으로 만든 내 자바 클라이언트를 통신하기위한 것입니다.개인용 API 보안

브라우저에서 내 앱을로드하는 데 필요한 모든 j와 내 클라이언트 앱을 제공하는 JSON을 제공하는 "api/v1"그룹의 여러 경로를 제공하는 루트 경로가 있습니다.

내 사용자가 이전 사용자를 부드럽게 삭제하고 다른 데이터를 수정하는 등의 앱으로 데이터를 지울 수 있어야하지만 그 데이터 중 일부에는 다른 사람이보고 싶지 않은 중요한 정보가 포함되어 있어야합니다.

나는 OAuth2에 관한 몇 가지 정보를 읽었으며 "Implicit Grant"가 비밀 키의 기밀성을 유지할 수없는 클라이언트에 적합하다는 것을 알았지 만 사용자에게 로그인 플랫폼을 사용하고 그를 다시 앱으로 리디렉션합니다. 하지만 내 사용자 워크 플로에 영향을주지 않으면 서 내 클라이언트 응용 프로그램으로이를 만들고 싶습니다.

"Resource Owner Password Credentials Grant"를 보았지만 내 클라이언트가 내 앱의 Secret Key를 저장해야하며 보안되지 않습니다.

내가 뭔가를 놓친 것 같아요, 아무도 올바른 방향으로 나를 가리킬 수 있습니까? 미리 감사드립니다.

답변

1

라우라벨의 라우트 필터를 사용하여 허가받지 않은 사용자로부터 라우트를 보호 할 수 있습니다. 그러나 Laravel 응용 프로그램이 이제 끝점이 되었기 때문에 프론트 엔드 프레임 워크 (귀하의 경우에는 백본)가 인증 및 권한 부여만큼 힘든 작업을 수행하게됩니다.

라우트 필터가 설정되면 권한이 부여 된 사용자가 수행 할 권한이없는 작업을 시도 할 수 없습니다.

은 내가 위의 뜻은, 예를 들면 :

당신은 API 엔드 포인트가 있습니다 /api/v1/users/159/edit

엔드 포인트는 편안하고 7 중 하나이며, 사용자를 편집 할 수 있습니다. 모든 소프트웨어 엔지니어 또는 개발자는 이것이 RESTful 엔드 포인트임을 알고 있으며, 응용 프로그램에 의해 권한이 부여 된 경우 해당 엔드 포인트로 데이터가있는 요청을 보낼 수 있습니다.

사용자 159만이이 작업을 수행하거나 관리자 만 할 수 있기를 원합니다.

해결 방법은 원하는 역할/그룹/사용 권한입니다. 백본 응용 프로그램에서 응용 프로그램에 대한 사용자 권한을 설정합니다.

프론트 엔드 JavaScript 프레임 워크를 사용하여 올바르게 인증/권한 부여하는 방법에 대한 훌륭한 자료 (AngularJS)를 읽으십시오. 내가 말했듯이, Angular로되어 있지만, 같은 생각입니다.

기사 :이 중대하다 https://medium.com/opinionated-angularjs/techniques-for-authentication-in-angularjs-applications-7bbf0346acec

+0

전에, 내가 각도 사용한 적이 및 예제 당신이 날 정말 계몽 지적하고, 나에게 백본에서이를 구현하는 방법에 대한 몇 가지 생각을했다. 대단히 감사합니다. – Hazzard