<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Sean Gerlinger’s Visual KB</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/seanger/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/seanger/feed.xml</link>
    <description>Microsoft | SharePoint Engineer</description>
    <lastBuildDate>Tue, 16 Apr 2019 06:16:27 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Configuring SharePoint Apps or Add-ins with SSL encryption</title>
      <link>https://docs.microsoft.com/archive/blogs/seanger/configuring-sharepoint-apps-or-add-ins-with-ssl-encryption</link>
      <pubDate>Fri, 23 Feb 2018 18:30:31 GMT</pubDate>
      <dc:creator><![CDATA[Sean Gerlinger]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/seanger/?p=355</guid>
      <description><![CDATA[If you are trying to configure SharePoint Add-ins or Apps on a farm that has multiple web...]]></description>
      <content:encoded><![CDATA[If you are trying to configure SharePoint Add-ins or Apps on a farm that has multiple web applications using SSL encryption. It can be a bit of challenge to understand how to configure the App domain to work with SSL. Now that we can use <strong>Server Name Indication (SNI)</strong> since IIS 8.0. We can have multiple SSL certificates bound to one port in IIS for each IIS site. No need to have multiple IP addresses on the web front end servers anymore. Below I go through each configuration step briefly to help you understand how to set a SharePoint farm to use Add-in or Apps.

<strong><span style="font-size: 16pt">Certificates</span>
</strong>You will need one SSL wildcard certificate for your app domain web application and one standard SSL certificate for each of your web applications that will be using SSL encryption.

<strong>Step 1 – App Domain wildcard SSL endpoint certificate.
</strong>You will need to have a SSL wildcard certificate generated for your App Domain. I'm using <strong>*.contosoapps.com</strong> for the friendly name in this example.<strong>
</strong>

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022418_0030_Configuring1.png" />

<strong>Step 2- All Other Web Applications using SSL certificates.
</strong>You will also need to have a Web applications SSL certificates generated with their friendly name for all your Web applications that will be using SSL encryption. I'm using <strong>portal.contoso.com</strong> in this example.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022418_0030_Configuring2.png" />

<span style="font-size: 16pt"><strong>DNS</strong></span>
You will need a forward lookup zone in DNS for the App Domain with a wildcard Host record.

<strong>Step 1</strong> – Create a forward lookup zone in your DNS for your App domain. I'm using <strong>ContosoApps.com</strong> in my example.

<strong>Step 2</strong> – Create a Host (A) record in the forward lookup zone with a wildcard pointing to your SharePoint web application's VIP or server's IP address depending on how you have web application configured. In this example, I'm pointing the wildcard Host record to my SharePoint server's IP address since I'm not using a VIP.<strong>
</strong>

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022418_0030_Configuring3.png" />

<span style="font-size: 16pt"><strong>SharePoint
</strong></span>Continue with the steps below to configure the SharePoint portion for Apps and Add-ins.

<strong>Step 1 - App Management and Subscription Service applications
</strong>We need to make sure we have a App Management and Subscription service application running in the farm. If not, create them using the PowerShell scripts listed below:

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022418_0030_Configuring4.png" />

<b>App Management service</b> <b>application</b> – To create a App Management service application with PowerShell, use the script below.

&nbsp;
<p style="margin-left: 36pt"><span style="color: #0070c0">$AppPool = Get-SPServiceApplicationPool "SharePoint Web Services Default"
$App = New-SPAppManagementServiceApplication -ApplicationPool $AppPool -Name "App Management" -DatabaseName AppManagement_DB
$proxy = New-SPAppManagementServiceApplicationProxy -ServiceApplication $App -Name "App Management Proxy"
</span></p>
&nbsp;

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022418_0030_Configuring5.png" />

<strong>Subscription Settings service application</strong> – To create the Subscription service, you must use a PowerShell script to create it. Use the script below.

&nbsp;
<p style="margin-left: 36pt"><span style="color: #0070c0">$AppPool = Get-SPServiceApplicationPool "SharePoint Web Services Default"
$Sub = New-SPSubscriptionSettingsServiceApplication -ApplicationPool $AppPool -Name "Subscription Settings" -DatabaseName SettingsService_DB
$proxy = New-SPSubscriptionSettingsServiceApplicationProxy -ServiceApplication $Sub</span></p>
&nbsp;

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022418_0030_Configuring6.png" />

<strong>Step 2 - App Management and the Subscription Settings services</strong>
Make sure the App Management and the Subscription Settings services are running at least on one of the servers in the farm by checking in <strong>Central Administration\System Settings\Manage Services on server</strong>. Start them both if they are not started.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022418_0030_Configuring7.png" />

<strong>Step 3 - Configure App URLs
</strong>Now we need to<b> </b>set your App domain and the App prefix for your URLs. Navigate to <strong>Central Administration\Apps\Configure App URLs</strong> to configure these settings.

<strong>App domain</strong> – Enter the name of your app domain, usually it's your domain+apps. See the example below.
<strong>App prefix</strong> – This will be the app prefix added to the applications URL

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022418_0030_Configuring8.png" />

<strong>Step 4 - App Domain Web application</strong>
We need to create a web application for the App Domain that does not have a Host Header configured and will only be accessed by the Apps. We will bind the App Domain's SSL wildcard certificate to the IIS site once we create it.
<p style="margin-left: 36pt"><strong>Name</strong> – Give your App domain web application a name
<strong>Port </strong>– Use port 443 for SSL
<strong>Host Header</strong> – Leave the Host Header blank, we need to be able to access this site with any name.
<strong>Use Secure Sockets Layer (SSL)</strong> - Yes</p>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022418_0030_Configuring9.png" />

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022418_0030_Configuring10.png" />

<strong>Step 5 - App domain wildcard SSL certificate
</strong>Bind the App domain's wildcard SSL certificate to your new app domain web application using IIS manager on your web server. You will need to repeat this on all your SharePoint web front end servers in the farm.

<strong>Note</strong> – Please make sure you have no Host name configured and bind your certificate to your site.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022418_0030_Configuring11.png" />

<strong>Step 6 - SharePoint Web applications</strong>
Now that you have the farm configured for SharePoint Add-ins and Apps. You can create a SSL web application or extend an existing web application to use SSL and Host Headers like my example below.
<p style="margin-left: 36pt"><strong>Name</strong> – Enter a name for you web application
<strong>Port </strong>– 443
<strong>Host Header</strong> – Enter a Host Header for you site, should match the friendly name of the SSL certificate.
<strong>Use Secure Sockets Layer (SSL)</strong> - Yes</p>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022418_0030_Configuring12.png" />

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022418_0030_Configuring13.png" />

<strong>Step 6 –</strong> Bind the Web applications SSL certificate to its IIS site.
Make sure the Host name is correct and check the box for "<strong>Require Server Name Indication</strong>". Next bind the correct SSL certificate to the site that matches the Host name.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022418_0030_Configuring14.png" />

<span style="font-size: 16pt"><strong>SAML Authentication configuration notes (Don't do if you are not using SAML Authentication)
</strong></span>If the SharePoint web applications is configured to use SAML authentication. You will need to perform these extra steps below to allow your SharePoint Apps and Add-ins to be authenticated correctly.<span style="font-size: 16pt"><strong>
</strong></span>

<strong>Step 1 - UseWReplyParameter</strong>

You will need to enable <strong>UseWReplyParameter</strong> in the SharePoint SAML configuration on your SharePoint farm by using the following PowerShell script.

<strong>Note –</strong> Update the name of your Trusted Identity provider before running the script below.
<p style="margin-left: 36pt"><span style="color: #0070c0">$ap = Get-SPTrustedIdentityTokenIssuer "<span style="background-color: yellow">ADFS</span>"
$ap.UseWReplyParameter = $true
$ap.Update()
</span></p>
<strong>Step 2 - Identity Provider extra configuration
</strong>Your web application's relying party will need to have an extra Passive Endpoints for you Apps URLs. In my example below, I'm using ADFS as my claim provider and added the endpoint <a href="https://*.contosoapps.com/_trust/">https://*.contosoapps.com/_trust/</a> to my URL list of endpoints. Depending on your claim provider, it might be called something else. This will allow SAML authentication to work with your SharePoint apps and add-ins.

&nbsp;

<strong>ADFS Relying party example: https://*.contosoapps.com/_trust/
</strong>

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022418_0030_Configuring15.png" />]]></content:encoded>
    </item>
    <item>
      <title>SharePoint – Using PowerShell to query the userinfo table</title>
      <link>https://docs.microsoft.com/archive/blogs/seanger/sharepoint-using-powershell-to-query-the-userinfo-table</link>
      <pubDate>Wed, 21 Feb 2018 18:11:19 GMT</pubDate>
      <dc:creator><![CDATA[Sean Gerlinger]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/seanger/?p=195</guid>
      <description><![CDATA[If you are a SharePoint engineer that needs to collect the user's information for a site collection...]]></description>
      <content:encoded><![CDATA[If you are a SharePoint engineer that needs to collect the user's information for a site collection straight from the content database and you don't have access to SQL. You can use a PowerShell script like below to query the content database for your site collection and all its users. It will provide you with the list of users from the site collection's userinfo table along with the authentication format of the user's account. This will help you troubleshoot permissions issues with users that have been added incorrectly or a failed migration.

<strong>Note -</strong> To run the script, update the site collection in <span style="background-color: yellow">Yellow</span> below with the site collection you are troubleshooting. It will output the data to the screen and to a file called userinfo.txt in the local path.

&nbsp;
<h6 style="background: white"><span style="color: darkgreen;font-family: Lucida Console;font-size: 9pt">###############################################################################</span><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: darkred">
</span></span><span style="color: darkgreen;font-family: Lucida Console;font-size: 9pt"># This script will return all the users in the Site collection's userinfo table
</span><span style="color: darkgreen;font-family: Lucida Console;font-size: 9pt"># This output will show the user accounts and their authentication format
</span><span style="color: darkgreen;font-family: Lucida Console;font-size: 9pt"># Update the site collection below with your site collection
</span><span style="color: darkgreen;font-family: Lucida Console;font-size: 9pt">###############################################################################</span></h6>
<h6 style="background: white"><span style="color: darkgreen;font-family: Lucida Console;font-size: 9pt"></span><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: orangered">$sitecollection</span> <span style="color: darkgray">= </span><span style="color: darkred">"</span><span style="background-color: yellow">https://www.contoso.com/sites/site1</span><span style="color: darkred">"</span></span></h6>
<h6 style="background: white"><span style="color: darkgreen;font-family: Lucida Console;font-size: 9pt">###############################################################################
Add-PSSnapin "Microsoft.SharePoint.PowerShell"</span><span style="color: orangered;font-family: Lucida Console;font-size: 9pt">
</span><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: orangered">$site</span> <span style="color: darkgray">=</span> <span style="color: blue">get-spsite </span><span style="color: orangered">$sitecollection
</span></span><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: orangered">$siteid</span> <span style="color: darkgray">=</span> <span style="color: orangered">$site<span style="color: darkgray">.</span>ID
</span></span><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: orangered">$DBServer</span> <span style="color: darkgray">=</span> <span style="color: orangered">$site<span style="color: darkgray">.</span>Contentdatabase<span style="color: darkgray">.</span>server
</span></span><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: orangered">$Database</span> <span style="color: darkgray">=</span> <span style="color: orangered">$site<span style="color: darkgray">.</span>Contentdatabase<span style="color: darkgray">.</span>name</span></span></h6>
<h6 style="background: white"><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: orangered"></span></span><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: darkblue">function</span> <span style="color: blueviolet">Run-SQLQuery</span> (<span style="color: orangered">$SqlServer<span style="color: darkgray">,</span> $SqlDatabase<span style="color: darkgray">,</span> $SqlQuery</span>)
</span><span style="font-family: Lucida Console;font-size: 9pt">{
</span><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: orangered">$SqlConnection</span> <span style="color: darkgray">=</span> <span style="color: blue">New-Object</span> <span style="color: blueviolet">System.Data.SqlClient.SqlConnection
</span></span><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: orangered">$SqlConnection<span style="color: darkgray">.</span>ConnectionString <span style="color: darkgray">=</span> <span style="color: darkred">"Server ="</span> <span style="color: darkgray">+</span> $SqlServer</span> <span style="color: darkgray">+</span> <span style="color: darkred">"; Database ="</span> <span style="color: darkgray">+</span> <span style="color: orangered">$SqlDatabase</span> <span style="color: darkgray">+</span> <span style="color: darkred">"; Integrated Security = True"
</span></span><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: orangered">$SqlCmd</span> <span style="color: darkgray">=</span> <span style="color: blue">New-Object</span> <span style="color: blueviolet">System.Data.SqlClient.SqlCommand
</span></span><span style="color: orangered;font-family: Lucida Console;font-size: 9pt">$SqlCmd<span style="color: darkgray">.</span>CommandText <span style="color: darkgray">=</span> $SqlQuery
</span><span style="color: orangered;font-family: Lucida Console;font-size: 9pt">$SqlCmd<span style="color: darkgray">.</span>Connection <span style="color: darkgray">=</span> $SqlConnection
</span><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: orangered">$SqlAdapter</span> <span style="color: darkgray">=</span> <span style="color: blue">New-Object</span> <span style="color: blueviolet">System.Data.SqlClient.SqlDataAdapter
</span></span><span style="color: orangered;font-family: Lucida Console;font-size: 9pt">$SqlAdapter<span style="color: darkgray">.</span>SelectCommand <span style="color: darkgray">=</span> $SqlCmd
</span><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: orangered">$DataSet</span> <span style="color: darkgray">=</span> <span style="color: blue">New-Object</span> <span style="color: blueviolet">System.Data.DataSet
</span></span><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: orangered">$SqlAdapter<span style="color: darkgray">.</span>Fill($DataSet</span>)
</span><span style="color: orangered;font-family: Lucida Console;font-size: 9pt">$SqlConnection<span style="color: darkgray">.</span>Close()
</span><span style="color: orangered"><span style="font-family: Lucida Console;font-size: 9pt">$DataSet<span style="color: darkgray">.</span>Tables<span style="color: darkgray">[<span style="color: purple">0<span style="color: darkgray">]
</span></span></span></span></span><span style="font-family: Lucida Console;font-size: 9pt">}</span></h6>
<h6 style="background: white"><span style="font-family: Lucida Console;font-size: 9pt"></span><span style="font-family: Lucida Console;font-size: 9pt"></span><span style="color: darkgreen;font-family: Lucida Console;font-size: 9pt"># File output to UserInfo.txt in the local folder
</span><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: blue">Run-SQLQuery</span> <span style="color: navy">-SqlServer</span> <span style="color: orangered">$DBServer</span> <span style="color: navy">-SqlDatabase</span> <span style="color: orangered">$Database</span> <span style="color: navy">-SqlQuery</span> <span style="color: darkred">"SELECT [tp_Login],[Tp_Title],[tp_Email],[tp_deleted] FROM Userinfo where tp_SiteID like '<span style="color: orangered">$siteid<span style="color: darkred">'"</span> <span style="color: darkgray">|</span> <span style="color: blue">out-file</span> <span style="color: blueviolet">UserInfo.txt</span> <span style="color: navy">-append</span></span></span></span></h6>
<h6 style="background: white"><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: darkred"><span style="color: orangered"><span style="color: navy"></span></span></span></span><span style="color: darkgreen;font-family: Lucida Console;font-size: 9pt"># Screen output
</span><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: blue">Run-SQLQuery</span> <span style="color: navy">-SqlServer</span> <span style="color: orangered">$DBServer</span> <span style="color: navy">-SqlDatabase</span> <span style="color: orangered">$Database</span> <span style="color: navy">-SqlQuery </span><span style="color: darkred">"SELECT [tp_Login],[Tp_Title],[tp_Email],[tp_deleted] FROM Userinfo where tp_SiteID like '<span style="color: orangered">$siteid<span style="color: darkred">'"</span></span></span></span></h6>
<h6 style="background: white"><span style="font-family: Lucida Console;font-size: 9pt"><span style="color: darkred"><span style="color: orangered"><span style="color: darkred"></span></span></span></span><span style="color: darkgreen;font-family: Lucida Console;font-size: 9pt">##############################################################################</span></h6>
<h6><span> </span></h6>
<img width="922" height="268" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/022218_0011_SharePointU1.png" />]]></content:encoded>
    </item>
    <item>
      <title>SharePoint – Troubleshooting “Access denied” issues when using SAML authentication</title>
      <link>https://docs.microsoft.com/archive/blogs/seanger/sharepoint-troubleshooting-access-denied-issues-when-using-saml-authentication</link>
      <pubDate>Mon, 29 Jan 2018 18:42:42 GMT</pubDate>
      <dc:creator><![CDATA[Sean Gerlinger]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/seanger/?p=155</guid>
      <description><![CDATA[Are SharePoint users getting the message "Sorry, this site hasn't been shared with you." when trying...]]></description>
      <content:encoded><![CDATA[Are SharePoint users getting the message "<strong>Sorry, this site hasn't been shared with you</strong>." when trying to give them access to a SharePoint site that uses SAML authentication? Below I explain some of the common mistakes that administrators make when giving users permissions to a SharePoint site that is using SAML authentication.

<span style="font-size: 14pt"><strong>Giving users access to SharePoint using SAML</strong></span>
When using SAML claims with SharePoint, depending on your SAML configuration. You can give your users access either by using the user's identity claim or Group/Role claim. Below I go over both methods.

<span style="font-size: 12pt"><strong>Giving access using the Identity claim of the user</strong></span>
To give access using the user's Identity claim, you first need to determine which claim is configured as the Identity claim in your SharePoint farm. This is the special claim that SharePoint uses to identify the user. If you are not sure which claim has been configured to be the identity claim in your farm. Then run the following PowerShell script on one of your SharePoint servers using the SharePoint Management Shell. In the screen shot below you can see that my identity claim is "<strong>E-Mail Address</strong>". In other cases, it might be configured as the UPN, SamAccount, or some other type of claim used for identifying the user.

<span style="color: #0070c0">Get-SPTrustedIdentityTokenIssuer</span> | % {<span style="color: #c00000">$_</span>.IdentityClaimTypeInformation}

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/013018_0042_SharePointT1.png" />

Now that you have found your identity claim type. We need to determine if the user is getting added to the site correctly.
If you do not have a custom claim provider configured on your farm. It is important to understand that it is very easy to add the user in-correctly to SharePoint. SharePoint will not validate the user against the identity provider like you are used to when using Windows claims. This means you must enter the user's identity claim correctly without typos.

<strong>Incorrectly adding the user
</strong>Since my farm doesn't have a custom claim provider configured, I can accidently add the user in correctly. I should be using the E-Mail address claim and not something like the users display name.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/013018_0042_SharePointT2.png" />
<strong>
</strong>

<strong>Correctly adding the user
</strong>When picking your user, make sure you select the user in the list that has the identity claim and not some other claim that is not the user's identity claim. In the screen shot below I am choosing the user with the E-Mail claim by hovering over it to see the claim type.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/013018_0042_SharePointT3.png" />

<span style="font-size: 12pt"><strong>Giving access by using a Group/Role claim
</strong></span>Depending on your custom claim provider, you might call your groups "Roles" or "Groups. They are both the same thing. Using the group/role claim can be just as tricky because they can come in a few different formats. Depending on the custom claim provider configuration, you could be using one of a few formats for groups. For example, they might be in the format as "domain\group name" or just "group name" without the domain name. Below I show examples of a few group format examples.
<strong>
</strong>

<strong>Unique Group name – "<span style="color: #002060">Group A</span>"
</strong>

<strong>    <img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/013018_0042_SharePointT4.png" />
</strong>

<strong>Domain name with group name – "<span style="color: #002060">Contoso\Group A</span>"
</strong>

<strong>    <img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/013018_0042_SharePointT5.png" /></strong>

If you are not sure what format your Group/Role claim is in. You can capture a Fiddler trace of the user to collect SAML token being created for the user. There we can determine if we are using the right claim format. See the next section below.

<strong><span style="font-size: 14pt">Collecting the SAML token with a Fiddler trace</span>
</strong>If you have determined that you are correctly giving your user permissions either by the identity claim or by Group/Role claim. We can take a Fiddler trace from the user's workstation during the login process to the SharePoint site. You can validate what claims your custom claim provider is provider to the SharePoint server on for the user.

<strong>Step 1</strong> – Download and install the Fiddler application to the user's workstation - <a href="https://www.telerik.com/download/fiddler">Fiddler Download Here</a>. Installing Fiddler is straight forward, just go through the install wizard selecting Yes to all the menus till its completed.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/013018_0042_SharePointT6.png" />

<strong>Step 2</strong> – Once you have Fiddler installed, start the Fiddler application. Next make sure you enable HTTPS so we can decrypt the SSL packets. To do so, select "<strong>Tools/Options</strong>" on the Ribbon, then select the "<strong>HTTPS</strong>" tab. Check the box next to "<strong>Capture HTTPS CONNECTs</strong>" and the box next to "<strong>Decrypt HTTPS traffic</strong>". Select OK to complete the configuration.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/013018_0042_SharePointT7.png" />

<strong>Step 3</strong> – To start and stop the capturing, you can click on File in the top ribbon and select "<strong>Capturing Traffic</strong>" or by clicking "<strong>F12</strong>". When it's capturing you will see the words "<strong>Capturing</strong>" in the lower left corner.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/013018_0042_SharePointT8.png" />

<strong>Step 4</strong> – Once you have Fiddler capturing, have the user log in to the SharePoint site using Internet Explorer. The user should be re-directed to the custom claim provider for authentication. <strong>
</strong>

<strong>    <img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/013018_0042_SharePointT9.png" />
</strong>

<strong>Step 5 – </strong>Once the user gets the error message, stop the Fiddler trace by pressing <strong>F12</strong>.<strong>
</strong>

<strong>    <img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/013018_0042_SharePointT10.png" />
</strong>

<strong>Step 6 – </strong>Now review the Fiddler trace looking for the URL that contains "<strong>/_trust/</strong>". See my screen shot below. You can see in frames 2 through 5 the user accessed the SharePoint site and was re-directed to the custom claim provider in frames 7 through 9. Frame 10 is where we get the SAML token that was generated by the custom claim provider. Select the "Inspectors" tab and then the "<strong>WebForms</strong>" tab. Locate the "<strong>wresult</strong>" section and copy everything opposite from it in the value Colum. <strong>
</strong>

<strong>    <img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/013018_0042_SharePointT11.png" />
</strong>

<strong>Step 7 – </strong>Paste the contents into a Notepad and save it as a XML file, see below. Be sure to switch your Save as type to "<strong>All Files (*.*)</strong>".

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/013018_0042_SharePointT12.png" /><strong>
</strong>

<strong>Step 8 – </strong>Open the saved XML file using your web browser. Reviewing the information in the SAML token you can see the claims provided by your custom claim provider.

<strong>    <img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/013018_0042_SharePointT13.png" />
</strong>

<strong>SAML token explained:
</strong><span style="color: white"><span style="background-color: green">GREEN Box<span style="background-color: #ffffff"> </span></span></span>– Here you can see the email address identity claim for the user. This is the claim we are looking for when identifying the user. When giving this account permission to the SharePoint site, it has to be in the same format as found in the Fiddler trace above..
<span style="color: white"><span style="background-color: blue">BLUE Box<span style="background-color: #ffffff"> </span></span></span>– Here you can find the role claims for the user. Take note of the format of the role claims in your SAML token, this is the format you should use when adding it to your SharePoint site with people picker.
<span style="background-color: yellow">YELLOW Box</span> – Here we can find the SAML Life time by subtracting the Created time from the Expired time. This value is set by the claim provider. In this example its set for 1 hour.

<strong>STEP 9 – </strong>Using the information in the SAML token you can validate if you are giving the user permission correctly to the SharePoint site using the correct identity or Group/Role claims. Try re-adding the user to the site collection using one of the claims found in the users SAML token captured in the Fiddler trace and have the user test again. Once you get the right claim added the user should be able to access the SharePoint site successfully.

<strong>Note – </strong>If you do not see the correct claim information in the SAML token. Then there must be a configuration problem with your custom claim provider.]]></content:encoded>
    </item>
  </channel>
</rss>