2016-10-16 4 views
0

나는 2 개의 고속 응용 프로그램을 구축 중이며 두 응용 프로그램 모두에서 SSO 인증을 얻으려고합니다. 본질적으로, 나는 세션을 백엔드 시스템으로 전달할 방법을 찾고있다.여러 응용 프로그램에서 인증

2 sailsJS 응용 프로그램 : 여기

Person A logs into the front end application 
Person A makes a request to the front end system 
Front end system makes a service (REST) call to the back end system 
Back end system determines if person A has the correct role to make the request 
Back end system makes or denies the request 

내가 생각하고 것입니다. 하나는 프런트 엔드 & 인증을 처리하고 다른 하나는 백엔드 권한 기반 데이터베이스 액세스를 처리하는 인증입니다.

백 엔드 응용 프로그램에 대해 돛 - 사용 권한을 사용하고 있으며 프런트 엔드에 대한 돛 - 권한 또는 돛 - 인증 중 하나를 사용하고 있습니다. 둘 다 passport.js의 래퍼입니다.

(그리고 백엔드 시스템으로 리디렉션 필요로 내가 올바른 방법을 확신 아니에요)이 일의 긴 방법은 내가하고 선호 무엇

은 SSO의 일종 (https://www.npmjs.com/package/passport-sso)를 사용하는 것입니다 요청과 함께 세션을 전달합니다.

var putArgs = { 
     data: myData, 
     headers: {"session": req.session} 
    } 

    client.put("http://localhost:81/myServiceEndpoint", putArgs, function(data, response){ 
     //Do something with response 
    }) 

내가 세션 캐시 레디 스를 사용하는 방법에 대한 계획을 할 비슷해, 그래서 두 응용 프로그램이 동일한 레디 스 인스턴스를 사용하여 세션 키를 전달할 수있는 방법이 무엇입니까?

참고 : 제대로 완료되면

, 사용자는 백 엔드 시스템과의 상호 작용이 없습니다. 프런트 엔드 시스템은 사용자를 대신하여 백엔드 시스템에 요청합니다.

돛 허가가 작동하려면 사용자가 완전히 인증되어야합니다. 사용자의 _id를 전달하고 조회 만하면 작동하지 않습니다.

답변

0

나는 이것을 달성하기 위해 유효한 사용자 자격 증명과 함께 제공 될 때 하나의 중앙 SailsJS REST API를 가지고 인증 토큰을 반환합니다.

현재이 토큰을 같은 이름의 localStorage 키 (예 : my-site-token)로 저장하는 두 개의 프런트 엔드 (SailsJS 및 EmberJS)가 있습니다. 그런 다음 어느 프런트 엔드가 localStorage에서 이것을 보면, 그들은 REST 요청을 제공합니다. 즉, presto, SSO입니다. 어디서나 세션을 저장하지 않아도됩니다. 토큰이 실제로 세션에 있습니다.

+0

토큰을 어떻게 전달합니까? 또한 중앙 API는 토큰을 세션에 연결하기 위해 수행 할 작업을 어떻게 알 수 있습니까? –

+0

토큰은 REST 요청과 함께 헤더 매개 변수로 제공됩니다. 토큰은 JSON 웹 토큰 (https://github.com/auth0/node-jsonwebtoken)이며 개인 토큰으로 서명 된 사용자 객체를 포함합니다. 프런트 엔드에는 읽을 수없는 영숫자 문자열이 있으며 JSON 웹 토큰 모듈은 이것을 백엔드의 사용자 정보로 변환합니다. 귀하의 세션에는 토큰 내부로 전달되는 UUID가있을 수 있습니다. –

관련 문제