Nous avons une application où les utilisateurs ayant des droits de proxy doivent pouvoir voir les liens dans une application.Spring Security 2.0.x - Filtre basé sur le type de rôle + État du bean basé sur la session
Par exemple, nous pourrions avoir:
<s:intercept-url pattern="/resourceManager.htm" access=" ROLE_ADMIN_GROUP, ROLE_PROXY"/>
Si l'utilisateur a le rôle de procuration, mais pas le rôle d'administrateur, je dois les présenter avec une page leur disant qu'ils doivent être en proxy mode pour voir cette page. De plus, j'ai besoin de vérifier les permissions de l'utilisateur auquel ils sont mandatés, pour vérifier qu'ils ont le bon rôle.
Nous avons plusieurs pages, donc j'aimerais faire cette logique dans un filtre, afin que nous puissions appliquer la logique à travers le tableau.
Je me moque de ce code pseudo alors que je continue à chercher.
class Filter
{
protected void doFilterHttp()
{
//proxy summary is session based object
if(proxySummary.isProxyMode())
{
user = proxySummary.getProxiedUser()
//here load user's authorities
//will have to look at ldap authorities populator, but I should be able to work this part out
}
if(user.getGrantedAuthorities.contains("Role_Proxy"))
{
//Is there any way to tell possible valid roles for a url?
if(url.getPossibleRoles() intersect user.getGrantedAuthorities().size == 1 &&
intersection.contains(Role_Proxy))
{ redirectToProxyPage(); }
}
}
Quelle est la meilleure façon d'obtenir des métadonnées pour l'URL à laquelle j'essaie d'accéder?
S'il n'y a aucun moyen d'obtenir des informations sur tous les rôles autorisés pour une URL, alors j'imagine que je devrais le faire à la page.
La mise à niveau vers Spring Security 3 me donnerait-elle plus de flexibilité?
J'implémente l'intercepteur de filtre de sécurité ci-dessus avec un runAsManager personnalisé (techniquement runAsProxy). Il semble se comporter comme prévu, mais je dois m'assurer que je ne fais rien qui puisse causer des problèmes de performance. Va poster un code si ça marche. – Scott