<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Lesson's Learnt</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/rajank/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/rajank/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:41:32 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>DisplayName issues on SharePoint Alerts with Exchange server versions &amp; Configuration</title>
      <link>https://docs.microsoft.com/archive/blogs/rajank/displayname-issues-on-sharepoint-alerts-with-exchange-server-versions-configuration</link>
      <pubDate>Thu, 05 Nov 2009 04:49:10 GMT</pubDate>
      <dc:creator><![CDATA[Rajank]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/rajank/2009/11/05/displayname-issues-on-sharepoint-alerts-with-exchange-server-versions-configuration/</guid>
      <description><![CDATA[&#160;  Users can create alerts to notify them of changes to list items (item-level alerts),...]]></description>
      <content:encoded><![CDATA[<p>&#160;</p>  <p>Users can create alerts to notify them of changes to list items (item-level alerts), documents, lists (list-level alerts), or document libraries. </p>  <p>At times we would see the Alerts coming in with various DisplayName of the sender . I would like to explain the logic being this behavior . </p>  <p>Here are how you would get various alert emails . Notice the Changes in Display name of the sender. </p>  <p>Example 1 : Subscription to a SharePoint Group    <br />--------------------------------------------------------------- </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_2.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_thumb.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_thumb.png" width="536" height="155" /></a> </p>  <p>&#160;</p>  <p>Example 2 : Subscription to a SharePoint Group    <br />----------------------------------------------------------------- </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_4.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_thumb_1.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_thumb_1.png" width="537" height="151" /></a> </p>  <p>&#160;</p>  <p>Example 3: Subscription Alert for a document library / Discussion board etc    <br />--------------------------------------------------------------------------------------------------- </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_6.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_6.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_thumb_2.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_thumb_2.png" width="544" height="146" /></a> </p>  <p>&#160;</p>  <p>Example 4: Subscription Alert for a document library / Discussion board etc    <br />----------------------------------------------------------------------------------------------------- </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_8.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_8.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_thumb_3.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/DisplayNameissuesonSharePointAlertswithE_10184/image_thumb_3.png" width="552" height="162" /></a> </p>  <p>&#160;</p>  <p>Note : The From address in the Outgoing Mail settings on the Central admin &amp; Web application outgoing Email settings page is : <a href="mailto:MossAdmin@BA.com">MossAdmin@BA.com</a> </p>  <p>&#160;</p>  <p>&#160;</p>  <p><strong>The Logic behind this behavior</strong> </p>  <p>1. When we subscribe to a SharePoint alert for a list , Discussion Board , Document library etc&#160; share point would Append the Title of the site as the Display name of the Sender &amp; send the SMTP message accordingly&#160; . See example 3 , here &quot; Contoso Collabration Portal &quot; is the title of the site .&#160; You may alternatively see the DisplayName as Senders Name ( Example 4)&#160; as seen in active directory . </p>  <p>2. In case of addition made to a group etc , SharePoint does append the title hence DisplayName would either be the Sender's address ( Example 1)&#160; or Senders Name&#160; as seen in active directory ( Example 2)&#160; . </p>  <p>Finally the DisplayName of the sender as seen by the recipient of the message depends upon how mail is sent to exchange server &amp; its&#160; configuration .    <br />It should be noted that all versions of exchange do not try to resolve the sender of the message when message is sent anonymously while the recipient is always resolved as we have to deliver email to him . But if the message is sent to exchange server using authentication , exchange would try to resolve the sender against an object in AD &amp; if found would change the DiaplayName as it exists on the object . </p>  <p>&#160;</p>  <p><strong>How to Fix it</strong> </p>  <p>If we&#160; need to Resolve the DisplayName of the sender of the alert to the object in AD ( Example 2 &amp; 4)&#160; , we need to ensure message is received by exchange is forcefully resolved . </p>  <p>&#160;</p>  <p><strong>For Exchange 2000/2003</strong> :     <br />--------------------------------- </p>  <p>1. Go the Exchange System Manager </p>  <p>2. Expand Servers Container &amp; go the Exchange server in question. </p>  <p>3. Expand Protocols &amp; SMTP </p>  <p>4. Go to properties of Virtual Server , Access tab </p>  <p>5. Click on Authentication Tab &amp; Ensure that &quot; Resolve anonymous e-mail&quot; checkbox is checked . </p>  <p>&#160;</p>  <p><strong>For Exchange 2007</strong> :     <br />-------------------------- </p>  <p>To achieve this in exchange 2007 requires that mail be received by exchange via a Externally secured Connector , mails received via this connector are resolved for Sender of the message .&#160; This&#160; is very explained here </p>  <p><a href="http://msexchangeteam.com/archive/2006/12/28/432013.aspx">Allowing application servers to relay off Exchange Server 2007</a></p>]]></content:encoded>
    </item>
    <item>
      <title>All you want to know about People Picker in SharePoint ( Functionality | Configuration | Troubleshooting ) Part-2</title>
      <link>https://docs.microsoft.com/archive/blogs/rajank/all-you-want-to-know-about-people-picker-in-sharepoint-functionality-configuration-troubleshooting-part-2</link>
      <pubDate>Sun, 20 Sep 2009 02:45:00 GMT</pubDate>
      <dc:creator><![CDATA[Rajank]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/rajank/2009/09/20/all-you-want-to-know-about-people-picker-in-sharepoint-functionality-configuration-troubleshooting-part-2/</guid>
      <description><![CDATA[The Part 1 of this series talks about how People Picker works under the default configuration . In...]]></description>
      <content:encoded><![CDATA[<p><font size="2">The Part 1 of this series talks about how People Picker works under the default configuration . In this post I will focus on what changes when we have SharePoint servers in the farm &amp; principals ( users or groups ) belong to Different Active directory Domains &amp; Forests . </font> <p><font size="2">Review &amp; evaluate your current AD infrastructure to determine the existing trust relationships as this information would be critical to determine the behavior of People Picker &amp; configuration required . If you need assistance to figure out the type of Trust or Transitivity , please refer to TechNet articles in References section </font> <p><font size="2"></font>&nbsp; <p><strong><font size="2">Querying Additional Forest or Domains</font></strong> <p><strong><font size="2"></font></strong>&nbsp; <p><font size="2"><strong>Scenario 1 :</strong> The SharePoint server belongs to a forest and/or domain that has 2-way trusts established with other forests or domain</font> <p><font size="2"></font>&nbsp; <p><font size="2">The accounts of the users accessing SharePoint therefore belong to those trusted domains and since the trust is 2 way, the identity of the IIS application pool is also capable of authenticating against those trusted domains. Hence all domains and forests with a two-way trust relationship are available without any additional configuration steps as People Picker searches all two-way trusted forests and all two-way trusted domains by default .</font> <p><font size="2">Note : If there is a Forest wide Trust between two forests &amp; users and/or resources belong to Child domains , still no configuration is required at the SharePoint level as Forest Trust creates a transitive trust relationship between every domain in both forests.</font> <p><font size="2"></font>&nbsp; <p><font size="2"><strong>Scenario 2 :</strong> The SharePoint server belongs to a forest and/or domain that has 1-way trusts established with other forests or domain</font> <p><font size="2"></font>&nbsp; <p><font size="2">In order to instruct SharePoint to query those trusted domain or forests we need to configure access to them by using the Stsadm command-line tool and selecting an account to use when accessing each forest or domain. Those credentials must be from the forest/domain to be queried or from a trusted domain, as long as it is allowed to authenticate and is not denied to logon remotely.</font> <p><font size="2">You can use a different account for each target domain or forest, or the same account for all domains and forests.</font> <p><font size="2"></font>&nbsp; <p><font size="2">1. On every front-end Web server on a farm, at a command prompt, type the following command, and then press ENTER:</font> <blockquote> <p><font size="2">STSADM.exe -o setapppassword -password key</font></p></blockquote> <p><font size="2">Note: The account and password used to access each domain or forest is stored on each front-end Web server in the farm . This key is an encryption string that is used to encrypt the password for the account that is used to access the forest or domain . This encryption string must be the same for all servers in the farm, and unique for each server farm in a deployment with multiple farms.</font> <p><font size="2"></font>&nbsp; <p><font size="2">2. On a front-end Web server, at a command prompt, type the following command, and then press ENTER, </font> <blockquote> <p><font size="2">STSADM.exe -o setproperty-propertyname peoplepicker-searchadforests -propertyvalue &lt;Valid list of forests or domains&gt; -url &lt;URL of the Web application&gt;</font></p></blockquote> <p><font size="2">Note : You have to provide a valid list of forest/domains to be queried as well as the credentials to do so, this can be specified as below . </font> <blockquote> <p><font size="2">forest:DnsName,LoginName,Password</font> <p><font size="2">domain:DnsName,LoginName,Password</font></p></blockquote> <p><font size="2">You can add multiple forests and or domains by listing multiple domains or forests in the format Forest/Domain:DnsName,LoginName,Password separated by semicolons. For e.g.</font> <p><font size="2"></font>&nbsp; <p><strong><font size="2">STSADM.exe -o setproperty-propertyname peoplepicker-searchadforests -propertyvalue“forest:Contoso.com,Contoso\User1,PasswordofUser1; domain:Fabrikam.com,Fabrikam\User2,PasswordofUser2” -url </font></strong><a href="http://webapp"><strong><font size="2">http://webapp</font></strong></a> <p><font size="2"></font>&nbsp; <p><font size="2">Note : You can omit the username and password if the application pool identity already has access to Target domain or forest, this would be the case where application pool identity is from the Trusted forest or domain itself .</font> <p><font size="2"></font>&nbsp; <p><font size="2">Special Case : If the application pool identity is from the Target forest or Domain you would be able to resolve all users from target domain &amp; forest but unable to resolve users from local SharePoint domain using the Browse option ( Checkname will still work **) &amp; would require to specify the local Domain or Forest via the STSADM Command ,although without a username &amp; password . </font> <p><font size="2"></font>&nbsp; <p><font size="2"><strong>Key Observations &amp; Considerations :</strong> </font> <ol> <li><font size="2">In the above example notice how each block is separated by semi-colons and each element in a block is separated by comma. </font> <li><font size="2">There is no space between peoplepicker and -searchadforests .</font> <li><font size="2">Ensure that you have valid credentials for each forest/domain &amp; passwords do not contain commas. </font> <li><font size="2">If you need to query a forest the “forest” argument is specified, a forest-trust must be in place and/or if you need to query a domain the "domain" argument is specified , an external trust will suffice .</font> <li><font size="2">If you configure a forest to be queried, it is not necessary to declare all or some child domains separately, they will be queried anyway .</font> <li><font size="2">If “forest” is specified, the Global Catalog Service will be used to perform the query, if “Domain” is specified, the LDAP service will be used instead.</font> <li><font size="2">The DC Locator process used as discussed in </font><a href="http://blogs.msdn.com/rajank/archive/2009/09/01/all-you-want-to-know-about-people-picker-in-sharepoint-functionality-configuration-troubleshooting-part-1.aspx"><font size="2">Default configuration</font></a><font size="2"> is still applicable BUT is extended beyond the local forest boundaries. This means that the SharePoint servers must be able to resolve names of remote forests/domains domain controllers (SRV records and A records) , hence DNS must be correctly configured . </font> <li><font size="2">Once you have configured peoplepicker for a web app &amp; If you still wish to query the forest/domain SharePoint belongs to, you’ll have to add it as part of the parameter too. </font> <li><font size="2">If you use “Selective authentication” or “SID Filtering” in order to restrict authentication through trusts, you must make sure that the IIS application pool identity is allowed to authenticate against the remote forest/domain it queries. </font> <li><font size="2">If you add a cross Forest /Domain user to SharePoint Site there is an entry for the same in the Userinfo table for that web application . If later the trust is removed , you my still be able to Checkname that user as it already exists in SQL but cannot add it to the site &amp; assign permissions etc . </font></li></ol> <p><font size="2"></font>&nbsp;</p> <p><font size="2">To Remove the People Picker entry for a web Application , Run the STSADM command with blank property value i.e. Start &amp; End double quotes with no space . </font> <blockquote> <p><font size="2">STSADM.exe -o setproperty-propertyname peoplepicker-searchadforests -propertyvalue“” -url </font><a href="http://webapp"><font size="2">http://webapp</font></a></p></blockquote> <p><font size="2"></font>&nbsp; <p><font size="2">Here is flow Chart which depicts the process flow of configuring People Picker for cross forest scenarios . </font> <p><font size="2">&nbsp;</font> <p><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_AC52/clip_image001_2.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_AC52/clip_image001_2.png"><font size="2"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" border="0" alt="clip_image001" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_AC52/clip_image001_thumb.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_AC52/clip_image001_thumb.png" width="770" height="956"></font></a> <p><font size="2"></font>&nbsp; <p><font size="2">**Note: The people picker settings added by Stsadm peoplepicker-searchadforests command are honored by Browse feature while the checkname still would query all domains local &amp; trusted &amp; would be able to enumerate users provided the application pool identity has access to it . Once you add the People picker entry the ability to query local share point Domain /Forest is lost &amp; that too needs to be added in the list of peoplepicker-searchadforests command.</font> <p><font size="2"></font>&nbsp; <p><font size="2"><strong>Refrences:</strong> </font> <p><a href="http://technet.microsoft.com/en-us/library/cc775736(WS.10).aspx"><font size="2">TRUST TYPES</font></a> <p><a href="http://technet.microsoft.com/en-us/library/cc755700(WS.10).aspx"><font size="2">FOREST TRUSTS</font></a> <p><a href="http://technet.microsoft.com/en-us/library/cc263460.aspx"><font size="2">Peoplepicker-searchadforests: Stsadm property</font></a> <p><a href="http://technet.microsoft.com/en-us/library/cc262051.aspx"><font size="2">Select users from multiple forest domains</font></a> <p><a href="http://support.microsoft.com/kb/320528"><font size="2">How to configure Active Directory to allow anonymous queries</font></a> <p>&nbsp; <p><font size="2"><strong>Coming in Subsequent blogs other Peoplepicker configuration commands &amp; troubleshooting Peoplepicker issues . Hang On!</strong> </font> <p><font size="2"></font></p>]]></content:encoded>
    </item>
    <item>
      <title>All you want to know about People Picker in SharePoint ( Functionality | Configuration | Troubleshooting ) Part-1</title>
      <link>https://docs.microsoft.com/archive/blogs/rajank/all-you-want-to-know-about-people-picker-in-sharepoint-functionality-configuration-troubleshooting-part-1</link>
      <pubDate>Tue, 01 Sep 2009 09:13:00 GMT</pubDate>
      <dc:creator><![CDATA[Rajank]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/rajank/2009/09/01/all-you-want-to-know-about-people-picker-in-sharepoint-functionality-configuration-troubleshooting-part-1/</guid>
      <description><![CDATA[&nbsp; The people-picker is a SharePoint interface responsible for querying repositories for...]]></description>
      <content:encoded><![CDATA[<p><font size="2"></font>&nbsp;</p> <p><font size="2">The people-picker is a SharePoint interface responsible for querying repositories for identities or groups in order to grant them permission in the SharePoint application. Site administrators and other users use the People Picker Web control to select people and groups when assigning permissions. There are two possible ways to add users, via the checkname or via the browse feature. </font></p> <p><font size="2">The checkname is the icon with a messenger guy and a checkmark :</font><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/clip_image001_2.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/clip_image001_2.png" mce_href="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/clip_image001_2.png"><font size="2"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image001" border="0" alt="clip_image001" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/clip_image001_thumb.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/clip_image001_thumb.png" width="27" height="22" mce_src="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/clip_image001_thumb.png"></font></a><font size="2"> </font> <p><font size="2">The browse feature is the book icon: </font><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/clip_image002_2.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/clip_image002_2.png" mce_href="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/clip_image002_2.png"><font size="2"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/clip_image002_thumb.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/clip_image002_thumb.png" width="25" height="25" mce_src="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/clip_image002_thumb.png"></font></a><font size="2"> </font></p> <p mce_keep="true">&nbsp;</p> <p><font size="2">Let's get's into the internals of what happens when you&nbsp; go add a user /Group &amp; say Checkname or Browse </font> <p><strong><font size="2"></font></strong> <p><strong><font size="2">Default Configuration , How this works </font></strong> <ol> <li><font size="2">Site administrator or other users submit a query to the people-picker web control. </font> <li><font size="2">The WFE performs a DNS query in order to locate a domain controller hosting the Global Catalog Service. </font> <li><font size="2">Once located it tries to connect to it . This first connection, which is anonymous, will report to the SharePoint server extra information over the DC it contacted. It will include various LDAP information, the its exact capabilities as well as the authentication mechanism it supports. This entry point is known as the “Root” or “RootDSE” . </font> <li><font size="2">If the AD requires authentication, which is by default the case, SharePoint will authenticate using the context of the IIS application pool the SharePoint web application runs under. It can be Local system or Network Service or a specified domain user . </font> <li><font size="2">The WFE sends an LDAP Global Catalog Search Request to the DC asking for any match in the whole subtree for user or group objects with attributes that contain the search string (a wildcard search version of the User display name) in one of the following attributes:</font></li></ol> <blockquote> <p><font size="2"># User objects: 'name', 'displayName', 'cn', 'sn', 'SamAccountName', 'mail', SMTP or sip 'proxyAddresses' attributes. </font> <p><font size="2"># Group objects: 'name', 'displayName', 'cn', or 'SamAccountName' attributes. </font></p></blockquote> <p><font size="2">Here is how the frame looks like a Network capture ( filtered for LDAP traffic ) , searching for a string " Teds" which is for a user name Ted Simpson . Check out list of attributes requested to be returned for each record &amp; server Controls Specified .&nbsp; The Browse feature will use the LDAP filter to search for a user .</font>  <p><font size="2"></font> <blockquote> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_2.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_thumb.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_thumb.png" width="994" height="585" mce_src="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_thumb.png"></a> </p></blockquote> <p><strong><font size="2"></font></strong> <p><font size="2"><strong></strong></font>&nbsp; <p><font size="2">The Check name option will try to connect to one of the dc’s in its domain &amp; tries to do a SID lookup using the windows API </font><a href="http://msdn.microsoft.com/en-us/library/cc234492(PROT.10).aspx">LsarLookupNames4</a> .The LsarLookupNames4 method translates a batch of security principal names to their SID form. This traffic is encrypted and the Web <font size="2">server and</font> domain controller talks via RPC.&nbsp; If unsuccessful&nbsp; it falls back to LDAP query <font size="2">as used by Browse ( The&nbsp; <strong>LDAP Query Filter</strong> used is the same as described below but without the wildcard expression ‘<strong> * </strong>’ ). </font> <p>&nbsp; <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_8.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_8.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_thumb_3.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_thumb_3.png" width="1045" height="511"></a>  <p><font size="2"><strong></strong></font>&nbsp; <p><font size="2"><strong>LDAP Query Filter</strong> </font> <blockquote> <p><font size="2">(&amp;<font color="#0000ff">(objectCategory=person)(objectClass=user)</font>(!<font color="#ff0000">(userAccountControl:1.2.840.113556.1.4.803:=2))(|(name={teds}*)(displayName={teds}*)(cn={teds}*)(mail={teds}*)(sn={teds}*)(SamAccountName={1}*)(proxyAddresses=SMTP:{teds})(proxyAddresses=sip:{teds}){2})</font>)", "(&amp;(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(|(name={teds})(displayName={teds})(cn={teds})(mail={teds})(samAccountName={teds})(proxyAddresses=SMTP:{teds})(proxyAddresses=sip:{teds})))", "(&amp;(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(|(mail={teds})(proxyAddresses=SMTP:{teds})))"), new SearchParameter("(&amp;(objectCategory=group)(|(name={teds}*)(displayname={teds}*)(cn={teds}*)(SamAccountName={1}*)(mail={teds}*)(proxyAddresses=SMTP:{teds}){2}))", "(&amp;(objectCategory=group)(|(name={teds})(displayname={teds})(SamAccountName={teds})(mail={teds})(proxyAddresses=SMTP:{teds})))", "(&amp;(objectCategory=group)(|(mail={teds})(cn={teds})(proxyAddresses=SMTP:{teds})))"), new SearchParameter("(&amp;<font color="#0000ff">(objectCategory=group)</font>(groupType:1.2.840.113556.1.4.803:=2147483648)(|(name={teds}*)(displayname={teds}*)(cn={teds}*)(SamAccountName={1}*){2}))", "(&amp;(objectCategory=group)(<font color="#ff8040">groupType:1.2.840.113556.1.4.803:=2147483648</font>)(|<font color="#008000">(name={teds})(displayName={teds})(cn={teds})(samAccountName={teds}</font>))) </font> <p><font size="2">&nbsp; </font></p></blockquote> <p><font size="2">The query conditions as seen in the above LDAP query Filter are : </font> <p style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle"><span style="font-family: arial; font-size: 10pt"></span><font size="2" face="tre">&nbsp;</font></p> <ol style="margin-top: 0in; unicode-bidi: embed; font-family: arial; direction: ltr; margin-bottom: 0in; margin-left: 0.75in; font-size: 10pt" type="a"> <li style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle"><span style="font-family: arial; font-size: 10pt"><font color="#0000ff">We are searching for a<span style="mso-spacerun: yes">&nbsp; </span>user or a group</font> </span> <li style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle" value="2"><span style="font-family: arial; font-size: 10pt"><font color="#ff0000">If it is user, it must not be disabled &amp;<span style="mso-spacerun: yes">&nbsp; </span>at least one of the following attribute must begin with the input the user provided: name, displayName, cn, mail, sn, SamAccountName, proxyAddresses etc</font> </span> <li style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle" value="3"><span style="font-family: arial; font-size: 10pt"><font color="#008000">If it is a group, at least of<span style="mso-spacerun: yes">&nbsp; </span>the following attribute must begin with the input the user provided: name, displayname, cn, SamAccountName</font> </span> <li style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle" value="4"><span style="font-family: arial; font-size: 10pt"><font color="#ff8040">if it is a group, it must be a security group (domain local, global or universal), not a distribution group</font></span></li></ol> <p><font size="2"><font face="tre">6.&nbsp; The DC responds with an LDAP Global Catalog Search Response containing both user and group objects that match the search string &amp; results are displayed . Check out the responses to the list of attributes request in the search query</font> </font></p> <p><font size="2"></font>&nbsp;</p> <blockquote> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_4.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_thumb_1.png" original-url="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_thumb_1.png" width="1016" height="637" mce_src="http://blogs.msdn.com/blogfiles/rajank/WindowsLiveWriter/AllyouwanttoknowaboutPeoplePickerinShare_F487/image_thumb_1.png"></a> </p></blockquote> <p><font size="2"></font> <p><font size="2"></font> <p><font size="2"></font>&nbsp; <p><font size="2">After the Successful LDAP response in either case ( Browse or Checkname )&nbsp; we go &amp; verify the user based on the SID value ( Value of Object Sid ) obtained as a result of the query using the Windows API <strong><a href="http://msdn.microsoft.com/en-us/library/cc234496(PROT.10).aspx">LsarLookupSids3</a></strong> . The <strong>LsarLookupSids3</strong> method translates a batch of <a href="http://msdn.microsoft.com/en-us/library/cc232142(PROT.10).aspx#security_principal">security principal</a> <a href="http://msdn.microsoft.com/en-us/library/cc232142(PROT.10).aspx#sid">SIDs</a> to their name forms.&nbsp; Once this is successful we move forward in the query process else fail to display names. </font> <p><font size="2"></font>&nbsp; <p><font size="2">After the the LDAP response is received &amp; successful verification of the user via ObjectSid&nbsp; , a lot more is done&nbsp; before the result is displayed in the PeoplePicker UI . For details on what is the actual process flow &amp; stuff happening in the SQL server in terms of Stored procedures being executed in the background etc,&nbsp; please refer to the following links from Microsoft TechNet . </font> <p><font size="2"></font> <p><a href="http://msdn.microsoft.com/en-us/library/dd303522(PROT.13).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd303522(PROT.13).aspx"><font size="2">Active Directory: People Picker Check Name UI</font></a><font size="2"> </font> <p><a href="http://msdn.microsoft.com/en-us/library/dd357076(PROT.13).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd357076(PROT.13).aspx"><font size="2">Active Directory: People Picker Browse Display UI</font></a><font size="2"> </font> <p><font size="2"></font> <p><font size="2"><strong></strong></font>&nbsp; <p><font size="2"><strong>References :</strong> </font> <p><a href="http://msdn.microsoft.com/en-us/library/cc234496(PROT.10).aspx">LsarLookupSids3</a> <p><a href="http://msdn.microsoft.com/en-us/library/cc234492(PROT.10).aspx">LsarLookupNames4</a>  <p><a href="http://support.microsoft.com/kb/269181" mce_href="http://support.microsoft.com/kb/269181"><font size="2">How to query Active Directory by using a bitwise filter</font></a><font size="2"> </font> <p><a href="http://msdn.microsoft.com/en-us/library/ms677935(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms677935(VS.85).aspx"><font size="2">Searching for Groups by Scope or Type in a Domain</font></a><font size="2"> </font> <p><font size="2"></font> <p><font size="2"><strong>I will be covering how to configure PeoplePicker to query Additional forest or Domains in the next post &amp; Troubleshooting People Picker Issues in the subsequent ones . So keep watching for this Space</strong> </font> <p><font size="2"></font></p> <p>&nbsp;</p> <p><strong><a href="http://blogs.msdn.com/rajank/archive/2009/09/20/all-you-want-to-know-about-people-picker-in-sharepoint-functionality-configuration-troubleshooting-part-2.aspx">All you want to know about People Picker in SharePoint ( Functionality | Configuration | Troubleshooting ) Part-2</a></strong></p>]]></content:encoded>
    </item>
  </channel>
</rss>