You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by David Sean Taylor <da...@bluesunrise.com> on 2007/11/04 00:10:54 UTC
Re: Security "Mapping Only" Feature for Groups
On Oct 31, 2007, at 1:16 PM, prasana wrote:
>
> Thanks for the reply.
>
> When I mentioned about Mapping Only Feature, I am talking about
> "IS_MAPPING_ONLY" column in SECURITY_PRINCIPAL table.
>
> The SecurityAccess Interface has both
> setInternalUserPrincipal(InternalUserPrincipal, isMappingOnly) and
> setInternalGroupPrincipal(InternalGroupPrincipal, isMappingOnly)
> methods.
>
> From the DefaultSecurityMappingHandler setRolePrincipalInGroup() calls
> setInternalGroupPrincipal() method always passes false for
> isMappingOnly.
> commonQueries.setInternalGroupPrincipal(internalGroup, false);
> If the group is not found, then it throws
> SecurityException.GROUP_DOES_NOT_EXIST
>
> But the DefaultSecurityMappingHandler setUserPrincipalInRolw() calls
> setInternalUserPrincipal() method by passing false or true based on
> whether
> the user already exists or not
>
> The reason is I am trying to leave my users and groups in weblogic
> realm and
> trying to maintain the roles in jetspeed. It looks like when I am
> trying to
> assign a user to a role, it creates the user in SECURITY_PRINCIPAL
> table but
> with the IS_MAPPING_ONLY flag as 1. But when I am trying to assign
> a group
> to role, I am getting SecurityException.GROUP_DOES_NOT_EXIST
> If jetspeed creates the group in SECURITY_PRINCIPAL table with the
> IS_MAPPING_ONLY flag as 1 for this case, it will work fine. For
> that I need
> to make modification to DefaultSecurityMappingHandler. I want to
> make sure
> that is there any reason for this not to be implemented before.
>
> Hope this helps about what I am trying to convey here.
>
Will this patch work for you?
public void setRolePrincipalInGroup(String groupFullPathName,
String roleFullPathName) throws SecurityException
{
InternalGroupPrincipal internalGroup =
commonQueries.getInternalGroupPrincipal(GroupPrincipalImpl
.getFullPathFromPrincipalName(groupFullPathName));
+ boolean isMappingOnly = false;
+ if (null == internalGroup)
+ {
+ // This is a record for mapping only.
+ isMappingOnly = true;
+ internalGroup = new InternalGroupPrincipalImpl
(groupFullPathName);
+ }
- if (null == internalGroup)
- {
- throw new SecurityException
(SecurityException.GROUP_DOES_NOT_EXIST.create(groupFullPathName));
- }
Collection internalRoles = internalGroup.getRolePrincipals();
InternalRolePrincipal internalRole =
commonQueries.getInternalRolePrincipal(RolePrincipalImpl
.getFullPathFromPrincipalName(roleFullPathName));
internalRoles.add(internalRole);
internalGroup.setRolePrincipals(internalRoles);
commonQueries.setInternalGroupPrincipal(internalGroup, false);
}
Re: Security "Mapping Only" Feature for Groups
Posted by David Sean Taylor <da...@bluesunrise.com>.
On Nov 4, 2007, at 5:07 PM, prasana wrote:
>
> This is the same patch I came up here.
> But in addition to making this changes, you need to make one more
> change
> also.
>
> Since calling the Constructor of InternalGroupPrincipalImpl(String
> fullPath)
> + internalGroup = new
> InternalGroupPrincipalImpl(groupFullPathName);
> will not instantiate the collection rolePrincipals, this will
> result in
> NullPointerException in the following line.
> Collection internalRoles = internalGroup.getRolePrincipals();
>
> So in the Constructor of InternalGroupPrincipalImpl(String fullPath)
> rolePrincipals collection needs to be instantiated.
>
> public InternalGroupPrincipalImpl(String fullPath)
> {
> super(GROUP_PRINCIPAL_CLASSNAME, fullPath);
> + this.rolePrincipals = new ArrayList();
> }
>
> This will fix the NullPointerException exception
>
Applied this patch amongst others. I've reopened the JIRA issue:
https://issues.apache.org/jira/browse/JS2-21
will be committing soon...
Re: Security "Mapping Only" Feature for Groups
Posted by prasana <pr...@bluenog.com>.
This is the same patch I came up here.
But in addition to making this changes, you need to make one more change
also.
Since calling the Constructor of InternalGroupPrincipalImpl(String fullPath)
+ internalGroup = new
InternalGroupPrincipalImpl(groupFullPathName);
will not instantiate the collection rolePrincipals, this will result in
NullPointerException in the following line.
Collection internalRoles = internalGroup.getRolePrincipals();
So in the Constructor of InternalGroupPrincipalImpl(String fullPath)
rolePrincipals collection needs to be instantiated.
public InternalGroupPrincipalImpl(String fullPath)
{
super(GROUP_PRINCIPAL_CLASSNAME, fullPath);
+ this.rolePrincipals = new ArrayList();
}
This will fix the NullPointerException exception
Thanks
Prasanna
David Sean Taylor wrote:
>
>
> On Oct 31, 2007, at 1:16 PM, prasana wrote:
>
>>
>> Thanks for the reply.
>>
>> When I mentioned about Mapping Only Feature, I am talking about
>> "IS_MAPPING_ONLY" column in SECURITY_PRINCIPAL table.
>>
>> The SecurityAccess Interface has both
>> setInternalUserPrincipal(InternalUserPrincipal, isMappingOnly) and
>> setInternalGroupPrincipal(InternalGroupPrincipal, isMappingOnly)
>> methods.
>>
>> From the DefaultSecurityMappingHandler setRolePrincipalInGroup() calls
>> setInternalGroupPrincipal() method always passes false for
>> isMappingOnly.
>> commonQueries.setInternalGroupPrincipal(internalGroup, false);
>> If the group is not found, then it throws
>> SecurityException.GROUP_DOES_NOT_EXIST
>>
>> But the DefaultSecurityMappingHandler setUserPrincipalInRolw() calls
>> setInternalUserPrincipal() method by passing false or true based on
>> whether
>> the user already exists or not
>>
>> The reason is I am trying to leave my users and groups in weblogic
>> realm and
>> trying to maintain the roles in jetspeed. It looks like when I am
>> trying to
>> assign a user to a role, it creates the user in SECURITY_PRINCIPAL
>> table but
>> with the IS_MAPPING_ONLY flag as 1. But when I am trying to assign
>> a group
>> to role, I am getting SecurityException.GROUP_DOES_NOT_EXIST
>> If jetspeed creates the group in SECURITY_PRINCIPAL table with the
>> IS_MAPPING_ONLY flag as 1 for this case, it will work fine. For
>> that I need
>> to make modification to DefaultSecurityMappingHandler. I want to
>> make sure
>> that is there any reason for this not to be implemented before.
>>
>> Hope this helps about what I am trying to convey here.
>>
> Will this patch work for you?
>
> public void setRolePrincipalInGroup(String groupFullPathName,
> String roleFullPathName) throws SecurityException
> {
> InternalGroupPrincipal internalGroup =
> commonQueries.getInternalGroupPrincipal(GroupPrincipalImpl
> .getFullPathFromPrincipalName(groupFullPathName));
> + boolean isMappingOnly = false;
> + if (null == internalGroup)
> + {
> + // This is a record for mapping only.
> + isMappingOnly = true;
> + internalGroup = new InternalGroupPrincipalImpl
> (groupFullPathName);
> + }
>
> - if (null == internalGroup)
> - {
> - throw new SecurityException
> (SecurityException.GROUP_DOES_NOT_EXIST.create(groupFullPathName));
> - }
>
> Collection internalRoles = internalGroup.getRolePrincipals();
> InternalRolePrincipal internalRole =
> commonQueries.getInternalRolePrincipal(RolePrincipalImpl
> .getFullPathFromPrincipalName(roleFullPathName));
> internalRoles.add(internalRole);
> internalGroup.setRolePrincipals(internalRoles);
> commonQueries.setInternalGroupPrincipal(internalGroup, false);
> }
>
>
>
>
>
>
>
>
>
--
View this message in context: http://www.nabble.com/Security-%22Mapping-Only%22-Feature-for-Groups-tf4726066.html#a13579994
Sent from the Jetspeed - Dev mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org
Re: Security "Mapping Only" Feature for Groups
Posted by David Sean Taylor <da...@bluesunrise.com>.
replace:
> commonQueries.setInternalGroupPrincipal(internalGroup, false);
with:
commonQueries.setInternalGroupPrincipal(internalGroup,
isMappingOnly);
--
David Sean Taylor
Bluesunrise Software
david@bluesunrise.com
[office] +01 707 773-4646
[mobile] +01 707 529 9194