2016-08-21 4 views
0

저는 서버에서 동기화 게이트웨이와 couchbase가있는 안드로이드 앱에서 couchbase lite를 사용하고 있습니다.nodejs 앱을 인증하기 위해 couchbase lite 세션을 어떻게 사용합니까?

이제 android 앱에서 node.js에 요청하고 싶습니다. 동일한 세션을 사용하여 node.js 앱에서 사용자를 승인하고 싶습니다.

가능합니까? 노드에서 세션을 읽고 couchbase와 일치시킬 수 있습니까?

답변

0

참고 : 동기화 게이트웨이에서 사용되는 버킷에 카우치베이스 주식회사 Node.js를 SDK를 사용할 수 없습니다 그렇지 않으면 것이다 _sync 메타 데이터와 제대로 동기화되지 않습니다 문서로 엉망; Sync Gateway REST API를 사용하여. 서 조회, 세션 작성 등을 할 수 있습니다.

Sync Gateway REST API의 문서를 참조하여 사용 가능한 엔드 포인트 목록을 얻을 수 있습니다. 그리고 자신의 HTTP 래퍼를 배포하고 싶지 않다면 Node.js와 브라우저에서 실행되는 JS 라이브러리를 사용할 수 있습니다 : http://developer.couchbase.com/documentation/mobile/1.3/develop/guides/sync-gateway/rest-api-client/index.html.

+0

답장을 보내 주셔서 감사합니다.하지만 제가 묻는 것은 아닙니다. 내 안드로이드 장치에서 node.js에 연결하고 싶습니다. "hello world"를 인쇄 해 봅시다. 하지만 나는 그것을 인쇄 할 수있는 유효한 세션을 동기화 게이트웨이가있는 사람들 만 원한다. 그렇게하면 다른 세션을 만들지 않고 다른 구성 요소 (예 : elasticsearch)에 대한 액세스를 허용하기 위해 SG 세션을 재사용 할 수 있습니다. 더 명확 해 지길 바랍니다. –

1

승인을 요청하는 중입니다. 이는 인증과 관련이 있지만 둘을 구분해야합니다. 당신이 원하는 것은 사용자를 인증 한 다음, 노드 조각이이를 기반으로 액세스 권한을 부여하는 것입니다.

그렇다면 세션을 설정하는 데 사용하는 인증 유형에 따라 다릅니다.

기본 인증 (동기화 게이트웨이와 함께 직접 사용될 때)은 확인 된 사용자 이름과 암호 만 전달합니다. 그 후에 세션 쿠키를 얻은 것 같아요. 이 기능을 사용하여 다른 것으로 인증하는 것은 매우 어려울 것입니다 (Sync Gateway 코드를 직접 수정해야 함).

인증 흐름에서 OpenID Connect는이를 수행 할 수있는 몇 가지 방법을 제공합니다.

간단한 방법 중 하나는 노드 앱이 사용자를 인증하도록하는 것입니다. 이것이 동일한 브라우저를 통해 진행된다면 브라우저는 사용자가 재 인증을 거치지 못하도록하는 상태를 유지할 수 있습니다. 사용자가 알아 차릴 가능성이있는 브라우저 (또는 웹 뷰이지만 보안 문제가 있음)에 물건을 전달해야하기 때문에 다소 복잡 할 수 있습니다.

또 다른 접근법은 일종의 이중 리디렉션을 수행하는 것입니다. (나는이 방법이 효과가있을 것이라고 생각하지만, 시도하지는 않았다. 인증 코드를 두 번 사용할 수 있는지 여부에 대한 문서를 찾을 수 없다.) 인증 흐름에서 리디렉션을 노드 응용 프로그램으로 이동 시키십시오. 그런 다음 노드 응용 프로그램을 다시 동기화 게이트웨이로 재지 정하십시오. 두 앱 모두 ID 토큰을 요청할 수 있습니다.

또 다른 방법은 Android 앱에서 ID 토큰을 직접 요청하여 이것을 보호 된 방식으로 노드 앱에 전달하는 것입니다. 언제나처럼, 당신은 재생 공격으로부터 보호해야 할 것이고, 나는 그 밖의 무엇이 확실하지 않다. 그래서 이것은 도전적 일 수있다.

어쨌든 동기화 게이트웨이는 ID 토큰 자체를 요청하기 때문에 모든 접근 방식에서 ID 토큰을 두 번 요청해야합니다.

여기 직접 살펴볼 수있는 참고 자료가 있습니다.

http://connect2id.com/learn/openid-connect - OpenID Connect 프로토콜을 훌륭하게 작성합니다. https://developers.google.com/identity/protocols/CrossClientAuth - 모바일 앱과 웹 앱간에 공유 권한을 부여하는 Google ID 제공 업체 문서입니다. http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html - 인증과 권한 부여의 구분을 설명하는 게시물이며, 인증이 필요할 때 OpenID Connect (OAuth 아님)를 사용해야하는 이유입니다.