[
https://issues.apache.org/jira/browse/SHIRO-492?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14160171#comment-14160171
]
Terefang Verigorn commented on SHIRO-492:
-----------------------------------------
hello les,
my requirements are a little bit different.
i would like to resolve roles from an external backend based on the roles
presented from the authenticating realm with code like this:
{code}
public AuthorizationInfo
doGetAuthorizationInfo(PrincipalCollection pc)
{
AuthorizationInfo aI = authenticator.doGetAuthorizationInfo(pc);
String userName = this.getAvailablePrincipal(pc).toString();
SimpleAuthorizationInfo sAI = new SimpleAuthorizationInfo(new
HashSet());
Collection<String> groups = aI.getRoles();
if(groupProvider!=null)
{
for(String group :
groupProvider.resolveGroups(userName, groups))
{
groups.add(group);
sAI.addRole(group);
}
}
List<String> roles = new Vector();
if(roleProvider!=null)
{
for(String role : roleProvider.resolveRoles(userName,
groups))
{
roles.add(role);
sAI.addRole(role);
}
}
if(permissionProvider!=null)
{
for(Permission permission :
permissionProvider.resolvePermissions(userName, roles))
{
sAI.addObjectPermission(permission);
}
}
return sAI;
}
{code}
> Subject.getRoles() functionality
> --------------------------------
>
> Key: SHIRO-492
> URL: https://issues.apache.org/jira/browse/SHIRO-492
> Project: Shiro
> Issue Type: Improvement
> Components: Authorization (access control)
> Reporter: John Vines
>
> Currently shiro provides the ability to respond whether or not a user has a
> list of Authorizations. However, while the realms have methods for getting
> all authorizations (protected), these are not exposed in normal use to allow
> asking for all Roles. This should be exposed by adding a call to Subject to
> getRoles, to complement it's existing hasRoles calls. This may require making
> some of the calls around authorizations, like getAuthorizationInfo in
> AuthorizingRealm, public.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)