Hi Karl,

I have changed the authority group as Native Sharepoint instead of Active
Directory and I could see the allow tokens in Solr index as follow:

"allow_token_document":["Authority+Group:Ui%3A0%23.w%7Clagom%5Cadministrator",
          "Authority+Group:GExcel+Services+Viewers",
          "Authority+Group:GRestricted+Readers",
          "Authority+Group:Gtestsite+Members",
          "Authority+Group:GHierarchy+Managers",
          "Authority+Group:GApprovers",
          "Authority+Group:Gtestsite+Visitors",
          "Authority+Group:Gtestsite+Owners",
          "Authority+Group:GDesigners"],


If I select the "Active Directory" setting, I don't see any tokens.

"allow_token_document":["Authority+Group:"],

I tried user profile synchronization from Active Directory. I followed
https://blogs.technet.microsoft.com/meacoex/2013/08/04/step-by-step-active-directory-import-for-sharepoint-2013/
I could see all Active Directory users in Sharepoint. Then, I request
GetUserInfo and GetGroupCollectionFromUser in Sharepoint API via soapUI but
the Sid field is empty for all user. You can see the response as follow:

<GetUserInfo>
   <User ID="17" Sid="" Name="testUser" LoginName="i:0#.w|lagom\testUser"
Email="[email protected]" Notes="" IsSiteAdmin="False"
IsDomainGroup="False" Flags="0"/>
</GetUserInfo>

<GetUserCollectionFromGroup>
   <Users>
      <User ID="17" Sid="" Name="testUser"
LoginName="i:0#.w|lagom\testUser" Email="[email protected]" Notes=""
IsSiteAdmin="False" IsDomainGroup="False" Flags="0"/>
      <User ID="18" Sid="" Name="testUser2"
LoginName="i:0#.w|lagom\testUser2" Email="" Notes="" IsSiteAdmin="False"
IsDomainGroup="False" Flags="0"/>
   </Users>
</GetUserCollectionFromGroup>

I created an issue on stackexchange. You can see from:
http://sharepoint.stackexchange.com/questions/203761/sid-have-empty-values-after-sharepoint-userprofile-sync
I can see the "sid" value, If I request to sharepoint rest api as like:
<siteurl>/_api/sp.userprofiles.peoplemanager/getuserprofilepropertyfor(accountname=@v,
propertyname='SID')?@v='testdomain\testUser'

The response:
<d:GetUserProfilePropertyFor xmlns:d="
http://schemas.microsoft.com/ado/2007/08/dataservices"; xmlns:m="
http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";
xmlns:georss="http://www.georss.org/georss"; xmlns:gml="
http://www.opengis.net/gml
">S-1-5-21-151231991-263585328-740192949-1109</d:GetUserProfilePropertyFor>

Then I saw a manifoldcf issue :
https://issues.apache.org/jira/browse/CONNECTORS-754 .  The issue was
resolved. But I'm having the same problem.







2016-12-28 14:41 GMT+03:00 Karl Wright <[email protected]>:

