2010-01-07 6 views
2

Je cherche à créer un système de gestion de rôle décentralisé qui s'intègre aux rôles Java EE. Est-ce que quelque chose comme ça existe?Systèmes de gestion des rôles Java EE - existent-ils?

Exemple: cas d'utilisation

système A est un système à accès limité qui utilise des rôles d'entreprise. John rejoint une équipe et nécessite SYSTEM_A_READONLY pour effectuer sa fonction. Il se connecte au système de gestion des rôles décentralisé et envoie une demande pour SYSTEM_A_READONLY. Bill est l'administrateur du système A et reçoit une notification que John a demandé pour cet accès. Il peut alors se connecter au même système et approuver la demande. John a maintenant accès au système A.

Le système B est un système de gestion de la clientèle sensible. Il a un rôle pour chaque entreprise qu'il sert. Actuellement, il a SYSTEM_B_CLIENT_FOO, SYSTEM_B_CLIENT_BAR, etc. Greg est l'administrateur de ce système et il est informé par l'équipe de vente que TNT s'est connecté en tant que client. Il se connecte au système de gestion des rôles et ajoute le nouveau client. L'application Web C (hébergée à distance, mais utilisant toujours des rôles d'entreprise) détecte le nouveau rôle et l'ajoute en tant qu'option pour ses utilisateurs.

Espérons que cela a du sens. J'ai envisagé de le faire moi-même, mais cela semble être une exigence qui doit être assez commune.

Répondre

1

Vous pouvez regarder Apache Shiro http://incubator.apache.org/shiro/ même si je ne suis pas sûr que ce soit prêt pour la prime time ou fait complètement ce que vous cherchez hors de la boîte.

Vous pouvez développer les composants d'autorisation à l'aide de Spring Security, notamment en implémentant vos propres AccessDecisionVoter et UserDetailsService. Les entités, la persistance et les composants de l'interface Web sont assez simples, vous pouvez les faire dans n'importe quel cadre qui vous convient.

+0

On dirait que c'est une bonne base de travail - merci. Beaucoup de bonnes réponses ici, mais la vôtre semble la plus intéressante. –

0

Nous avons utilisé quelque chose de très similaire à ce que vous demandez. Icefaces a rendu la propriété renderonUserRole pour leurs composants, cela peut être combiné avec Spring Security pour réaliser une partie de ce dont vous avez besoin. See this

+0

Merci, cela semble utile, mais je cherche vraiment quelque chose pour gérer les rôles (c'est-à-dire pas codé en dur dans la configuration). –

2

Je ne pense pas que quelque chose comme ça existe. L'exigence en effet semble assez commune, mais je pense que les apparences sont trompeuses. Chaque entreprise, quelle que soit l'application (s), aura des exigences très spécifiques concernant l'interface pour administrer les utilisateurs et les rôles.

Selon les exigences, il peut également être relativement simple à configurer. Si «mettre une demande» signifie simplement «un email est envoyé à l'administrateur» et «ajouter le client» signifie se connecter en utilisant un simple, CRUD-framework généré, admin et remplir un formulaire, alors vous avez déjà terminé.

1

Il existe des produits pour vous aider - des choses comme crosslogix de bea.

Ce sont généralement des moteurs de décision logiques qui vous permettent d'élaborer des règles complexes qui permettent d'imbriquer et de hiérarchiser des éléments tels que les rôles et les permissions. ils permettent également (généralement) des contrôles d'autorisation paramétrés comme l'utilisateur est dans le rôle ACCOUNT_APPROVER s'il s'agit de la dernière semaine du mois. "Détecter de nouveaux rôles" est généralement un sous-produit du système centralisé, c'est-à-dire que tout est simplement interrogé, et l'API est très rapide pour faire une requête d'opération "bon marché". Ce qu'ils ne sont généralement pas si bons (je suppose qu'ils ne le perçoivent pas dans leur espace) est le flux de travail pour approuver l'accès à ces rôles. Ils vous donneront généralement une console (& une API) pour les modifier, mais laissez le flux de travail d'approbation à vous.

Comme l'indiquait le poster précédent - le problème avec le bit d'approbation est qu'il a tendance à être très spécifique à l'entreprise - il est donc souvent laissé comme API.En bref - quelque chose comme crosslogix ferait la moitié de ce dont vous avez besoin - la logique de décision, et cela, et la plupart des produits vous donnent une simple uber-console pour gérer la logique d'autorisation, mais si vous voulez une logique spécifique pour les approbations - Vous devrez probablement peaufiner un site Web sur le dessus.

-ACE

1

Eh bien, pour moi, un tel système existe et est appelé LDAP (groupes LDAP sont généralement mis en correspondance avec des rôles J2EE). Mais j'avoue que le moteur LDAP ne fournit pas toutes les facilités et workflows que vous avez mentionnés. En fait, mon expérience est que ceux-ci sont spécifiques à chaque entreprise (peut-être à cause du manque d'outil «universel») et, la plupart du temps, les entreprises pour lesquelles j'ai travaillé avaient à partir d'applications.