2017-10-20 2 views
0

나는 Laravel 5.5 및 Angular 4로 SPA를 구축하고 있습니다. "최상의"(안전하고 안전한 모범 사례 등) 인증 방법에 대해 혼란스러워합니다. 내 API 요청. 현재, 사용자가 로그인 한 후 응용 프로그램 전체가 포함 된 내 Angular 응용 프로그램의 색인 페이지로 리디렉션되는 기존의 세션 기반 로그인 시스템이 있습니다. 모든 후속 서버 상호 작용은 API 호출을 통해 수행됩니다.Laravel 5 및 Angular 4와 함께 API 토큰을 발급, 액세스 및 사용

몇 가지 기본 자습서에 따라 다음 설정이 있습니다. 각 사용자에게 API 토큰으로 사용되는 60 자의 임의 문자열이 할당되었습니다. 사용자 이름과 비밀번호를 사용하여 로그인 한 후 API 토큰은 헤더의 meta 태그에있는 HTML로 직접 출력됩니다. Angular는이 토큰을 잡고 각 API 호출의 헤더에 전달합니다.

그러나 토큰이 man-in-the-middle 공격을 피하기 위해 비 SSL 연결을 통해 전달되어서는 안되며 토큰이 자동 생성/만료되도록 설정되어야 함을 읽은 이후로

그래서 내 질문 : 단일 페이지 앱

  • 만 내부 API 호출 (하지 크로스 도메인)를 사용하여. 이 방법으로 암호화되지 않은 API 토큰을 전달하는 것이 합리적입니까?
  • 메타 태그의 HTML에 api 토큰을 직접 출력해도 괜찮습니까?

마지막으로 Laravel의 CSRF 토큰을 사용하는 것이 일반적인 방법 인 것 같습니다. 아마도 나는 너무 많은 편집증 블로그 게시물을 읽었을 것입니까?

답변

0

현대 웹 프로그래밍에서 토큰을 너무 많이 가질 수 없습니다. 액세스 토큰, 새로 고침 토큰, anti-XSRF 토큰 등이 있습니다.

저는 최근에 에 대해 많은 질문을 한 마지막 유형의 토큰입니다. 특히, API 기반 앱을 빌드 할 때 교차 사이트 요청 위조를 방지해야합니까?

브라우저가 암시 적으로 사용자를 인증 할 수있는 모든 응용 프로그램에서 사이트 간 요청 위조로부터 보호해야합니다. 암시 적 인증은 브라우저가 인증 정보를 자동으로 전송할 때 발생합니다. 쿠키는 인증을 위해 사용되지만 Windows 인증을 사용하는 응용 프로그램의 경우에도 마찬가지입니다.

일반적으로에 대한 쿠키는 쿠키가 아닙니다. 대신 API 은 일반적으로 무기명 토큰을 사용하고 브라우저에서 실행중인 사용자 정의 JavaScript 코드는 요청에 명시 적으로 토큰을 추가하여 토큰을 보내야합니다.

그러나 웹 응용 프로그램과 동일한 서버 프로세스 내에 있고 인증 용 응용 프로그램과 동일한 쿠키를 사용하는 API도 있습니다. 이것은 XSRF를 방지하기 위해 위조 방지 토큰을 사용해야하는 시나리오의 유형입니다.

귀하의 프로젝트 또는 응용 프로그램은 다음과 같습니다

  1. Laravel은 4
  2. 각도 당신의 API 서비스는 가장 좋은 방법은 사용하고 응용 프로그램

클라이언트입니다 토큰 기반의 서비스 및 아래 링크는 laravel 용입니다. 5.5 토큰 생성 및 토큰 인증 및 ap를 사용하는 사용자 용 5.5 is : https://laravel.com/docs/5.5/passport

+0

감사합니다. 나는 현재 여권을 사용하지 않고있다. 이 블로그 게시물에 설명 된대로 사용자 당 내 자신의 api_token을 간단하게 작성하고 있습니다. https://gistlog.co/JacobBennett/090369fbab0b31130b51 소규모 SPA에 대해 합리적이라고 생각하십니까? 그리고 당신의 견해로는, 토큰을 html 페이지로 출력 한 다음'document.getElementById ("token")'을 사용하여 그것을 잡을 수 있습니까? – Inigo

+1

프론트 엔드 앱에 앵귤러를 사용하는 경우 가장 좋은 방법은 특정 시간 동안 저장소 토큰을 저장하는 서비스를 사용하는 것이며 앱이 API를 사용하여 인증해야하고 html 페이지에서 토큰을 출력하지 않아도됩니다 Api 기반 애플 리케이션에 대한 합리적인, 난 비슷한 문제가있어, 항상 어려운 방법으로 문제를 해결하기 위해 간단한 방법을 사용하십시오 –

+0

처음 토큰을 어떻게 얻을 것입니까? 앱이 처음으로 현재 사용자의 토큰을 요청하기 위해로드 할 때 초기 API 호출을하는 경우 API 호출 자체가 여전히 어떻게 든 확인되어야한다고 생각하십니까? 토큰을 html로 출력 할 때의 보안 문제는 무엇입니까? 감사 – Inigo