> Hi Cihad,
>
> In your case, then, the connector is calling the "Users:
> GetUserCollectionFromGroup" SOAP method in the SharePoint API.  This
> method is supposed to list the users that belong to the group, but I
> suspect that your SharePoint instance is not set up to work in that way,
> and that you should in fact set your MCF up as follows:
>
> - Do NOT select the "Active directory" setting.  Use "claims-based"
> instead.
> - Use the appropriate SharePoint "native" authority.
>
> Read up on how to do that here:
>
> http://manifoldcf.apache.org/release/release-2.5/en_US/end-
> user-documentation.html#sharepointrepository
>
> Thanks,
> Karl
>
>
> On Wed, Dec 28, 2016 at 6:26 AM, Cihad Guzel <[email protected]> wrote:
>
>> Hi Karl,
>>
>> I selected "Active Directory". My SharePoint server run with Active
>> Directory.
>>
>> 2016-12-28 14:13 GMT+03:00 Karl Wright <[email protected]>:
>>
>>> Hi Cihad,
>>>
>>> The code for looking for document ACLs is as follows:
>>>
>>> >>>>>>
>>>         Object node = nodeList.get( i );
>>>         String mask = doc.getValue( node, "Mask" );
>>>         long maskValue = new Long(mask).longValue();
>>>         if ((maskValue & 1L) == 1L)
>>>         {
>>>           // Permission to view
>>>           String isUser = doc.getValue( node, "MemberIsUser" );
>>>
>>>           if ( isUser.compareToIgnoreCase("True") == 0 )
>>>           {
>>>             // Use AD user or group
>>>             String userLogin = doc.getValue( node, "UserLogin" );
>>>             String userSid = getSidForUser( userCall, userLogin,
>>> activeDirectoryAuthority );
>>>             sids.add( userSid );
>>>           }
>>>           else
>>>           {
>>>             // Role
>>>             List<String> roleSids;
>>>             String roleName = doc.getValue( node, "RoleName" );
>>>             if ( roleName.length() == 0)
>>>             {
>>>               roleName = doc.getValue(node,"GroupName");
>>>               roleSids = getSidsForGroup(userCall, roleName,
>>> activeDirectoryAuthority);
>>>             }
>>>             else
>>>             {
>>>               roleSids = getSidsForRole(userCall, roleName,
>>> activeDirectoryAuthority);
>>>             }
>>>
>>>             for (String sid : roleSids)
>>>             {
>>>               sids.add( sid );
>>>             }
>>>           }
>>>         }
>>>
>>> <<<<<<
>>>
>>> So, in your example, getSidsForGroup() should be getting called.  The
>>> code for that is as follows:
>>>
>>> >>>>>>
>>>   private List<String> getSidsForGroup(com.microsoft.
>>> schemas.sharepoint.soap.directory.UserGroupSoap userCall, String
>>> groupName,
>>>     boolean activeDirectoryAuthority)
>>>     throws ManifoldCFException, java.net.MalformedURLException,
>>> javax.xml.rpc.ServiceException, java.rmi.RemoteException
>>>   {
>>>     List<String> rval = new ArrayList<String>();
>>>
>>>     com.microsoft.schemas.sharepoint.soap.directory.GetUserColle
>>> ctionFromGroupResponseGetUserCollectionFromGroupResult 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.le
>>> ngth));
>>>
>>>     MessageElement roles = roleList[0];
>>>     if (!roles.getElementName().getLocalName().equals("GetUserColle
>>> ctionFromGroup"))
>>>       throw new ManifoldCFException("Bad response - outer node should
>>> have been 'GetUserCollectionFromGroup' node");
>>>
>>>     Iterator rolesIter = roles.getChildElements();
>>>
>>>     if (!activeDirectoryAuthority)
>>>     {
>>>       // 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
>>>     {
>>>       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"))
>>>             {
>>>               rval.add(user.getAttribute("Sid"));
>>>             }
>>>           }
>>>         }
>>>       }
>>>     }
>>>     return rval;
>>>   }
>>>
>>> <<<<<<
>>>
>>> So what happens there depends on what you've selected for the
>>> connection's "use Active Directory authority" selection.  What have you
>>> chosen?
>>>
>>> Karl
>>>
>>> On Wed, Dec 28, 2016 at 5:35 AM, Cihad Guzel <[email protected]> wrote:
>>>
>>>> Hi Karl,
>>>>
>>>> 1- Yes, I selected Sharepoint 2013,
>>>> 2- Yes, I installed the plugin in my Sharepoint server.
>>>>
>>>> 2016-12-28 2:54 GMT+03:00 Karl Wright <[email protected]>:
>>>>
>>>>> Hi Cihad,
>>>>>
>>>>> Some questions:
>>>>> (1) Have you selected "SharePoint 2013" in your SharePoint connection?
>>>>> (2) Have you installed the ManifoldCF SharePoint 2013 plugin on your
>>>>> SharePoint server?
>>>>>
>>>>> You will need to do both of these in order for SharePoint 2013 ACLs to
>>>>> work right.
>>>>>
>>>>> Thanks,
>>>>> Karl
>>>>>
>>>>>
>>>>> On Tue, Dec 27, 2016 at 3:01 PM, Cihad Guzel <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I am trying MFC with Sharepoint 2013. First, I install the sharepoint
>>>>>> plugin and then run my job. My files in sharepoint are indexed 
>>>>>> successfully
>>>>>> to Solr. But I don't see the ACLs in solr index. You can see my sample 
>>>>>> solr
>>>>>> data as follow:
>>>>>>
>>>>>> "filename":"Sample.doc",
>>>>>> "allow_token_document":["Authority+Group:"], "deny_token_document":[
>>>>>> "Authority+Group:DEAD_AUTHORITY"], "deny_token_parent":["__nosecu
>>>>>> rity__"], "allow_token_share":["__nosecurity__"], "allow_token_parent
>>>>>> ":["__nosecurity__"], "deny_token_share":["__nosecurity__"],
>>>>>>
>>>>>> I run Sharepoint connector with debug mode. I follow Manifoldcf log
>>>>>> but I don't see any error in it. I can see "getDocumentACLs xml 
>>>>>> response:" in
>>>>>> the log as follow:
>>>>>>
>>>>>> <ns1:GetPermissionCollection ><ns1:Permissions>
>>>>>> ...
>>>>>>   <ns1:Permission MemberID="3" Mask="-1" MemberIsUser="False" 
>>>>>> MemberGlobal="True" GroupName="testsite Owners"/>
>>>>>>        ...
>>>>>>     </ns1:Permissions>
>>>>>> </ns1:GetPermissionCollection>
>>>>>>
>>>>>> How do I follow a way to solve the problem?
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Regards
>>>>>> Cihad Güzel
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Teşekkürler
>>>> Cihad Güzel
>>>>
>>>
>>>
>>
>>
>> --
>> Teşekkürler
>> Cihad Güzel
>>
>
>


-- 
Teşekkürler
Cihad Güzel

Reply via email to