2010-01-22 3 views
2

Je conçois un serveur de sécurité d'entreprise pour notre société - nous possédons de nombreuses applications différentes, la plupart écrites en Java et quelques-unes écrites en PHP. Je pourrais fournir une API distante qui donnerait accès à chaque application au serveur. Je pourrais également créer des 'agents' que chaque application pourrait inclure pour faire tout le travail pour eux, mais permettre à mon serveur de contrôler leurs sessions et donc leurs authentifications/autorisations. Le problème est que je serais probablement mieux d'écrire l'agent dans Java, car 80% ou plus de nos applications sont en Java.accéder à la session php à partir d'une ligne de commande programme java

Si j'écrivais l'agent dans Java, est-ce que quelqu'un sait s'il y avait un moyen pour que ce programme puisse accéder à la session php? Si non, quelqu'un a-t-il une suggestion concernant une meilleure façon de s'y prendre?

Répondre

0

Les données de session sont stockées sous la forme d'un tableau sérialisé (php) dans un dossier temporaire. Les emplacements pour ceux-ci sont définis dans le fichier php.ini.

Mais vous pouvez modifier à la fois le format des données et l'endroit où elles sont stockées (par exemple dans une base de données ou une mémoire partagée ou ailleurs) en écrivant votre propre gestionnaire. Un rapide google suggère que plusieurs personnes ont écrit des [de] sérialiseurs en Java pour les données PHP. par exemple. Si vous avez des problèmes avec la fonction intégrée de sérialisation de PHP - ayez un google pour WDDX (que IIRC vient en tant que norme) et sérialise des données en XML.

Vous voudrez peut-être réfléchir à la manière dont les données de session semblent être actives sur PHP si vous souhaitez que l'agent continue à fonctionner indépendamment de la session Web.

C.

+0

Merci - esp. Je ne savais pas sur la capacité de changer le format de session d'ini - bon à savoir. –

0

Vous pouvez vous connecter à la gestion de session PHP en utilisant session_set_save_handler() (un exemple de gestionnaire personnalisé simple mais complet est inclus dans le manuel). Vous devriez être capable de synchroniser la gestion de session de PHP avec un serveur Java central de cette façon.

Votre application PHP recevrait un ID de session via un cookie ($ _COOKIE ["SESSION_ID"] ou autre). Au lieu de conserver son propre magasin de sessions, votre session_save_handler personnalisée transmet cet ID de session à votre serveur de sécurité Java central et récupère toutes les données de session. Ecrire dans une session de PHP serait routé de la même manière.

Vous pourriez bien sûr aussi aller dans l'autre sens, et interroger les données de session interne de PHP de l'extérieur, mais ne comprendrait pas exactement ce que pour. Si c'est le cas, pouvez-vous aller plus en détail ici?

+0

bien - Je voulais avoir accès à la session afin de mettre en œuvre des mises à jour synchrones aux rôles de sécurité de l'utilisateur - à savoir si son découvert l'utilisateur est un criminel de garde-robe et le vol de données financières, il devrait être facile de se connecter à une interface de sécurité et d'éteindre l'utilisateur - je pourrais laisser l'application appeler 'home' à chaque appel sensible ou, ayant accès à la session, retirer les informations d'identification d'en dessous et sur le demande suivante l'utilisateur est renvoyé au portail de connexion, incapable d'accéder à quoi que ce soit. –

+0

Dans ce cas, je pense que l'utilisation d'un gestionnaire de session connecté à votre portail est la meilleure solution. L'authentification (association d'une session avec un enregistrement d'utilisateur) se ferait en Java, et la seconde fois que vous éteignez une session dans le serveur Java, elle est également supprimée en PHP. –

Questions connexes