2010-01-22 8 views
2

저는 우리 회사를위한 엔터프라이즈 보안 서버를 설계하고 있습니다. 우리는 대부분 Java로 작성되고 PHP로 작성된 많은 다른 응용 프로그램을 소유하고 있습니다. 각 응용 프로그램에 서버에 대한 액세스 권한을 부여하는 원격 API를 제공 할 수 있습니다. 또한 각 응용 프로그램이 포함 할 수있는 '에이전트'를 만들 수 있지만 세션에 대한 내 서버 제어 및 인증/권한 부여를 허용합니다. 문제는 80 % 이상의 Java 응용 프로그램이 Java에 있기 때문에 Java에서 에이전트를 작성하는 것이 좋습니다.커맨드 라인 java 프로그램에서 PHP 세션에 액세스합니다.

만약 내가 자바에서 에이전트를 썼다면이 프로그램이 PHP 세션에 액세스 할 수있는 방법이 있는지 아는 사람이 있습니까? 그렇지 않다면 누구든지이 일을하는 더 좋은 방법에 관한 제안을 가지고 있습니까?

답변

0

세션 데이터는 (php) 직렬화 된 배열로 임시 폴더에 저장됩니다. 이것들의 위치는 php.ini 파일에서 설정됩니다.

하지만 자신의 처리기를 작성하여 데이터 형식과 저장된 위치 (예 : 데이터베이스 또는 공유 메모리 또는 다른 위치)를 변경할 수 있습니다.

빠른 Google은 여러 사람들이 PHP 데이터 용으로 [de] 시리얼 라이저를 작성했다고 제안합니다. 예 : http://hurring.com/scott/code/java/serialize/

내장 PHP 직렬화 기능에 문제가있는 경우 - IIRC가 표준으로 제공되는 WDDX 용 Google을 사용하고 데이터를 XML로 직렬화합니다.

웹 세션과 독립적으로 에이전트를 계속 유지하려는 경우 세션 데이터가 PHP에 활성화 된 상태로 유지되는 방법에 대해 생각해보십시오.

C. 잘

+0

고맙습니다 - 특히. ini에서 알기 위해 세션 형식을 변경할 수있는 능력을 알지 못했습니다. –

0

session_set_save_handler()을 사용하여 PHP의 세션 처리에 연결할 수 있습니다 (간단하지만 완전한 사용자 정의 처리기의 예제는 설명서에 포함되어 있습니다). PHP의 세션 관리를 중앙 Java 서버와 동기화 할 수 있어야합니다.

PHP 응용 프로그램은 쿠키 ($ _COOKIE [ "SESSION_ID"] 또는 기타)를 통해 세션 ID를 받게됩니다.

사용자 정의 session_save_handler는 자체 세션 저장소를 유지 관리하지 않고 해당 세션 ID를 중앙 Java 기반 보안 서버에 전달하고 모든 세션 데이터를 보냅니다. PHP에서 세션에 쓰는 것도 같은 방법으로 진행됩니다.

물론 다른 방법으로 가서 PHP의 내부 세션 데이터를 외부에서 폴링 할 수는 있지만 정확히 무엇이 정확한지는 알 수 없습니다. 그렇다면 더 자세히 설명해 주시겠습니까?

+0

- 나는 사용자의 보안 역할에 동기 업데이트를 구현하기 위해 세션에 액세스 할 수 있도록 원 - 그 발견은 사용자가 재무 데이터를 훔치는 옷장 범죄이며, 경우 즉, 그것은해야 보안 인터페이스에 쉽게 로그인하여 사용자를 끌 수 있습니다. - 각 민감한 통화에서 '집'으로 전화를 걸거나 세션에 대한 액세스 권한이 있으면 앱 아래로부터 자격 증명을 뽑아 낼 수 있습니다. 다음 요청은 사용자가 로그인 포털로 던져져 아무것도 액세스 할 수 없습니다. –

+0

이 경우 포털에 연결된 세션 처리기를 사용하는 것이 더 나은 방법이라고 생각합니다. 인증 (사용자 레코드와의 세션 연결)은 Java에서 이루어지며, 두 번째 세션은 Java 서버에서 세션을 끕니다. PHP에서도 마찬가지입니다. –

관련 문제