You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2014/02/16 20:14:21 UTC
svn commit: r1568808 - in /manifoldcf/trunk: ./ CHANGES.txt
connectors/sharepoint/
connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SPSProxyHelper.java
Author: kwright
Date: Sun Feb 16 19:14:21 2014
New Revision: 1568808
URL: http://svn.apache.org/r1568808
Log:
Fix CONNECTORS-891.
Modified:
manifoldcf/trunk/ (props changed)
manifoldcf/trunk/CHANGES.txt
manifoldcf/trunk/connectors/sharepoint/ (props changed)
manifoldcf/trunk/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SPSProxyHelper.java
Propchange: manifoldcf/trunk/
------------------------------------------------------------------------------
Merged /manifoldcf/branches/CONNECTORS-891:r1568778-1568807
Modified: manifoldcf/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/CHANGES.txt?rev=1568808&r1=1568807&r2=1568808&view=diff
==============================================================================
--- manifoldcf/trunk/CHANGES.txt (original)
+++ manifoldcf/trunk/CHANGES.txt Sun Feb 16 19:14:21 2014
@@ -3,6 +3,9 @@ $Id$
======================= 1.6-dev =====================
+CONNECTORS-891: SharePoint AD groups not properly authorized.
+(Will Parkinson, Karl Wright)
+
CONNECTORS-888: JobResetThread had issues when running on
multiple agents processes.
(Florian Schmedding, Karl Wright)
Propchange: manifoldcf/trunk/connectors/sharepoint/
------------------------------------------------------------------------------
Merged /manifoldcf/branches/CONNECTORS-891/connectors/sharepoint:r1568778-1568807
Modified: manifoldcf/trunk/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SPSProxyHelper.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SPSProxyHelper.java?rev=1568808&r1=1568807&r2=1568808&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SPSProxyHelper.java (original)
+++ manifoldcf/trunk/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SPSProxyHelper.java Sun Feb 16 19:14:21 2014
@@ -1304,8 +1304,7 @@ public class SPSProxyHelper {
if (!activeDirectoryAuthority)
{
- // Do we want to return user ID via getUserInfo?
- // MHL
+ // Do we want to return user ID via getUserInfo? A:No; user login is the right thing to return.
rval = "U"+userLogin;
}
else
@@ -1352,26 +1351,47 @@ public class SPSProxyHelper {
throws ManifoldCFException, java.net.MalformedURLException, javax.xml.rpc.ServiceException, java.rmi.RemoteException
{
List<String> rval = new ArrayList<String>();
+
+ com.microsoft.schemas.sharepoint.soap.directory.GetUserCollectionFromGroupResponseGetUserCollectionFromGroupResult roleResp = userCall.getUserCollectionFromGroup(groupName);
+ org.apache.axis.message.MessageElement[] roleList = roleResp.get_any();
+
+ if (roleList.length != 1)
+ throw new ManifoldCFException("Bad response - expecting one outer 'GetUserCollectionFromGroup' node, saw "+Integer.toString(roleList.length));
+
+ MessageElement roles = roleList[0];
+ if (!roles.getElementName().getLocalName().equals("GetUserCollectionFromGroup"))
+ throw new ManifoldCFException("Bad response - outer node should have been 'GetUserCollectionFromGroup' node");
+
+ Iterator rolesIter = roles.getChildElements();
+
if (!activeDirectoryAuthority)
{
- // Do we want to map this to an ID using usergroup.getGroupInfo? Or will we be unable to find the group
- // then if it is an AD group?
- // MHL
+ // We need not only the group itself, but its user children that are Claims-based entities
rval.add("G"+groupName);
+ while (rolesIter.hasNext())
+ {
+ MessageElement child = (MessageElement)rolesIter.next();
+ if (child.getElementName().getLocalName().equals("Users"))
+ {
+ Iterator usersIterator = child.getChildElements();
+ while (usersIterator.hasNext())
+ {
+ MessageElement user = (MessageElement)usersIterator.next();
+ if (user.getElementName().getLocalName().equals("User"))
+ {
+ String isDomainGroup = user.getAttribute("IsDomainGroup");
+ if (isDomainGroup != null && isDomainGroup.equals("True"))
+ {
+ // Add a user token for the domain group
+ rval.add("U"+user.getAttribute("LoginName"));
+ }
+ }
+ }
+ }
+ }
}
else
{
- com.microsoft.schemas.sharepoint.soap.directory.GetUserCollectionFromGroupResponseGetUserCollectionFromGroupResult roleResp = userCall.getUserCollectionFromGroup(groupName);
- org.apache.axis.message.MessageElement[] roleList = roleResp.get_any();
-
- if (roleList.length != 1)
- throw new ManifoldCFException("Bad response - expecting one outer 'GetUserCollectionFromGroup' node, saw "+Integer.toString(roleList.length));
-
- MessageElement roles = roleList[0];
- if (!roles.getElementName().getLocalName().equals("GetUserCollectionFromGroup"))
- throw new ManifoldCFException("Bad response - outer node should have been 'GetUserCollectionFromGroup' node");
-
- Iterator rolesIter = roles.getChildElements();
while (rolesIter.hasNext())
{
MessageElement child = (MessageElement)rolesIter.next();