2010-09-03 2 views
0

Je suis en train d'écrire une application serveur qui permet principalement aux utilisateurs de soumettre des tâches à un système DRM (par exemple TORQUE) via RMI. L'application doit être exécutée en tant que root pour pouvoir soumettre des travaux proxy (lorsqu'un travail est exécuté en tant qu'utilisateur autre que l'utilisateur qui le soumet), mais ce n'est évidemment pas sécurisé - le nom d'utilisateur est simplement un paramètre de chaîne dans le RMI. N'importe qui peut passer un nom d'utilisateur et exécuter un travail en tant qu'utilisateur.Authentification Java et utilisateur système

Quelle est la meilleure façon d'obtenir Java pour authentifier ce nom d'utilisateur contre les utilisateurs autorisés du système (à l'aide d'un mot de passe qui serait également transmis)? J'ai jeté un coup d'oeil à JAAS et à Apache Shiro, mais ils semblent être sur la création de vos propres méthodes d'authentification. Je souhaite utiliser les méthodes d'authentification existantes du système (système de type Unix), quelles qu'elles soient. Essentiellement, si l'utilisateur peut SSH, ils vont bien.

Répondre

1

Si votre backend utilise LDAP (ce qui est possible si vous devez gérer un nombre relativement important d'utilisateurs pour lesquels un /etc/passwd local peut être fastidieux), vous pouvez utiliser JAAS et le LdapLoginModule existant.

Si vous voulez vous authentifier contre votre système local (en supposant un serveur Linux) sans cela, il semblerait que JAAS-PAM puisse vous aider, même si je ne l'ai jamais essayé.

+0

J'ai fait un peu de lecture sur la base de votre suggestion de PAM et suis tombé sur JPAM (http://jpam.sourceforge.net/), que je pense utiliser. – Scott