2012-03-29 3 views
1

나는 Drupal 7 콘텐츠 관리 시스템을 사용하는 웹 응용 프로그램을 만들고 있습니다. 웹 페이지는 JQuery와 AJAX를 많이 사용합니다.Drupal을 사용하여 Java REST 서비스를 보호하려면 어떻게해야합니까?

AJAX는 실제로 JAVA를 사용하여 구현 된 REST 서비스를 호출합니다. Apache는 Drupal 7을 실행 중이며 REST URL에 대한 호출을 Java EE 서버 (Jboss AS7)로 전달하도록 구성됩니다. 모든 것이 SSL을 통해 이루어집니다.

REST 서비스에 대한 호출을 인증하고 인증해야하며, Java 응용 프로그램에서 Drupal에 현재 로그인 한 사람의 사용자 이름 또는 ID에 액세스해야합니다. 질문은 ... 어떻게 ...

AJAX 호출이 별도의 서버 등이 아닌 동일한 Apache 서버로 이루어 지므로 모든 것이 동일한 http 세션에서 발생하므로이 작업을 수행하기를 바랍니다. 아주 쉬워.

상황이 내가 생각-의 한 :

  • 구성 정의를 호출하는 자바 보안 인터셉터 어떻게 든 세션 ID 및 수익을 읽어 드루팔 서비스 (로컬 만 액세스) 로그인 한 사용자 이름
  • 내 REST 호출에 대한 게이트웨이 역할을하는 "벙어리"drupal REST 서비스를 만듭니다.이 서비스는 Java 백엔드 서비스에 전달하기 전에 사용자 이름을 인증/인증합니다.
  • https://lists.wisc.edu/read/messages?id=7777296#7777296의 기사는 나는 멀리 지혜를 얻을 수 있었다. h Drupal 서비스를 호출하면 (각 자바 서비스 세션이 시작될 때) Drupal 세션 ID를 사용하여 현재 사용자와 그의 역할을 반환합니다. 내 Java 서비스에서이를 구성하여 x 초마다이 호출을 수행하거나 y 호출을 사용하여 역할 변경 또는 로그 아웃을 확인할 수 있습니다.

다른 사람들은 어떻게합니까? 이것은 해결해야 할 공통적 인 문제가 아닌가? 그렇지 않다면 AJAX를 통해 인증 된 서비스에 안전하게 액세스하기 위해 무엇을해야합니까? Drupal 외에도 두 번째 사용자 제어 프로세스를 도입하는 것은 피할 수없는 경우가 아니라면 오히려 도입하지 않을 것입니다. 건조 :

고마워요 -이게 저를 곤란하게합니다!

답변

1

당신이하고있는 일을 살펴보고 최대한 단순하게하려고하면 첫 번째 옵션을 변형 할 것입니다. 이것은 고유 한 인증 토큰을 가지고 있지만 기본적으로 현재 node.js 모듈이 수행하는 것입니다.

A가 로그인 한 사용자
  1. 고유 한 토큰이 생성되고 드루팔 데이터베이스에 저장하고 브라우저가 노드에 연결이되면 브라우저
  2. 로 전송하는 페이지를로드 : 워크 플로는이 같은 것입니다 .js 서버가 요청과 함께 인증 토큰을 보냅니다.
  3. node.js 서버는 토큰과 함께 요청을 처음받을 때 Drupal 사이트의 웹 서비스에 연결하고 토큰이 유효한지 확인하고 사용자에 대한 정보와 역할 등을 보내주십시오.
  4. node.js 서버는 이후 요청에 대해이를 내부적으로 저장하므로 각 요청에 대해 Drupal 사이트에 대해 ping을 수행 할 필요가 없습니다.
  5. 사용자가 Drupal에서 로그 아웃하면 Drupal은 node.js 서버에 해당 사용자의 토큰 삭제 요청을 직접 요청합니다.

기본적으로 노드 용 Java 응용 프로그램을 교체하는 것과 같습니다.js 이것은 꽤 할 수 있어야한다. 이점을 미래에 여러 서버로 나누면 확장이 가능하다는 장점이있다.

+0

그건 의미가 있습니다. 고유 토큰으로 헤더 또는 쿠키에 저장된 세션 변수를 사용하여 추가 토큰의 필요성을 제거 할 수 있습니까? – user1180316

관련 문제