<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>MSFTRSProdSamples Wiki &amp; Documentation Rss Feed</title><link>http://www.codeplex.com/MSFTRSProdSamples/Wiki/View.aspx?title=Home</link><description>MSFTRSProdSamples Wiki Rss Description</description><item><title>Updated Wiki: SS2008R2!Security Extension Sample</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008R2!Security Extension Sample&amp;version=8</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;Readme_Security Extension Sample&lt;/h2&gt;
8/22/2011&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;This sample works only with SQL Server 2008 R2. It will not work with any version of SQL Server earlier than SQL Server 2008 R2. &lt;br /&gt;The CustomSecurity sample security extension uses Forms Authentication along with SQL Server to provide a custom security model that works with Reporting Services. This sample is not supported on Itanium-based operating systems.&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Before you begin:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; If you plan to build the sample in &lt;b&gt;Debug&lt;/b&gt; mode, you must comment out the following line of code. If you don&amp;#39;t, the sample compiles without error, but the Report Manager page does not appear when you use the sample.  &lt;br /&gt;&lt;br /&gt;System.Diagnostics.Debug.Assert(false, &amp;quot;Warning: userIdentity is null! Modify your code if you wish to support anonymous logon.&amp;quot;);&lt;br /&gt;&lt;br /&gt;The line of code is in the GetUserInfo function in AuthenticationExtension.cs. &lt;br /&gt;&lt;br /&gt;public void GetUserInfo(out IIdentity userIdentity, out IntPtr userId)&lt;br /&gt;      {&lt;br /&gt;         if (HttpContext.Current != null&lt;br /&gt;               &amp;amp;&amp;amp; HttpContext.Current.User != null)&lt;br /&gt;         {&lt;br /&gt;               userIdentity = HttpContext.Current.User.Identity;&lt;br /&gt;         }&lt;br /&gt;         else&lt;br /&gt;         {&lt;br /&gt;             userIdentity = null;&lt;br /&gt;             System.Diagnostics.Debug.Assert(false, &amp;quot;Warning: userIdentity is null! Modify your code if you wish to support anonymous logon.&amp;quot;);&lt;br /&gt;             throw new NullReferenceException(&amp;quot;Anonymous logon is not configured. userIdentity should not be null!&amp;quot;);&lt;br /&gt;         }&lt;br /&gt;           userId = IntPtr.Zero;&lt;br /&gt;      }&lt;br /&gt;         &lt;br /&gt;This happens only when you build in &lt;b&gt;Debug&lt;/b&gt; mode, you do not need to make this change if you build in &lt;b&gt;Release&lt;/b&gt; mode. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;02/28/2012&lt;br /&gt;&lt;br /&gt;** If you have more than one instance of reporting service, then the below code change is mandatory.&lt;br /&gt;&lt;br /&gt;Comment out the existing function &amp;quot;&lt;b&gt;internal static string GetReportServerUrl(string machineName, string instanceName)&lt;/b&gt;&amp;quot; in the file &amp;quot;&lt;b&gt;AuthenticationUtilities.cs&lt;/b&gt;&amp;quot;.&lt;br /&gt;&lt;br /&gt;Next, copy and paste the below function code just below the commented out section in the &amp;quot;&lt;b&gt;AuthenticationUtilities.cs&lt;/b&gt;&amp;quot; file.&lt;br /&gt;&lt;br /&gt;This code will ensure that the correctly configured FBA instance URL&amp;#39;s are picked up when performing a WMI lookup.&lt;br /&gt;&lt;br /&gt;internal static string GetReportServerUrl(string machineName, string instanceName)&lt;br /&gt;      {&lt;br /&gt;          string reportServerVirtualDirectory = String.Empty;&lt;br /&gt;          string fullWmiNamespace = @&amp;quot;\\&amp;quot; + machineName + string.Format(wmiNamespace, instanceName);&lt;br /&gt; &lt;br /&gt;          ManagementScope scope = null;&lt;br /&gt; &lt;br /&gt;          ConnectionOptions connOptions = new ConnectionOptions();&lt;br /&gt;          connOptions.Authentication = AuthenticationLevel.PacketPrivacy;&lt;br /&gt; &lt;br /&gt;          //Get management scope&lt;br /&gt;          try&lt;br /&gt;          {&lt;br /&gt;              scope = new ManagementScope(fullWmiNamespace, connOptions);&lt;br /&gt;              scope.Connect();&lt;br /&gt; &lt;br /&gt;              //Get management class&lt;br /&gt;              ManagementPath path = new ManagementPath(&amp;quot;MSReportServer_Instance&amp;quot;);&lt;br /&gt;              ObjectGetOptions options = new ObjectGetOptions();&lt;br /&gt;              ManagementClass serverClass = new ManagementClass(scope, path, options);&lt;br /&gt; &lt;br /&gt;              serverClass.Get();&lt;br /&gt; &lt;br /&gt;              if (serverClass == null)&lt;br /&gt;                  throw new Exception(string.Format(CultureInfo.InvariantCulture,&lt;br /&gt;                    CustomSecurity.WMIClassError));&lt;br /&gt; &lt;br /&gt;              //Get instances&lt;br /&gt;              ManagementObjectCollection instances = serverClass.GetInstances();&lt;br /&gt; &lt;br /&gt;              foreach (ManagementObject instance in instances)&lt;br /&gt;              {&lt;br /&gt;                  instance.Get();&lt;br /&gt;//We&amp;#39;re doing this comparison just to make sure we&amp;#39;re validating the right instance.&lt;br /&gt;                  //This comparison is more reliable as we do the comparison on the instance name rather&lt;br /&gt;                  //than on any other property.&lt;br /&gt;                  if(instanceName.ToUpper().Equals(&amp;quot;RS_&amp;quot; + instance.GetPropertyValue(&amp;quot;InstanceName&amp;quot;).ToString().ToUpper()))&lt;br /&gt;                  {&lt;br /&gt;                      ManagementBaseObject outParams = (ManagementBaseObject)instance.InvokeMethod(&amp;quot;GetReportServerUrls&amp;quot;,&lt;br /&gt;                         null, null);&lt;br /&gt; &lt;br /&gt;                      string[] appNames = (string[])outParams[&amp;quot;ApplicationName&amp;quot;];&lt;br /&gt;                      string[] urls = (string[])outParams[&amp;quot;URLs&amp;quot;];&lt;br /&gt; &lt;br /&gt;                      for (int i = 0; i &amp;lt; appNames.Length; i++)&lt;br /&gt;                      {&lt;br /&gt;                          if (appNames[i] == &amp;quot;ReportServerWebService&amp;quot;)&lt;br /&gt;                          {&lt;br /&gt;                              reportServerVirtualDirectory = urls[i];&lt;br /&gt;                              //Since we only look for ReportServer URL we can safely break here as it would save one more iteration.&lt;br /&gt;                              break;&lt;br /&gt;                          }&lt;br /&gt;                      }&lt;br /&gt;                      break;&lt;br /&gt;                  }&lt;br /&gt;              }&lt;br /&gt;          }&lt;br /&gt;          catch (Exception ex)&lt;br /&gt;          {&lt;br /&gt;              throw new Exception(string.Format(CultureInfo.InvariantCulture,&lt;br /&gt;                  CustomSecurity.RSUrlError + ex.Message), ex);&lt;br /&gt;          }&lt;br /&gt; &lt;br /&gt;          if (reportServerVirtualDirectory == string.Empty)&lt;br /&gt;              throw new Exception(string.Format(CultureInfo.InvariantCulture,&lt;br /&gt;                 CustomSecurity.MissingUrlReservation));&lt;br /&gt; &lt;br /&gt;          return reportServerVirtualDirectory + rsAsmx;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;th&gt; Security Note:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  The security extension sample should not be deployed and tested in a production environment. Reverting back to Windows Authentication after migrating to a different security extension is generally not recommended. If you do, you may experience errors when you attempt to access items in the report server database that have custom security descriptors, but no Windows Authentication security descriptors. To revert, you will have to reinstall Reporting Services and manually re-apply any role-based security for your Windows users. Before using this sample, you should back up your configuration files. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Important:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  Samples are provided for educational purposes only. They are not intended to be used in a production environment and have not been tested in a production environment. Microsoft does not provide technical support for these samples. Sample applications and assemblies should not be connected to or used with your production SQL Server database or your report server without the permission of the system administrator. Microsoft does not provide technical support for these samples. Sample applications and assemblies should not be connected to or used with your production SQL Server database or your report server without the permission of the system administrator.  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Requirements&lt;/h3&gt;You should be familiar with Visual Studio and either Visual C# or Visual Basic and you must have the following applications installed to run the CustomSecurity sample: &lt;br /&gt;
&lt;ul&gt;&lt;li&gt; Microsoft Visual Studio 2008 or later.   &lt;/li&gt;
&lt;li&gt; Microsoft .NET Framework 2.0.  &lt;/li&gt;
&lt;li&gt; SQL Server 2008 R2 including Reporting Services and with SQL Server 2008 R2 CU3 or later applied.  &lt;/li&gt;
&lt;li&gt; Reporting Services samples.   &lt;/li&gt;
&lt;li&gt; A report server that you have permission to access on your network, if you plan to use the sample extension to add additional data processing functionality to your server.  &lt;/li&gt;&lt;/ul&gt;
&lt;table&gt;&lt;tr&gt;&lt;th&gt; Important:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  SQL Server samples and sample databases must be downloaded and installed before you can view or work with them. For more information, see &lt;i&gt;Considerations for Installing SQL Server Samples and Sample Databases&lt;/i&gt;. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Location&lt;/h3&gt;This sample is located by default at:&lt;br /&gt; C:\Program Files\Microsoft SQL Server\100\Samples\Reporting Services\  &lt;span class="codeInline"&gt;Extension Samples\FormsAuthentication Sample&lt;/span&gt; &lt;br /&gt;
&lt;h3&gt;Building the Sample&lt;/h3&gt;You must first compile and install the extension. The procedure assumes that you have installed Reporting Services to the default location: C:\Program Files\Microsoft SQL Server\MSRS10&lt;i&gt;50.MSSQLSERVER\Reporting Services. This location will be referred to throughout the remainder of this topic as &amp;lt;&lt;/i&gt;install_&amp;gt;.&lt;br /&gt;If you have not already created a strong name key file, generate the key file using the following instructions.&lt;br /&gt;
&lt;h5&gt;To generate a strong name key file&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Open a Microsoft Visual Studio prompt. Click &lt;b&gt;Start&lt;/b&gt;, point to &lt;b&gt;All Programs&lt;/b&gt;, point to &lt;b&gt;Microsoft .NET Framework SDK 2.0&lt;/b&gt;, and then click &lt;b&gt;SDK Command Prompt&lt;/b&gt;.-- or --Open a Microsoft .NET Framework command prompt. Click &lt;b&gt;Start&lt;/b&gt;, point to &lt;b&gt;All Programs&lt;/b&gt;, point to &lt;b&gt;Microsoft .NET Framework SDK 2.0&lt;/b&gt;, and then click &lt;b&gt;SDK Command Prompt&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Use the change directory command (CD) to change the current directory of the command prompt window to the folder where the samples are installed. &lt;b&gt;Note: To determine the folder where samples are located, click the &lt;/b&gt;Start* button, point to &lt;b&gt;All Programs&lt;/b&gt;, point to &lt;b&gt;Microsoft SQL Server&lt;/b&gt;, point to &lt;b&gt;Documentation and Tutorials&lt;/b&gt;, and then click &lt;b&gt;Samples Directory&lt;/b&gt;. If the default installation location was used, the samples are located in &amp;lt;system_drive&amp;gt;:\Program Files\Microsoft SQL Server\100\Samples.*&lt;/li&gt;
&lt;li&gt;At the command prompt, run the following command to generate the key file: &lt;span class="codeInline"&gt;sn -k SampleKey.snk&lt;/span&gt;  &lt;b&gt;Important: For more information about the strong-name key pair, see &amp;quot;Security Briefs: Strong Names and Security in the .NET Framework&amp;quot; in the .NET Development Center on MSDN.&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;h5&gt;To compile the sample using Visual Studio&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Open CustomSecurity.sln in Microsoft Visual Studio. If you installed the sample to the default location, you can access it at C:\Program Files\Microsoft SQL Server\100\Samples\Reporting Services\Extensions. &lt;/li&gt;
&lt;li&gt;In Solution Explorer, select the &lt;b&gt;CustomSecurity&lt;/b&gt; project. &lt;/li&gt;
&lt;li&gt;Look at the &lt;b&gt;CustomSecurity&lt;/b&gt; project&amp;#39;s references.  If you do not see Microsoft.ReportingServices.Interfaces.dll, complete steps the following steps:
&lt;ol&gt;&lt;li&gt;On the Project menu, click Add Reference. The Add References dialog box opens. &lt;/li&gt;
&lt;li&gt;Click the .NET tab. &lt;/li&gt;
&lt;li&gt;Click Browse, and find Microsoft.ReportingServices.Interfaces on your local drive. By default, the assembly is located in the &amp;lt;install&amp;gt;\ReportServer\bin directory. Click OK. The selected reference is added to your project. &lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;On the Build menu, click Build Solution. &lt;/li&gt;&lt;/ol&gt;

&lt;h3&gt;Deploying the Sample&lt;/h3&gt;After the sample is compiled, you must copy the DLLs and the ASPX pages to the appropriate subdirectories for your Report Server installation.&lt;br /&gt;
&lt;h5&gt;To deploy the sample&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Copy Microsoft.Samples.ReportingServices.CustomSecurity.dll and Microsoft.Samples.ReportingServices.CustomSecurity.pdb to the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportServer\bin directory. &lt;/li&gt;
&lt;li&gt;Copy Microsoft.Samples.ReportingServices.CustomSecurity.dll and Microsoft.Samples.ReportingServices.CustomSecurity.pdb to the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportManager\bin directory. If a PDB file is Not present, it was Not created by the Build step provided above. Ensure that the Project Properties for Debug/Build is set to generate PDB files. &lt;/li&gt;
&lt;li&gt;Copy the Logon.aspx page to the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportServer directory. &lt;/li&gt;
&lt;li&gt;Copy the UILogon.aspx page to the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportManager\Pages directory. After the assembly and logon pages are copied to the server, you need to make some modifications to the Report Server configuration file.&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Important:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  Make backup copies of all of your configuration files before making any changes. Backup and Restore Operations for a Reporting Services Installation can be looked up from MSDN. http://msdn.microsoft.com/en-us/library/ms155814.aspx is its current URL. Configuration Files (Reporting Services) can be reviewed to get detailed information about the various settings mentioned. Its current URL is http://msdn.microsoft.com/en-us/library/ms155866.aspx.  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;h5&gt;To modify the RSReportServer.config file &lt;/h5&gt;
&lt;ul&gt;&lt;li&gt;Open the RSReportServer.config file with Visual Studio or a simple text editor such as Notepad. RSReportServer.config is located in the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportServer directory. &lt;/li&gt;
&lt;li&gt;Locate the &amp;lt;&lt;b&gt;AuthenticationTypes&lt;/b&gt;&amp;gt; element and modify the settings as follows:   &lt;/li&gt;&lt;/ul&gt;
&amp;lt;Authentication&amp;gt;&lt;br /&gt;&amp;lt;AuthenticationTypes&amp;gt; &lt;br /&gt;&amp;lt;Custom/&amp;gt;&lt;br /&gt;&amp;lt;/AuthenticationTypes&amp;gt;&lt;br /&gt;&amp;lt;EnableAuthPersistence&amp;gt;true&amp;lt;/EnableAuthPersistence&amp;gt;&lt;br /&gt;&amp;lt;/Authentication&amp;gt; 
&lt;ul&gt;&lt;li&gt;Locate the &amp;lt;&lt;b&gt;Security&lt;/b&gt;&amp;gt; and &amp;lt;&lt;b&gt;Authentication&lt;/b&gt;&amp;gt; elements, within the &amp;lt;&lt;b&gt;Extensions&lt;/b&gt;&amp;gt; element, and modify the settings as follows: &lt;/li&gt;&lt;/ul&gt;
&amp;lt;Security&amp;gt;&lt;br /&gt;   &amp;lt;Extension Name=&amp;quot;Forms&amp;quot; &lt;br /&gt;Type=&amp;quot;Microsoft.Samples.ReportingServices.CustomSecurity.Authorization, &lt;br /&gt;Microsoft.Samples.ReportingServices.CustomSecurity&amp;quot; &amp;gt;&lt;br /&gt;      &amp;lt;Configuration&amp;gt;&lt;br /&gt;         &amp;lt;AdminConfiguration&amp;gt;&lt;br /&gt;            &amp;lt;UserName&amp;gt;username&amp;lt;/UserName&amp;gt;&lt;br /&gt;         &amp;lt;/AdminConfiguration&amp;gt;&lt;br /&gt;      &amp;lt;/Configuration&amp;gt;&lt;br /&gt;   &amp;lt;/Extension&amp;gt;&lt;br /&gt;&amp;lt;/Security&amp;gt;&lt;br /&gt;&amp;lt;Authentication&amp;gt;&lt;br /&gt;   &amp;lt;Extension Name=&amp;quot;Forms&amp;quot; &lt;br /&gt;Type=&amp;quot;Microsoft.Samples.ReportingServices.CustomSecurity.AuthenticationExtension,&lt;br /&gt; Microsoft.Samples.ReportingServices.CustomSecurity&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/Authentication&amp;gt; .  For more information regarding .NET Framework security and Reporting Services, see &lt;b&gt;Secure Development (Reporting Services)&lt;/b&gt;. 
&lt;ul&gt;&lt;li&gt;Locate the &amp;lt;&lt;b&gt;UI&lt;/b&gt;&amp;gt; element and update it as follows:  &lt;/li&gt;&lt;/ul&gt;
 &amp;lt;UI&amp;gt;&lt;br /&gt;   &amp;lt;CustomAuthenticationUI&amp;gt;&lt;br /&gt;      &amp;lt;loginUrl&amp;gt;/Pages/UILogon.aspx&amp;lt;/loginUrl&amp;gt;&lt;br /&gt;         &amp;lt;UseSSL&amp;gt;True&amp;lt;/UseSSL&amp;gt;&lt;br /&gt;   &amp;lt;/CustomAuthenticationUI&amp;gt;&lt;br /&gt;   &amp;lt;ReportServerUrl&amp;gt;http://&amp;lt;server&amp;gt;/ReportServer&amp;lt;/ReportServerUrl&amp;gt;&lt;br /&gt;&amp;lt;/UI&amp;gt; &lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Note:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  If you are running the sample security extension in a development environment that does not have a Secure Sockets Layer (SSL) certificate installed, you must change the value of the &lt;b&gt;&amp;lt;UseSSL&amp;gt;&lt;/b&gt; element to &lt;b&gt;False&lt;/b&gt; in the previous configuration entry. We recommend that you always use SSL when combining Reporting Services with Forms Authentication.  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You will need to add a code group for your custom security extension that grants FullTrust permission for your extension. You do this by adding the code group to the RSSrvPolicy.config file.&lt;br /&gt;
&lt;h5&gt;To modify the RSSrvPolicy.config file &lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Open the RSSrvPolicy.config file located in the &amp;lt;install&amp;gt;\ReportServer directory.&lt;/li&gt;
&lt;li&gt;Add the following &amp;lt;&lt;b&gt;CodeGroup&lt;/b&gt;&amp;gt; element after the existing code group in the security policy file that has a URL membership of $CodeGen as indicated below and then add an entry as follows to RSSrvPolicy.config: &lt;/li&gt;&lt;/ul&gt;
 &amp;lt;CodeGroup&lt;br /&gt;   class=&amp;quot;UnionCodeGroup&amp;quot;&lt;br /&gt;   version=&amp;quot;1&amp;quot;&lt;br /&gt;   Name=&amp;quot;SecurityExtensionCodeGroup&amp;quot;&lt;br /&gt;   Description=&amp;quot;Code group for the sample security extension&amp;quot;&lt;br /&gt;   PermissionSetName=&amp;quot;FullTrust&amp;quot;&amp;gt;&lt;br /&gt;   &amp;lt;IMembershipCondition &lt;br /&gt;      class=&amp;quot;UrlMembershipCondition&amp;quot;&lt;br /&gt;      version=&amp;quot;1&amp;quot;&lt;br /&gt;      Url=&amp;quot;C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.CustomSecurity.dll&amp;quot;&lt;br /&gt;   /&amp;gt;&lt;br /&gt;&amp;lt;/CodeGroup&amp;gt; &lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Note:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  For simplicity, the Forms Authentication Sample is weak-named and requires a simple URL membership entry in the security policy files. In your production security extension implementation, you should create strong-named assemblies and use the strong name membership condition when adding security policies for your assembly. For more information about strong-named assemblies, see the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=49255"&gt;Creating and Using Strong-Named Assemblies&lt;/a&gt; topic on MSDN. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next, you will need to increase the permissions for the &amp;quot;My Computer&amp;quot; code group in the Report Manager policy file.&lt;br /&gt;
&lt;h5&gt;To modify the RSMgrPolicy.config file &lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Open the Report Manager policy file, RSMgrPolicy.config, located in the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportManager directory.&lt;/li&gt;
&lt;li&gt;Locate the following code group in RSMgrPolicy.config and change the &lt;b&gt;PermissionSetName&lt;/b&gt; attribute from &lt;b&gt;Execution&lt;/b&gt; to &lt;b&gt;FullTrust&lt;/b&gt; as follows: &lt;/li&gt;&lt;/ul&gt;
 &amp;lt;CodeGroup &lt;br /&gt;        class=&amp;quot;FirstMatchCodeGroup&amp;quot; &lt;br /&gt;        version=&amp;quot;1&amp;quot; &lt;br /&gt;        PermissionSetName=&amp;quot;FullTrust&amp;quot;&lt;br /&gt;        Description=&amp;quot;This code group grants MyComputer code Execution permission. &amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;IMembershipCondition &lt;br /&gt;            class=&amp;quot;ZoneMembershipCondition&amp;quot;&lt;br /&gt;            version=&amp;quot;1&amp;quot;&lt;br /&gt;            Zone=&amp;quot;MyComputer&amp;quot; /&amp;gt; &amp;quot;}*To use Forms Authentication, you need to modify the Web.config files for Report Manager and Report Server.&lt;br /&gt;
&lt;h5&gt;To modify the Web.config file for Report Server&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Open the Web.config file in a text editor. By default, the file is located in the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportServer directory. &lt;/li&gt;
&lt;li&gt;Locate the &amp;lt;&lt;b&gt;identity&lt;/b&gt;&amp;gt; element and set the &lt;b&gt;Impersonate&lt;/b&gt; attribute to &lt;b&gt;false&lt;/b&gt;.  *  &amp;lt;identity impersonate=&amp;quot;false&amp;quot; /&amp;gt; *&lt;/li&gt;
&lt;li&gt;Locate the &amp;lt;&lt;b&gt;authentication&lt;/b&gt;&amp;gt; element and change the &lt;b&gt;Mode&lt;/b&gt; attribute to &lt;b&gt;Forms&lt;/b&gt;. &lt;/li&gt;
&lt;li&gt;Add the following &amp;lt;&lt;b&gt;forms&lt;/b&gt;&amp;gt; element as a child of the &amp;lt;&lt;b&gt;authentication&lt;/b&gt;&amp;gt; element and set the &lt;b&gt;loginUrl&lt;/b&gt;, &lt;b&gt;name&lt;/b&gt;, &lt;b&gt;timeout&lt;/b&gt;, and &lt;b&gt;path&lt;/b&gt; attributes as follows:  &lt;/li&gt;&lt;/ul&gt;
&amp;lt;authentication mode=&amp;quot;Forms&amp;quot;&amp;gt;&lt;br /&gt;   &amp;lt;forms loginUrl=&amp;quot;logon.aspx&amp;quot; name=&amp;quot;sqlAuthCookie&amp;quot; timeout=&amp;quot;60&amp;quot; &lt;br /&gt;               path=&amp;quot;/&amp;quot;&amp;gt;&amp;lt;/forms&amp;gt;&lt;br /&gt;   &amp;lt;/authentication&amp;gt; 
&lt;ul&gt;&lt;li&gt;Add the following &amp;lt;&lt;b&gt;authorization&lt;/b&gt;&amp;gt; element directly after the &amp;lt;&lt;b&gt;authentication&lt;/b&gt;&amp;gt; element.  &lt;/li&gt;&lt;/ul&gt;
 &amp;lt;authorization&amp;gt; &lt;br /&gt;   &amp;lt;deny users=&amp;quot;?&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/authorization&amp;gt;.      &lt;br /&gt;&lt;br /&gt;This will deny unauthenticated users the right to access the report server. The previously established &lt;b&gt;loginUrl&lt;/b&gt; attribute of the &amp;lt;&lt;b&gt;authentication&lt;/b&gt;&amp;gt; element will redirect unauthenticated requests to the Logon.aspx page.&lt;br /&gt;
&lt;h5&gt;To modify the Web.config file for Report Manager&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Open the Web.config for Report Manager. It is located in the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportManager directory. &lt;/li&gt;
&lt;li&gt;Disable impersonation by locating the section &lt;b&gt;&amp;lt;identity impersonate= &amp;quot;true&amp;quot; /&amp;gt;&lt;/b&gt; and changing it to the following: &lt;b&gt;&amp;lt;identity impersonate=&amp;quot;false&amp;quot; /&amp;gt;&lt;/b&gt;. &lt;/li&gt;
&lt;li&gt;Locate the &amp;lt;authentication&amp;gt; element and change the Mode attribute to Forms.&lt;/li&gt;
&lt;li&gt;Add the following keys to the &amp;lt;&lt;b&gt;appSettings&lt;/b&gt;&amp;gt; element. &lt;/li&gt;&lt;/ul&gt;
  &amp;lt;add key=&amp;quot;ReportServer&amp;quot; value=&amp;quot;&amp;lt;Server Name&amp;gt;&amp;quot;/&amp;gt;&lt;br /&gt;  &amp;lt;add key=&amp;quot;ReportServerInstance&amp;quot; value=&amp;quot;&amp;lt;Instance Name&amp;gt;&amp;quot;/&amp;gt; 
&lt;ul&gt;&lt;li&gt;Change the &lt;b&gt;&amp;lt;Server Name&amp;gt;&lt;/b&gt; value to the name of the report server and the &lt;b&gt;&amp;lt;Instance Name&amp;gt;&lt;/b&gt; value to the name of the instance the report server is associated with.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Note: &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; The &amp;lt;Instance Name&amp;gt; for a default instance is RS_MSSQLSERVER.  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;h3&gt;Creating the UserAccounts Database&lt;/h3&gt;The sample includes a database script, Createuserstore.sql, that enables you to set up a user store for the Forms sample in a SQL Server database.&lt;br /&gt;
&lt;h5&gt;To create the UserAccounts database&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Open SQL Server Management Studio, and then connect to your local instance of SQL Server. &lt;/li&gt;
&lt;li&gt;Locate the Createuserstore.sql SQL script file. The script file is contained within the sample project files. &lt;/li&gt;
&lt;li&gt;Run the query to create the  UserAccounts  database. &lt;/li&gt;
&lt;li&gt;Exit SQL Server Management Studio. &lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;
&lt;h3&gt;Testing the Sample&lt;/h3&gt;The following procedure tests the sample extension. You will register an administrator user, which adds the user name, password hash, and salt value to the  users  table in the  UserAccounts  database. It also will require you to enter that user name in the Report Server configuration file. You will then log on the same user to ensure the correct operation of the password verification routines as well as the proper loading of the extension assembly by the report server.&lt;br /&gt;
&lt;h5&gt;To test the sample &lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Restart the Reporting Services service by running the following commands at the command prompt:  *  net stop &amp;quot;SQL Server Reporting Services (&amp;lt;Instance Name&amp;gt;)&amp;quot;&lt;br /&gt;net start &amp;quot;SQL Server Reporting Services (&amp;lt;Instance Name&amp;gt;)&amp;quot; *
&lt;ul&gt;&lt;li&gt;Open Report Manager. You can do this from the Reporting Services program menu or by accessing the Reports virtual directory from your browser. &lt;/li&gt;
&lt;li&gt;Enter a user name and password and click &lt;b&gt;Register User&lt;/b&gt; to add the user to the  accounts  database. &lt;/li&gt;
&lt;li&gt;Open the RSReportServer.config file. Locate the &amp;lt;&lt;b&gt;Security&lt;/b&gt;&amp;gt; element and add the previously registered user name as follows:  &lt;/li&gt;&lt;/ul&gt;
  &amp;lt;Security&amp;gt;&lt;br /&gt;   &amp;lt;Extension Name=&amp;quot;Forms&amp;quot; &lt;br /&gt;Type=&amp;quot;Microsoft.Samples.ReportingServices.CustomSecurity.Authorization, &lt;br /&gt;Microsoft.Samples.ReportingServices.CustomSecurity&amp;quot; &amp;gt;&lt;br /&gt;      &amp;lt;Configuration&amp;gt;&lt;br /&gt;         &amp;lt;AdminConfiguration&amp;gt;&lt;br /&gt;            &amp;lt;UserName&amp;gt;username&amp;lt;/UserName&amp;gt;&lt;br /&gt;         &amp;lt;/AdminConfiguration&amp;gt;&lt;br /&gt;      &amp;lt;/Configuration&amp;gt;&lt;br /&gt;   &amp;lt;/Extension&amp;gt;&lt;br /&gt;&amp;lt;/Security&amp;gt; 
&lt;ul&gt;&lt;li&gt;Return to the UILogon.aspx page, re-enter the user name and password, and then click &lt;b&gt;Logon&lt;/b&gt;. You should have access to Report Manager and the report server with no restrictions. The administrator user that you create has equivalent permissions on the report server to those of a built-in administrator account on the local computer. For the purpose of this sample, you can only have one user designated as an administrator. After you have a built-in administrator account, you can register additional users and assign them roles on the report server.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Note:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  You should add your administrator user to the official System Administrator and Content Manager (root folder) roles of your report server. This prevents empty security descriptors from existing in the report server database. For more information about the System Administrator and Content Manager roles, see &lt;b&gt;Using Predefined Roles&lt;/b&gt;. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Using the Web Service with Custom Security&lt;/h3&gt;You can use the Web service API with Forms Authentication just as you would with Windows Authentication. However, you must call &lt;b&gt;LogonUser&lt;/b&gt; in your Web service code and pass the credentials of the current user. In addition, your Web service client will not have the benefit of automatic cookie management, which is provided by Internet Explorer or other Web browsers. You will have to extend the &lt;b&gt;ReportingService2005&lt;/b&gt; proxy class to include cookie management. This can be done by overriding the &lt;b&gt;GetWebRequest&lt;/b&gt; and &lt;b&gt;GetWebResponse&lt;/b&gt; methods of the Web service class.&lt;br /&gt;
&lt;h3&gt;Debugging the Sample Extension&lt;/h3&gt;Running the sample extension in the debugger is not only a great way to troubleshoot difficulties you may have, but it is also an effective way to step through the code and see the report server authentication and authorization process as it is happening.&lt;br /&gt;The Microsoft .NET Framework provides several debugging tools that can help you analyze the sample code. The following procedure uses Visual Studio to debug the previous sample.&lt;br /&gt;
&lt;h5&gt;To debug the Forms Authentication sample code&lt;/h5&gt;
&lt;ol&gt;&lt;li&gt;Start Visual Studio and open CustomSecurity.sln on your test report server. &lt;/li&gt;
&lt;li&gt;Open Internet Explorer and navigate to Report Manager while leaving the sample code open in Visual Studio. &lt;/li&gt;
&lt;li&gt;Switch to Visual Studio and set some break points in the custom security extension project code. &lt;/li&gt;
&lt;li&gt;With the extension project still the active window, from the &lt;b&gt;Debug&lt;/b&gt; menu, click &lt;b&gt;Process&lt;/b&gt;.The &lt;b&gt;Processes&lt;/b&gt; dialog opens. &lt;/li&gt;
&lt;li&gt;From the list of processes, select the Aspnet_wp.exe process (or W3wp.exe, if your application is deployed on IIS), and click &lt;b&gt;Attach&lt;/b&gt;. &lt;/li&gt;
&lt;li&gt;In the &lt;b&gt;Attach to Process&lt;/b&gt; dialog, select the &lt;b&gt;Common Language Runtime&lt;/b&gt; program type, and then click &lt;b&gt;OK&lt;/b&gt;. For improved debugging performance, make sure that &lt;b&gt;Native&lt;/b&gt; is not a selected program type. &lt;/li&gt;
&lt;li&gt;When the sample runs, a logon form appears. Type the user credentials into the logon form and click the &lt;b&gt;Logon&lt;/b&gt; button. Whenever your break points are encountered during processing, the debugger should stop execution at that point. &lt;/li&gt;
&lt;li&gt;Step through your code using the F11 key. For more information about using Visual Studio for debugging, see your Visual Studio documentation. &lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Note:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  Debugging this way requires a lot of resources and processor time. If you run into difficulties, close Visual Studio, reset IIS, and begin again by attaching the CustomSecurity solution to the ASP.NET worker process and logging on to Report Manager. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Removing the Sample Extension&lt;/h3&gt;While not generally recommended, it is possible to revert back to Windows Authentication after you have tried out the sample. &lt;br /&gt;
&lt;h5&gt;To revert to Windows security&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Restore the following files from your backup copies: Web.config and RSReportServer.config. This should set the authentication and authorization methods for the report server to the default Windows security. This should also remove any entries you made for your extension in the Report Server configuration file. &lt;/li&gt;
&lt;li&gt;After the configuration information is removed, your security extension is no longer available to the report server. You should not have to remove any security descriptors that were created while you were running the report server under the sample security extension. The report server automatically assigns the &lt;b&gt;System Administrator&lt;/b&gt; role to the BUILTIN\Administrators group on the computer hosting the report server when Windows Authentication is enabled. However, you will have to manually re-apply any role-based security for your Windows users.&lt;/li&gt;&lt;/ol&gt;
Note that reverting back to Windows Authentication after migrating to a different security extension is generally not recommended. If you do, you may experience errors when you attempt to access items in the report server database that have custom security descriptors, but no Windows Authentication security descriptors.&lt;br /&gt;
&lt;h3&gt;See Also&lt;/h3&gt;
&lt;h6&gt;Tasks&lt;/h6&gt;&lt;i&gt;Reporting Services Samples&lt;/i&gt;  
&lt;h6&gt;Other Resources&lt;/h6&gt;&lt;i&gt;Extension Samples (Reporting Services)&lt;/i&gt;  &lt;b&gt;Implementing a Security Extension&lt;/b&gt;    
&lt;h6&gt; Help and Information&lt;/h6&gt;&lt;ul&gt;&lt;li&gt;Getting SQL Server 2008 R2 Assistance* &amp;#169; 2011 Microsoft Corporation. All rights reserved.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>sabottaca</author><pubDate>Thu, 28 Feb 2013 23:52:49 GMT</pubDate><guid isPermaLink="false">Updated Wiki: SS2008R2!Security Extension Sample 20130228115249P</guid></item><item><title>New Comment on "SS2008R2!Security Extension Sample"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008R2!Security Extension Sample&amp;ANCHOR#C26234</link><description>I am using SSRS R2 Ent edition&amp;#10;&amp;#10;I faced two issues but able to resolve them luckly,&amp;#10;&amp;#10;&amp;#10;&amp;#10;Issue 1&amp;#58; &amp;#10;&amp;#10;after implementing all changes as described in the readme documentaion,  I tried to access both report manager and report server webservice...&amp;#10;but  I got blank pages&amp;#10;&amp;#10;&amp;#10;&amp;#10;Solution &amp;#58;&amp;#10;&amp;#10;&amp;#10;&amp;#60;&amp;#60;Wookash comments helps here &amp;#62;&amp;#62;&amp;#10;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#10;When setting the &amp;#60;AuthenticationTypes&amp;#62; in rsreportserver.config, you must ensure that the RSWindowsExtendedProtectionLevel and RSWindowsExtendedProtectionScenario elements are preserved, or else you will see an error. Here&amp;#39;s what the final &amp;#60;AuthenticationTypes&amp;#62; element should look like&amp;#58; &amp;#10;&amp;#10;&amp;#60;Authentication&amp;#62;&amp;#10;&amp;#60;AuthenticationTypes&amp;#62; &amp;#10;&amp;#60;Custom&amp;#47;&amp;#62;&amp;#10;&amp;#60;&amp;#47;AuthenticationTypes&amp;#62;&amp;#10;&amp;#60;EnableAuthPersistence&amp;#62;true&amp;#60;&amp;#47;EnableAuthPersistence&amp;#62;&amp;#10;&amp;#60;RSWindowsExtendedProtectionLevel&amp;#62;Off&amp;#60;&amp;#47;RSWindowsExtendedProtectionLevel&amp;#62;&amp;#10;&amp;#60;RSWindowsExtendedProtectionScenario&amp;#62;Proxy&amp;#60;&amp;#47;RSWindowsExtendedProtectionScenario&amp;#62;&amp;#10;&amp;#60;&amp;#47;Authentication&amp;#62;&amp;#10;&amp;#10;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#10;&amp;#10;Issue 2&amp;#58; &amp;#10;&amp;#10; a&amp;#41; Report server webservice URL -- working fine with no issue&amp;#10; b&amp;#41; Report Manager --  &amp;#60;Register&amp;#62; button works, but &amp;#60;Logon&amp;#62; button did not work.. &amp;#10;    Error &amp;#58; Invalid NameSpace ,  An error occurred while attempting to get the ReportServer Url&amp;#10;&amp;#10;&amp;#10;&amp;#10;&amp;#10;Solution &amp;#58;&amp;#10;&amp;#10;&amp;#10;  &amp;#34;Dave Sell - msft&amp;#34;&amp;#39;s  answer from the below forum, Thanks to  &amp;#34;Dave Sell&amp;#34;&amp;#10;&amp;#10;http&amp;#58;&amp;#47;&amp;#47;social.msdn.microsoft.com&amp;#47;Forums&amp;#47;en-US&amp;#47;sqlreportingservices&amp;#47;thread&amp;#47;e90c853b-6018-41b0-9dd1-abd2ac872f16&amp;#47;&amp;#10;&amp;#10;Steps &amp;#10;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#10;Steps to modify the MOF file to fix this issue&amp;#58;&amp;#10; &amp;#10; &amp;#10; &amp;#10;1.       Locate the existing MOF file &amp;#40;example&amp;#58; &amp;#37;ProgamFiles&amp;#37;&amp;#92;Microsoft SQL Server&amp;#92;MSRS10.SQL2008&amp;#92;Reporting Services&amp;#92;ReportServer&amp;#92;bin&amp;#92;reportingservices.mof would be the default location for a Reporting Services instance named SQL2008&amp;#41;.&amp;#10; &amp;#10;2.       Copy this reportingservices.mof to reportingservicesalt.mof &amp;#40;or some other unique name&amp;#41;.&amp;#10; &amp;#10;3.       Notepad reportingservicealt.mof&amp;#10; &amp;#10;4.       Choose edit-&amp;#62;replace&amp;#8230;&amp;#10; &amp;#10;5.       In the dialog, in the Find What&amp;#58; text box enter the modified instance name &amp;#40;for an RS instance named SQL2008, the modified instance name is RS_SQL2008&amp;#41;, in the Replace with&amp;#58; text box enter the instance name unmodified &amp;#40;so for an RS instance named SQL2008, just enter SQL2008&amp;#41;.&amp;#10; &amp;#10;6.       Press the Replace All button.&amp;#10; &amp;#10;7.       Save and close notepad.&amp;#10; &amp;#10;8.       From a command window at the same location as the results of step 1, type MOFCOMP REPORTINSERVICESALT.MOF &amp;#40;or whatever the name from step 2 was&amp;#41;.&amp;#10; &amp;#10; &amp;#10; &amp;#10;Now the configuration tool should work with the following exception, if the RS instance name contains an underscore &amp;#40;_&amp;#41;, a dollar sign &amp;#40;&amp;#36;&amp;#41; or a hash &amp;#40;&amp;#35;&amp;#41;, then step 8 will fail and the user will need to re-install the Reporting Services instance with a name that does not include any of these three characters.&amp;#10;&amp;#10;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#61;&amp;#10;&amp;#10;Thanks to contributors</description><author>SNTKAVIN</author><pubDate>Thu, 17 Jan 2013 16:54:34 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2008R2!Security Extension Sample" 20130117045434P</guid></item><item><title>New Comment on "SS2008R2!Security Extension Sample"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008R2!Security Extension Sample&amp;ANCHOR#C26038</link><description>I am getting this error, and I couldn&amp;#39;t understand the method GetReportServerUrl.&amp;#10;An error occurred while attempting to get the ReportServer Url. Invalid parameter .&amp;#10;&amp;#10;Could you provide any help&amp;#63;</description><author>rajeshkumar1976</author><pubDate>Fri, 28 Dec 2012 05:47:47 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2008R2!Security Extension Sample" 20121228054747A</guid></item><item><title>New Comment on "SS2008!Security Extension Sample"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008!Security Extension Sample&amp;ANCHOR#C25173</link><description>I followed the steps and got to &amp;#34;Testing the Sample&amp;#34; and got stuck, when I access my report via thr URL i get &amp;#34;Service UnavailableHTTP Error 503. The service is unavailable.&amp;#34;&amp;#10;&amp;#10;Any help will be appreciated.&amp;#10;&amp;#10;Thank you,&amp;#10;&amp;#10;Jeremaine</description><author>jeremainejohnson</author><pubDate>Thu, 04 Oct 2012 15:29:22 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2008!Security Extension Sample" 20121004032922P</guid></item><item><title>New Comment on "SS2008!Security Extension Sample"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008!Security Extension Sample&amp;ANCHOR#C24850</link><description>When I attempted to install this sample on SSRS2008 NOT SSRS2008R2 I kept running into an issue...&amp;#10;&amp;#34;Authorization ticket not received by LogonUser&amp;#34; &amp;#10;and &amp;#10;&amp;#34;Client found response content type of &amp;#39;text&amp;#47;html&amp;#59; charset&amp;#61;utf-8&amp;#39;, but expected &amp;#39;text&amp;#47;xml&amp;#39;&amp;#34;&amp;#10;&amp;#10;To fix this I had to add a web reference to &amp;#34;http&amp;#58;&amp;#47;&amp;#47;&amp;#60;Server Name&amp;#62;&amp;#47;ReportServer&amp;#47;ReportService2005.asmx&amp;#34; and change proxy class in UILogon to extend my newly created web reference.  &amp;#34;public class ReportServerProxy&amp;#58; ReportingServices2005.ReportingService2005&amp;#34;&amp;#10;&amp;#10;Also changed this line in AuthenticationUtiliteis &amp;#10;private const string rsAsmx &amp;#61; &amp;#64;&amp;#34;&amp;#47;ReportService2010.asmx&amp;#34;&amp;#59; &amp;#10;to &amp;#10;private const string rsAsmx &amp;#61; &amp;#64;&amp;#34;&amp;#47;ReportService2005.asmx&amp;#34;&amp;#59;.&amp;#10;&amp;#10;The issue is microsoft&amp;#47;codeplex has labeled the 2008r2 example as 2008... &amp;#10;&amp;#10;Hope this helps those who are still using 2008 instead of 2008r2</description><author>SkylerTodd</author><pubDate>Thu, 30 Aug 2012 15:55:54 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2008!Security Extension Sample" 20120830035554P</guid></item><item><title>New Comment on "SS2008!AdventureWorks Sample Reports"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008!AdventureWorks Sample Reports&amp;ANCHOR#C24387</link><description>Good Exmples</description><author>mshankar</author><pubDate>Sun, 15 Jul 2012 12:53:02 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2008!AdventureWorks Sample Reports" 20120715125302P</guid></item><item><title>New Comment on "SS2008R2!Security Extension Sample"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008R2!Security Extension Sample&amp;ANCHOR#C23832</link><description>If you&amp;#39;d like the sample to work with SQL Server 2012 Reporting Services, you will need to change the &amp;#34;v10&amp;#34; in the following line in AuthenticationUtilities.cs file to &amp;#34;v11&amp;#34;&amp;#10;&amp;#10;private const string wmiNamespace &amp;#61; &amp;#64;&amp;#34;&amp;#92;root&amp;#92;Microsoft&amp;#92;SqlServer&amp;#92;ReportServer&amp;#92;&amp;#123;0&amp;#125;&amp;#92;v10&amp;#34;&amp;#59;&amp;#10;&amp;#10;Final line will look like&amp;#58;&amp;#10;private const string wmiNamespace &amp;#61; &amp;#64;&amp;#34;&amp;#92;root&amp;#92;Microsoft&amp;#92;SqlServer&amp;#92;ReportServer&amp;#92;&amp;#123;0&amp;#125;&amp;#92;v11&amp;#34;&amp;#59;</description><author>wookash</author><pubDate>Sun, 27 May 2012 00:42:47 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2008R2!Security Extension Sample" 20120527124247A</guid></item><item><title>New Comment on "SS2008R2!Security Extension Sample"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008R2!Security Extension Sample&amp;ANCHOR#C23831</link><description>When setting the &amp;#60;AuthenticationTypes&amp;#62; in rsreportserver.config, you must ensure that the RSWindowsExtendedProtectionLevel and RSWindowsExtendedProtectionScenario elements are preserved, or else you will see an error. Here&amp;#39;s what the final &amp;#60;AuthenticationTypes&amp;#62; element should look like&amp;#58; &amp;#10;&amp;#10;&amp;#60;Authentication&amp;#62;&amp;#10;&amp;#60;AuthenticationTypes&amp;#62; &amp;#10;&amp;#60;Custom&amp;#47;&amp;#62;&amp;#10;&amp;#60;&amp;#47;AuthenticationTypes&amp;#62;&amp;#10;&amp;#60;EnableAuthPersistence&amp;#62;true&amp;#60;&amp;#47;EnableAuthPersistence&amp;#62;&amp;#10;&amp;#60;RSWindowsExtendedProtectionLevel&amp;#62;Off&amp;#60;&amp;#47;RSWindowsExtendedProtectionLevel&amp;#62;&amp;#10;&amp;#60;RSWindowsExtendedProtectionScenario&amp;#62;Proxy&amp;#60;&amp;#47;RSWindowsExtendedProtectionScenario&amp;#62;&amp;#10;&amp;#60;&amp;#47;Authentication&amp;#62;</description><author>wookash</author><pubDate>Sat, 26 May 2012 23:46:47 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2008R2!Security Extension Sample" 20120526114647P</guid></item><item><title>New Comment on "SS2008R2!Security Extension Sample"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008R2!Security Extension Sample&amp;ANCHOR#C23830</link><description>When setting the &amp;#60;AuthenticationTypes&amp;#62; in rsreportserver.config, you must ensure that the RSWindowsExtendedProtectionLevel and RSWindowsExtendedProtectionScenario elements are preserved, or else you will see an error.  Here&amp;#39;s what the final &amp;#60;AuthenticationTypes&amp;#62; element should look like&amp;#58; &amp;#10;&amp;#10;&amp;#60;Authentication&amp;#62;&amp;#10;&amp;#60;AuthenticationTypes&amp;#62; &amp;#10;&amp;#60;Custom&amp;#47;&amp;#62;&amp;#10;&amp;#60;&amp;#47;AuthenticationTypes&amp;#62;&amp;#10;&amp;#60;EnableAuthPersistence&amp;#62;true&amp;#60;&amp;#47;EnableAuthPersistence&amp;#62;&amp;#10;&amp;#60;&amp;#47;Authentication&amp;#62; &amp;#10;&amp;#60;RSWindowsExtendedProtectionLevel&amp;#62;Off&amp;#60;&amp;#47;RSWindowsExtendedProtectionLevel&amp;#62;&amp;#10;&amp;#60;RSWindowsExtendedProtectionScenario&amp;#62;Proxy&amp;#60;&amp;#47;RSWindowsExtendedProtectionScenario&amp;#62;</description><author>wookash</author><pubDate>Sat, 26 May 2012 23:46:03 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2008R2!Security Extension Sample" 20120526114603P</guid></item><item><title>New Comment on "SS2005!Script Samples (Reporting Services)"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2005!Script Samples (Reporting Services)&amp;ANCHOR#C23639</link><description>The script samples did not install.</description><author>dg_to</author><pubDate>Wed, 09 May 2012 21:18:44 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2005!Script Samples (Reporting Services)" 20120509091844P</guid></item><item><title>New Comment on "SS2008R2!AdventureWorks2008R2 Report Samples"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008R2!AdventureWorks2008R2 Report Samples&amp;ANCHOR#C22931</link><description>SQL Server 2008 R2 Express with Advanced Services - I could not deploy the sample reports because Shared Datasets are not supported in SQL Server Reporting Services 2008 R2 Express edition.&amp;#10;Got a series of errors like this when deploying from Bids&amp;#58;&amp;#10;Deploying data set &amp;#39;&amp;#47;Datasets&amp;#47;EmployeeSalesDetail2008R2&amp;#39;.&amp;#10;Error rsOperationNotSupported &amp;#58; The feature&amp;#58; &amp;#34;Shared dataset&amp;#34; is not supported in this edition of Reporting Services.&amp;#10;Some of the reports did deploy however&amp;#59; presumably the ones that dont need shared datasets.</description><author>codeulike</author><pubDate>Thu, 15 Mar 2012 01:11:28 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2008R2!AdventureWorks2008R2 Report Samples" 20120315011128A</guid></item><item><title>New Comment on "SS2008!AdventureWorks Sample Reports"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008!AdventureWorks Sample Reports&amp;ANCHOR#C22834</link><description>Hi,&amp;#10;&amp;#10;I&amp;#39;m getting the following error on some tables when I try to deploy.  Please advise on a fix.&amp;#10;&amp;#10;Error&amp;#58;  &amp;#10;&amp;#91;rsInvalidReportDefinition&amp;#93; The report definition is not valid.  Details&amp;#58; The report definition has an invalid target namespace &amp;#39;http&amp;#58;&amp;#47;&amp;#47;schemas.microsoft.com&amp;#47;sqlserver&amp;#47;reporting&amp;#47;2010&amp;#47;01&amp;#47;reportdefinition&amp;#39; which cannot be upgraded.  C&amp;#58;&amp;#92;Program Files&amp;#92;Microsoft SQL Server&amp;#92;100&amp;#92;Samples&amp;#92;Reporting Services&amp;#92;Report Samples&amp;#92;AdventureWorks 2008R2 Sample Reports&amp;#92;AdventureWorks 2008R2&amp;#92;Employee_Sales_Summary_2008R2.rdl</description><author>jdhin</author><pubDate>Tue, 06 Mar 2012 01:02:20 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2008!AdventureWorks Sample Reports" 20120306010220A</guid></item><item><title>New Comment on "SS2008R2!Security Extension Sample"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008R2!Security Extension Sample&amp;ANCHOR#C22510</link><description>The custom module may not be necessary as I suspect the already registered FormsAuthenticationModule may do the same thing.</description><author>wly168</author><pubDate>Wed, 08 Feb 2012 15:57:53 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2008R2!Security Extension Sample" 20120208035753P</guid></item><item><title>New Comment on "SS2008R2!Security Extension Sample"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008R2!Security Extension Sample&amp;ANCHOR#C22509</link><description>The implementation is not capable of injecting a meaningful Identity into Http Context. This results in the throttle as governed by MaxActiveReqForOneUser being ineffectual. I fixed this problem in my implementation by creating a FormsAuthenticationTicket from the logon page. The following method is called by the code behind of the forms logon page on successful authentication.&amp;#10;&amp;#10;        &amp;#47;&amp;#47;&amp;#47; &amp;#60;summary&amp;#62;&amp;#10;        &amp;#47;&amp;#47;&amp;#47; Generates the forms authentication ticket and put it in the response.&amp;#10;        &amp;#47;&amp;#47;&amp;#47; &amp;#60;&amp;#47;summary&amp;#62;&amp;#10;        &amp;#47;&amp;#47;&amp;#47; &amp;#60;param name&amp;#61;&amp;#34;userName&amp;#34;&amp;#62;Name of the user.&amp;#60;&amp;#47;param&amp;#62;&amp;#10;        private void GenerateFormsAuthenticationTicket&amp;#40;string userName&amp;#41;&amp;#10;        &amp;#123;&amp;#10;            FormsAuthenticationTicket authTicket &amp;#61; new FormsAuthenticationTicket&amp;#40;&amp;#10;                1,                              &amp;#47;&amp;#47; version&amp;#10;                userName,                       &amp;#47;&amp;#47; user name&amp;#10;                DateTime.Now,                   &amp;#47;&amp;#47; creation&amp;#10;                DateTime.Now.AddMinutes&amp;#40;60&amp;#41;,    &amp;#47;&amp;#47; Expiration&amp;#10;                true,                           &amp;#47;&amp;#47; persistent&amp;#10;                &amp;#34;&amp;#34;&amp;#41;&amp;#59;                            &amp;#47;&amp;#47; User data&amp;#10;&amp;#10;            &amp;#47;&amp;#47; Now encrypt the ticket.&amp;#10;            string encryptedTicket &amp;#61; FormsAuthentication.Encrypt&amp;#40;authTicket&amp;#41;&amp;#59;&amp;#10;&amp;#10;            &amp;#47;&amp;#47; Create a cookie and add the encrypted ticket to the cookie as data.&amp;#10;            HttpCookie authCookie &amp;#61; new HttpCookie&amp;#40;FormsAuthentication.FormsCookieName, encryptedTicket&amp;#41;&amp;#59;&amp;#10;            &amp;#47;&amp;#47;authCookie.Domain &amp;#61; FormsAuthentication.CookieDomain&amp;#59;&amp;#10;&amp;#10;            &amp;#47;&amp;#47; Add the cookie to the outgoing cookies collection.&amp;#10;            HttpContext.Current.Response.Cookies.Add&amp;#40;authCookie&amp;#41;&amp;#59;&amp;#10;        &amp;#125;&amp;#10;&amp;#10;The second step is create a register an implementation of IHttpModule with the report manager. &amp;#40;You register the module in the web.config of the report manager.&amp;#41; This extracts the identity from the cookie and injects it into http context. The following code&amp;#10;&amp;#10;    public class IdentityModule &amp;#58; IHttpModule&amp;#10;    &amp;#123;&amp;#10;        &amp;#10;&amp;#10;        private static readonly ILog _log &amp;#61; LogManager.GetLogger&amp;#40;typeof&amp;#40;IdentityModule&amp;#41;&amp;#41;&amp;#59;&amp;#10;&amp;#10;        &amp;#47;&amp;#47;&amp;#47; &amp;#60;summary&amp;#62;&amp;#10;        &amp;#47;&amp;#47;&amp;#47; Gets the logger.&amp;#10;        &amp;#47;&amp;#47;&amp;#47; &amp;#60;&amp;#47;summary&amp;#62;&amp;#10;        &amp;#47;&amp;#47;&amp;#47; &amp;#60;value&amp;#62;The log.&amp;#60;&amp;#47;value&amp;#62;&amp;#10;        private static ILog Log&amp;#10;        &amp;#123;&amp;#10;            get&amp;#10;            &amp;#123;&amp;#10;                return _log&amp;#59;&amp;#10;            &amp;#125;&amp;#10;        &amp;#125;&amp;#10;&amp;#10;&amp;#10;        &amp;#47;&amp;#47;&amp;#47; &amp;#60;summary&amp;#62;&amp;#10;        &amp;#47;&amp;#47;&amp;#47; Initializes a module and prepares it to handle requests.&amp;#10;        &amp;#47;&amp;#47;&amp;#47; &amp;#60;&amp;#47;summary&amp;#62;&amp;#10;        &amp;#47;&amp;#47;&amp;#47; &amp;#60;param name&amp;#61;&amp;#34;context&amp;#34;&amp;#62;An &amp;#60;see cref&amp;#61;&amp;#34;T&amp;#58;System.Web.HttpApplication&amp;#34;&amp;#47;&amp;#62; that provides access to the methods, properties, and events common to all application objects within an ASP.NET application&amp;#60;&amp;#47;param&amp;#62;&amp;#10;        public void Init&amp;#40;HttpApplication context&amp;#41;&amp;#10;        &amp;#123;&amp;#10;            context.AuthenticateRequest &amp;#43;&amp;#61; new EventHandler&amp;#40;ExtractIdentity&amp;#41;&amp;#59;&amp;#10;        &amp;#125;&amp;#10;&amp;#10;        &amp;#47;&amp;#47;&amp;#47; &amp;#60;summary&amp;#62;&amp;#10;        &amp;#47;&amp;#47;&amp;#47; Disposes of the resources &amp;#40;other than memory&amp;#41; used by the module that implements &amp;#60;see cref&amp;#61;&amp;#34;T&amp;#58;System.Web.IHttpModule&amp;#34;&amp;#47;&amp;#62;.&amp;#10;        &amp;#47;&amp;#47;&amp;#47; &amp;#60;&amp;#47;summary&amp;#62;&amp;#10;        public void Dispose&amp;#40;&amp;#41;&amp;#10;        &amp;#123;&amp;#10;        &amp;#125;&amp;#10;&amp;#10;&amp;#10;        &amp;#47;&amp;#47;&amp;#47; &amp;#60;summary&amp;#62;&amp;#10;        &amp;#47;&amp;#47;&amp;#47; Extracts the identity from the cookie and asserts it into context. The identity cookie is generated at &amp;#10;        &amp;#47;&amp;#47;&amp;#47; authentication time. Every successive call to the report manager results in this delegate beging called.&amp;#10;        &amp;#47;&amp;#47;&amp;#47; &amp;#60;&amp;#47;summary&amp;#62;&amp;#10;        &amp;#47;&amp;#47;&amp;#47; &amp;#60;param name&amp;#61;&amp;#34;sender&amp;#34;&amp;#62;The sender.&amp;#60;&amp;#47;param&amp;#62;&amp;#10;        &amp;#47;&amp;#47;&amp;#47; &amp;#60;param name&amp;#61;&amp;#34;args&amp;#34;&amp;#62;The &amp;#60;see cref&amp;#61;&amp;#34;System.EventArgs&amp;#34;&amp;#47;&amp;#62; instance containing the event data.&amp;#60;&amp;#47;param&amp;#62;&amp;#10;        public void ExtractIdentity&amp;#40;object sender, EventArgs args&amp;#41;&amp;#10;        &amp;#123;&amp;#10;            &amp;#47;&amp;#47; Extract the forms authentication cookie&amp;#10;            string cookieName &amp;#61; FormsAuthentication.FormsCookieName&amp;#59;&amp;#10;            HttpCookie authCookie &amp;#61; HttpContext.Current.Request.Cookies&amp;#91;cookieName&amp;#93;&amp;#59;&amp;#10;&amp;#10;            if &amp;#40;null &amp;#61;&amp;#61; authCookie&amp;#41;&amp;#10;            &amp;#123;&amp;#10;                Log.Debug&amp;#40;&amp;#34;There is no authentication cookie.&amp;#34;&amp;#41;&amp;#59;&amp;#10;                return&amp;#59;&amp;#10;            &amp;#125;&amp;#10;&amp;#10;            FormsAuthenticationTicket authTicket &amp;#61; null&amp;#59;&amp;#10;            try&amp;#10;            &amp;#123;&amp;#10;                authTicket &amp;#61; FormsAuthentication.Decrypt&amp;#40;authCookie.Value&amp;#41;&amp;#59;&amp;#10;            &amp;#125;&amp;#10;            catch &amp;#40;Exception ex&amp;#41;&amp;#10;            &amp;#123;&amp;#10;                Log.Error&amp;#40;&amp;#34;Problems decrypting authentication cookie.&amp;#34;, ex&amp;#41;&amp;#59;&amp;#10;                return&amp;#59;&amp;#10;            &amp;#125;&amp;#10;&amp;#10;            if &amp;#40;null &amp;#61;&amp;#61; authTicket&amp;#41;&amp;#10;            &amp;#123;&amp;#10;                Log.Debug&amp;#40;&amp;#34;Cookie failed to decrypt..&amp;#34;&amp;#41;&amp;#59;&amp;#10;                return&amp;#59;&amp;#10;            &amp;#125;&amp;#10;&amp;#10;            FormsIdentity id &amp;#61; new FormsIdentity&amp;#40;authTicket&amp;#41;&amp;#59;&amp;#10;&amp;#10;            Log.Debug&amp;#40;&amp;#34;Extracted forms identity &amp;#58; &amp;#34; &amp;#43; id.Name&amp;#41;&amp;#59;&amp;#10;&amp;#10;            &amp;#47;&amp;#47; This principal will flow throughout the request lifecycle.&amp;#10;            GenericPrincipal principal &amp;#61; new GenericPrincipal&amp;#40;id, new string&amp;#91;0&amp;#93;&amp;#41;&amp;#59;&amp;#10;            &amp;#47;&amp;#47; Attach the new principal object to the current HttpContext object&amp;#10;            HttpContext.Current.User &amp;#61; principal&amp;#59;&amp;#10;        &amp;#125;&amp;#10;    &amp;#125;</description><author>wly168</author><pubDate>Wed, 08 Feb 2012 12:18:39 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2008R2!Security Extension Sample" 20120208121839P</guid></item><item><title>New Comment on "Server Management Sample Reports"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=Server Management Sample Reports&amp;ANCHOR#C21419</link><description>As I can&amp;#39;t change the text above. &amp;#10;&amp;#34;Microsoft SQL Server &amp;#34;Katmai&amp;#34; Reporting Services&amp;#34; refers to SQL 2008. Katmai was its code name when in development.</description><author>DavidLean</author><pubDate>Wed, 02 Nov 2011 00:33:39 GMT</pubDate><guid isPermaLink="false">New Comment on "Server Management Sample Reports" 20111102123339A</guid></item><item><title>New Comment on "SS2008!AdventureWorksOffline Report Samples"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008!AdventureWorksOffline Report Samples&amp;ANCHOR#C21197</link><description>the file is missing Data_AddingCalculatedSeries</description><author>xnasser</author><pubDate>Sun, 09 Oct 2011 18:50:16 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2008!AdventureWorksOffline Report Samples" 20111009065016P</guid></item><item><title>New Comment on "SS2008!Security Extension Sample"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008!Security Extension Sample&amp;ANCHOR#C21150</link><description>Hi ,&amp;#10;I have implemented Forms authentication for SSRS R2, i can get the users and assign permissions to site manager, then when i log in through &amp;#10;with the normal user i get this message&amp;#10;ui&amp;#33;ReportManager_0-1&amp;#33;1a44&amp;#33;10&amp;#47;04&amp;#47;2011-16&amp;#58;21&amp;#58;54&amp;#58;&amp;#58; e ERROR&amp;#58; System.Threading.ThreadAbortException&amp;#58; Thread was being aborted.&amp;#10;   at System.Threading.Thread.AbortInternal&amp;#40;&amp;#41;&amp;#10;   at System.Threading.Thread.Abort&amp;#40;Object stateInfo&amp;#41;&amp;#10;   at System.Web.HttpResponse.End&amp;#40;&amp;#41;&amp;#10;   at System.Web.HttpServerUtility.Transfer&amp;#40;String path, Boolean preserveForm&amp;#41;&amp;#10;   at Microsoft.ReportingServices.UI.ReportingPage.ShowErrorPage&amp;#40;String errMsg&amp;#41;&amp;#10;webserver&amp;#33;ReportServer_0-2&amp;#33;1230&amp;#33;10&amp;#47;04&amp;#47;2011-16&amp;#58;22&amp;#58;16&amp;#58;&amp;#58; e ERROR&amp;#58; System.Exception&amp;#58; An error occurred while attempting to verify the user.Invalid attempt to read when no data is present.&amp;#10;   at Microsoft.Samples.ReportingServices.CustomSecurity.AuthenticationUtilities.VerifyPassword&amp;#40;String suppliedUserName, String suppliedPassword&amp;#41;&amp;#10;   at Microsoft.Samples.ReportingServices.CustomSecurity.AuthenticationExtension.LogonUser&amp;#40;String userName, String password, String authority&amp;#41;&amp;#10;   at Microsoft.ReportingServices.WebServer.RSCustomAuthentication.LogonUser&amp;#40;String userName, String password, String authority&amp;#41;&amp;#10;   at Microsoft.ReportingServices.WebServer.ReportingService2005Impl.LogonUser&amp;#40;String userName, String password, String authority&amp;#41;&amp;#10;   at Microsoft.ReportingServices.WebServer.ReportingService2010.LogonUser&amp;#40;String userName, String password, String authority&amp;#41;&amp;#10;library&amp;#33;ReportServer_0-2&amp;#33;225c&amp;#33;10&amp;#47;04&amp;#47;2011-16&amp;#58;22&amp;#58;24&amp;#58;&amp;#58; Call to GetPermissionsAction&amp;#40;&amp;#47;&amp;#41;.&amp;#10;ui&amp;#33;ReportManager_0-1&amp;#33;23f0&amp;#33;10&amp;#47;04&amp;#47;2011-16&amp;#58;22&amp;#58;24&amp;#58;&amp;#58; e ERROR&amp;#58; Microsoft.ReportingServices.UI.FolderPage&amp;#43;InsufficientPermissionsToRoot&amp;#58; User &amp;#39;&amp;#39; does not have required permissions. Verify that sufficient permissions have been granted and Windows User Account Control &amp;#40;UAC&amp;#41; restrictions have been addressed.&amp;#10;   at Microsoft.ReportingServices.UI.FolderPage.Page_Init&amp;#40;Object sender, EventArgs e&amp;#41;&amp;#10;   at System.EventHandler.Invoke&amp;#40;Object sender, EventArgs e&amp;#41;&amp;#10;   at System.Web.UI.Control.OnInit&amp;#40;EventArgs e&amp;#41;&amp;#10;   at System.Web.UI.Page.OnInit&amp;#40;EventArgs e&amp;#41;&amp;#10;   at System.Web.UI.Control.InitRecursive&amp;#40;Control namingContainer&amp;#41;&amp;#10;   at System.Web.UI.Page.ProcessRequestMain&amp;#40;Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint&amp;#41;&amp;#10;library&amp;#33;ReportServer_0-2&amp;#33;225c&amp;#33;10&amp;#47;04&amp;#47;2011-16&amp;#58;22&amp;#58;24&amp;#58;&amp;#58; Call to GetSystemPermissionsAction&amp;#40;&amp;#41;.&amp;#10;ui&amp;#33;ReportManager_0-1&amp;#33;23f0&amp;#33;10&amp;#47;04&amp;#47;2011-16&amp;#58;22&amp;#58;24&amp;#58;&amp;#58; e ERROR&amp;#58; HTTP status code --&amp;#62; 500&amp;#10;can any one of you help please.</description><author>bshaik</author><pubDate>Tue, 04 Oct 2011 15:31:25 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2008!Security Extension Sample" 20111004033125P</guid></item><item><title>New Comment on "SS2008R2!Custom Report Item Sample"</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008R2!Custom Report Item Sample&amp;ANCHOR#C21104</link><description>Hello,&amp;#10;&amp;#10;I got it working properly in Visual Studio 2010 and on the report server. The problem is that I have no idea how to deploy this custom report item to make it available in Report Builder 3.0. I know we can also add custom report item to the Report Builde toolbox but I did not found any guidance for that.&amp;#10;&amp;#10;Any clue&amp;#63;&amp;#10;&amp;#10;Thanks.</description><author>Ucodia</author><pubDate>Thu, 29 Sep 2011 16:00:14 GMT</pubDate><guid isPermaLink="false">New Comment on "SS2008R2!Custom Report Item Sample" 20110929040014P</guid></item><item><title>Updated Wiki: SS2008R2!Security Extension Sample</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008R2!Security Extension Sample&amp;version=7</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;Readme_Security Extension Sample&lt;/h2&gt;
8/22/2011&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;This sample works only with SQL Server 2008 R2. It will not work with any version of SQL Server earlier than SQL Server 2008 R2. &lt;br /&gt;The CustomSecurity sample security extension uses Forms Authentication along with SQL Server to provide a custom security model that works with Reporting Services. This sample is not supported on Itanium-based operating systems.&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Before you begin:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; If you plan to build the sample in &lt;b&gt;Debug&lt;/b&gt; mode, you must comment the following line of code. If you don&amp;#39;t, the sample compiles without error, but the Report Manager page does not show when you use the sample.  &lt;br /&gt;&lt;br /&gt;System.Diagnostics.Debug.Assert(false, &amp;quot;Warning: userIdentity is null! Modify your code if you wish to support anonymous logon.&amp;quot;);&lt;br /&gt;&lt;br /&gt;The code is in GetUserInfo function in AuthenticationExtension.cs. &lt;br /&gt;&lt;br /&gt;public void GetUserInfo(out IIdentity userIdentity, out IntPtr userId)&lt;br /&gt;      {&lt;br /&gt;         if (HttpContext.Current != null&lt;br /&gt;               &amp;amp;&amp;amp; HttpContext.Current.User != null)&lt;br /&gt;         {&lt;br /&gt;               userIdentity = HttpContext.Current.User.Identity;&lt;br /&gt;         }&lt;br /&gt;         else&lt;br /&gt;         {&lt;br /&gt;             userIdentity = null;&lt;br /&gt;             System.Diagnostics.Debug.Assert(false, &amp;quot;Warning: userIdentity is null! Modify your code if you wish to support anonymous logon.&amp;quot;);&lt;br /&gt;             throw new NullReferenceException(&amp;quot;Anonymous logon is not configured. userIdentity should not be null!&amp;quot;);&lt;br /&gt;         }&lt;br /&gt;           userId = IntPtr.Zero;&lt;br /&gt;      }&lt;br /&gt;         &lt;br /&gt;This happens only when you build in &lt;b&gt;Debug&lt;/b&gt; mode, you do not need to make this change if you build in &lt;b&gt;Release&lt;/b&gt; mode. &lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;th&gt; Security Note:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  The security extension sample should not be deployed and tested in a production environment. Reverting back to Windows Authentication after migrating to a different security extension is generally not recommended. If you do, you may experience errors when you attempt to access items in the report server database that have custom security descriptors, but no Windows Authentication security descriptors. To revert, you will have to reinstall Reporting Services and manually re-apply any role-based security for your Windows users. Before using this sample, you should back up your configuration files. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Important:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  Samples are provided for educational purposes only. They are not intended to be used in a production environment and have not been tested in a production environment. Microsoft does not provide technical support for these samples. Sample applications and assemblies should not be connected to or used with your production SQL Server database or your report server without the permission of the system administrator. Microsoft does not provide technical support for these samples. Sample applications and assemblies should not be connected to or used with your production SQL Server database or your report server without the permission of the system administrator.  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Requirements&lt;/h3&gt;You should be familiar with Visual Studio and either Visual C# or Visual Basic and you must have the following applications installed to run the CustomSecurity sample: &lt;br /&gt;
&lt;ul&gt;&lt;li&gt; Microsoft Visual Studio 2008 or later.   &lt;/li&gt;
&lt;li&gt; Microsoft .NET Framework 2.0.  &lt;/li&gt;
&lt;li&gt; SQL Server 2008 R2 including Reporting Services and with SQL Server 2008 R2 CU3 or later applied.  &lt;/li&gt;
&lt;li&gt; Reporting Services samples.   &lt;/li&gt;
&lt;li&gt; A report server that you have permission to access on your network, if you plan to use the sample extension to add additional data processing functionality to your server.  &lt;/li&gt;&lt;/ul&gt;
&lt;table&gt;&lt;tr&gt;&lt;th&gt; Important:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  SQL Server samples and sample databases must be downloaded and installed before you can view or work with them. For more information, see &lt;i&gt;Considerations for Installing SQL Server Samples and Sample Databases&lt;/i&gt;. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Location&lt;/h3&gt;This sample is located by default at:&lt;br /&gt; C:\Program Files\Microsoft SQL Server\100\Samples\Reporting Services\  &lt;span class="codeInline"&gt;Extension Samples\FormsAuthentication Sample&lt;/span&gt; &lt;br /&gt;
&lt;h3&gt;Building the Sample&lt;/h3&gt;You must first compile and install the extension. The procedure assumes that you have installed Reporting Services to the default location: C:\Program Files\Microsoft SQL Server\MSRS10&lt;i&gt;50.MSSQLSERVER\Reporting Services. This location will be referred to throughout the remainder of this topic as &amp;lt;&lt;/i&gt;install_&amp;gt;.&lt;br /&gt;If you have not already created a strong name key file, generate the key file using the following instructions.&lt;br /&gt;
&lt;h5&gt;To generate a strong name key file&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Open a Microsoft Visual Studio prompt. Click &lt;b&gt;Start&lt;/b&gt;, point to &lt;b&gt;All Programs&lt;/b&gt;, point to &lt;b&gt;Microsoft .NET Framework SDK 2.0&lt;/b&gt;, and then click &lt;b&gt;SDK Command Prompt&lt;/b&gt;.-- or --Open a Microsoft .NET Framework command prompt. Click &lt;b&gt;Start&lt;/b&gt;, point to &lt;b&gt;All Programs&lt;/b&gt;, point to &lt;b&gt;Microsoft .NET Framework SDK 2.0&lt;/b&gt;, and then click &lt;b&gt;SDK Command Prompt&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Use the change directory command (CD) to change the current directory of the command prompt window to the folder where the samples are installed. &lt;b&gt;Note: To determine the folder where samples are located, click the &lt;/b&gt;Start* button, point to &lt;b&gt;All Programs&lt;/b&gt;, point to &lt;b&gt;Microsoft SQL Server&lt;/b&gt;, point to &lt;b&gt;Documentation and Tutorials&lt;/b&gt;, and then click &lt;b&gt;Samples Directory&lt;/b&gt;. If the default installation location was used, the samples are located in &amp;lt;system_drive&amp;gt;:\Program Files\Microsoft SQL Server\100\Samples.*&lt;/li&gt;
&lt;li&gt;At the command prompt, run the following command to generate the key file: &lt;span class="codeInline"&gt;sn -k SampleKey.snk&lt;/span&gt;  &lt;b&gt;Important: For more information about the strong-name key pair, see &amp;quot;Security Briefs: Strong Names and Security in the .NET Framework&amp;quot; in the .NET Development Center on MSDN.&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;h5&gt;To compile the sample using Visual Studio&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Open CustomSecurity.sln in Microsoft Visual Studio. If you installed the sample to the default location, you can access it at C:\Program Files\Microsoft SQL Server\100\Samples\Reporting Services\Extensions. &lt;/li&gt;
&lt;li&gt;In Solution Explorer, select the &lt;b&gt;CustomSecurity&lt;/b&gt; project. &lt;/li&gt;
&lt;li&gt;Look at the &lt;b&gt;CustomSecurity&lt;/b&gt; project&amp;#39;s references.  If you do not see Microsoft.ReportingServices.Interfaces.dll, complete steps the following steps:
&lt;ol&gt;&lt;li&gt;On the Project menu, click Add Reference. The Add References dialog box opens. &lt;/li&gt;
&lt;li&gt;Click the .NET tab. &lt;/li&gt;
&lt;li&gt;Click Browse, and find Microsoft.ReportingServices.Interfaces on your local drive. By default, the assembly is located in the &amp;lt;install&amp;gt;\ReportServer\bin directory. Click OK. The selected reference is added to your project. &lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;On the Build menu, click Build Solution. &lt;/li&gt;&lt;/ol&gt;

&lt;h3&gt;Deploying the Sample&lt;/h3&gt;After the sample is compiled, you must copy the DLLs and the ASPX pages to the appropriate subdirectories for your Report Server installation.&lt;br /&gt;
&lt;h5&gt;To deploy the sample&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Copy Microsoft.Samples.ReportingServices.CustomSecurity.dll and Microsoft.Samples.ReportingServices.CustomSecurity.pdb to the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportServer\bin directory. &lt;/li&gt;
&lt;li&gt;Copy Microsoft.Samples.ReportingServices.CustomSecurity.dll and Microsoft.Samples.ReportingServices.CustomSecurity.pdb to the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportManager\bin directory. If a PDB file is Not present, it was Not created by the Build step provided above. Ensure that the Project Properties for Debug/Build is set to generate PDB files. &lt;/li&gt;
&lt;li&gt;Copy the Logon.aspx page to the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportServer directory. &lt;/li&gt;
&lt;li&gt;Copy the UILogon.aspx page to the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportManager\Pages directory. After the assembly and logon pages are copied to the server, you need to make some modifications to the Report Server configuration file.&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Important:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  Make backup copies of all of your configuration files before making any changes. Backup and Restore Operations for a Reporting Services Installation can be looked up from MSDN. http://msdn.microsoft.com/en-us/library/ms155814.aspx is its current URL. Configuration Files (Reporting Services) can be reviewed to get detailed information about the various settings mentioned. Its current URL is http://msdn.microsoft.com/en-us/library/ms155866.aspx.  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;h5&gt;To modify the RSReportServer.config file &lt;/h5&gt;
&lt;ul&gt;&lt;li&gt;Open the RSReportServer.config file with Visual Studio or a simple text editor such as Notepad. RSReportServer.config is located in the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportServer directory. &lt;/li&gt;
&lt;li&gt;Locate the &amp;lt;&lt;b&gt;AuthenticationTypes&lt;/b&gt;&amp;gt; element and modify the settings as follows:   &lt;/li&gt;&lt;/ul&gt;
&amp;lt;Authentication&amp;gt;&lt;br /&gt;&amp;lt;AuthenticationTypes&amp;gt; &lt;br /&gt;&amp;lt;Custom/&amp;gt;&lt;br /&gt;&amp;lt;/AuthenticationTypes&amp;gt;&lt;br /&gt;&amp;lt;EnableAuthPersistence&amp;gt;true&amp;lt;/EnableAuthPersistence&amp;gt;&lt;br /&gt;&amp;lt;/Authentication&amp;gt; 
&lt;ul&gt;&lt;li&gt;Locate the &amp;lt;&lt;b&gt;Security&lt;/b&gt;&amp;gt; and &amp;lt;&lt;b&gt;Authentication&lt;/b&gt;&amp;gt; elements, within the &amp;lt;&lt;b&gt;Extensions&lt;/b&gt;&amp;gt; element, and modify the settings as follows: &lt;/li&gt;&lt;/ul&gt;
&amp;lt;Security&amp;gt;&lt;br /&gt;   &amp;lt;Extension Name=&amp;quot;Forms&amp;quot; &lt;br /&gt;Type=&amp;quot;Microsoft.Samples.ReportingServices.CustomSecurity.Authorization, &lt;br /&gt;Microsoft.Samples.ReportingServices.CustomSecurity&amp;quot; &amp;gt;&lt;br /&gt;      &amp;lt;Configuration&amp;gt;&lt;br /&gt;         &amp;lt;AdminConfiguration&amp;gt;&lt;br /&gt;            &amp;lt;UserName&amp;gt;username&amp;lt;/UserName&amp;gt;&lt;br /&gt;         &amp;lt;/AdminConfiguration&amp;gt;&lt;br /&gt;      &amp;lt;/Configuration&amp;gt;&lt;br /&gt;   &amp;lt;/Extension&amp;gt;&lt;br /&gt;&amp;lt;/Security&amp;gt;&lt;br /&gt;&amp;lt;Authentication&amp;gt;&lt;br /&gt;   &amp;lt;Extension Name=&amp;quot;Forms&amp;quot; &lt;br /&gt;Type=&amp;quot;Microsoft.Samples.ReportingServices.CustomSecurity.AuthenticationExtension,&lt;br /&gt; Microsoft.Samples.ReportingServices.CustomSecurity&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/Authentication&amp;gt; .  For more information regarding .NET Framework security and Reporting Services, see &lt;b&gt;Secure Development (Reporting Services)&lt;/b&gt;. 
&lt;ul&gt;&lt;li&gt;Locate the &amp;lt;&lt;b&gt;UI&lt;/b&gt;&amp;gt; element and update it as follows:  &lt;/li&gt;&lt;/ul&gt;
 &amp;lt;UI&amp;gt;&lt;br /&gt;   &amp;lt;CustomAuthenticationUI&amp;gt;&lt;br /&gt;      &amp;lt;loginUrl&amp;gt;/Pages/UILogon.aspx&amp;lt;/loginUrl&amp;gt;&lt;br /&gt;         &amp;lt;UseSSL&amp;gt;True&amp;lt;/UseSSL&amp;gt;&lt;br /&gt;   &amp;lt;/CustomAuthenticationUI&amp;gt;&lt;br /&gt;   &amp;lt;ReportServerUrl&amp;gt;http://&amp;lt;server&amp;gt;/ReportServer&amp;lt;/ReportServerUrl&amp;gt;&lt;br /&gt;&amp;lt;/UI&amp;gt; &lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Note:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  If you are running the sample security extension in a development environment that does not have a Secure Sockets Layer (SSL) certificate installed, you must change the value of the &lt;b&gt;&amp;lt;UseSSL&amp;gt;&lt;/b&gt; element to &lt;b&gt;False&lt;/b&gt; in the previous configuration entry. We recommend that you always use SSL when combining Reporting Services with Forms Authentication.  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You will need to add a code group for your custom security extension that grants FullTrust permission for your extension. You do this by adding the code group to the RSSrvPolicy.config file.&lt;br /&gt;
&lt;h5&gt;To modify the RSSrvPolicy.config file &lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Open the RSSrvPolicy.config file located in the &amp;lt;install&amp;gt;\ReportServer directory.&lt;/li&gt;
&lt;li&gt;Add the following &amp;lt;&lt;b&gt;CodeGroup&lt;/b&gt;&amp;gt; element after the existing code group in the security policy file that has a URL membership of $CodeGen as indicated below and then add an entry as follows to RSSrvPolicy.config: &lt;/li&gt;&lt;/ul&gt;
 &amp;lt;CodeGroup&lt;br /&gt;   class=&amp;quot;UnionCodeGroup&amp;quot;&lt;br /&gt;   version=&amp;quot;1&amp;quot;&lt;br /&gt;   Name=&amp;quot;SecurityExtensionCodeGroup&amp;quot;&lt;br /&gt;   Description=&amp;quot;Code group for the sample security extension&amp;quot;&lt;br /&gt;   PermissionSetName=&amp;quot;FullTrust&amp;quot;&amp;gt;&lt;br /&gt;   &amp;lt;IMembershipCondition &lt;br /&gt;      class=&amp;quot;UrlMembershipCondition&amp;quot;&lt;br /&gt;      version=&amp;quot;1&amp;quot;&lt;br /&gt;      Url=&amp;quot;C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.CustomSecurity.dll&amp;quot;&lt;br /&gt;   /&amp;gt;&lt;br /&gt;&amp;lt;/CodeGroup&amp;gt; &lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Note:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  For simplicity, the Forms Authentication Sample is weak-named and requires a simple URL membership entry in the security policy files. In your production security extension implementation, you should create strong-named assemblies and use the strong name membership condition when adding security policies for your assembly. For more information about strong-named assemblies, see the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=49255" class="externalLink"&gt;Creating and Using Strong-Named Assemblies&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; topic on MSDN. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next, you will need to increase the permissions for the &amp;quot;My Computer&amp;quot; code group in the Report Manager policy file.&lt;br /&gt;
&lt;h5&gt;To modify the RSMgrPolicy.config file &lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Open the Report Manager policy file, RSMgrPolicy.config, located in the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportManager directory.&lt;/li&gt;
&lt;li&gt;Locate the following code group in RSMgrPolicy.config and change the &lt;b&gt;PermissionSetName&lt;/b&gt; attribute from &lt;b&gt;Execution&lt;/b&gt; to &lt;b&gt;FullTrust&lt;/b&gt; as follows: &lt;/li&gt;&lt;/ul&gt;
 &amp;lt;CodeGroup &lt;br /&gt;        class=&amp;quot;FirstMatchCodeGroup&amp;quot; &lt;br /&gt;        version=&amp;quot;1&amp;quot; &lt;br /&gt;        PermissionSetName=&amp;quot;FullTrust&amp;quot;&lt;br /&gt;        Description=&amp;quot;This code group grants MyComputer code Execution permission. &amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;IMembershipCondition &lt;br /&gt;            class=&amp;quot;ZoneMembershipCondition&amp;quot;&lt;br /&gt;            version=&amp;quot;1&amp;quot;&lt;br /&gt;            Zone=&amp;quot;MyComputer&amp;quot; /&amp;gt; &amp;quot;}*To use Forms Authentication, you need to modify the Web.config files for Report Manager and Report Server.&lt;br /&gt;
&lt;h5&gt;To modify the Web.config file for Report Server&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Open the Web.config file in a text editor. By default, the file is located in the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportServer directory. &lt;/li&gt;
&lt;li&gt;Locate the &amp;lt;&lt;b&gt;identity&lt;/b&gt;&amp;gt; element and set the &lt;b&gt;Impersonate&lt;/b&gt; attribute to &lt;b&gt;false&lt;/b&gt;.  *  &amp;lt;identity impersonate=&amp;quot;false&amp;quot; /&amp;gt; *&lt;/li&gt;
&lt;li&gt;Locate the &amp;lt;&lt;b&gt;authentication&lt;/b&gt;&amp;gt; element and change the &lt;b&gt;Mode&lt;/b&gt; attribute to &lt;b&gt;Forms&lt;/b&gt;. &lt;/li&gt;
&lt;li&gt;Add the following &amp;lt;&lt;b&gt;forms&lt;/b&gt;&amp;gt; element as a child of the &amp;lt;&lt;b&gt;authentication&lt;/b&gt;&amp;gt; element and set the &lt;b&gt;loginUrl&lt;/b&gt;, &lt;b&gt;name&lt;/b&gt;, &lt;b&gt;timeout&lt;/b&gt;, and &lt;b&gt;path&lt;/b&gt; attributes as follows:  &lt;/li&gt;&lt;/ul&gt;
&amp;lt;authentication mode=&amp;quot;Forms&amp;quot;&amp;gt;&lt;br /&gt;   &amp;lt;forms loginUrl=&amp;quot;logon.aspx&amp;quot; name=&amp;quot;sqlAuthCookie&amp;quot; timeout=&amp;quot;60&amp;quot; &lt;br /&gt;               path=&amp;quot;/&amp;quot;&amp;gt;&amp;lt;/forms&amp;gt;&lt;br /&gt;   &amp;lt;/authentication&amp;gt; 
&lt;ul&gt;&lt;li&gt;Add the following &amp;lt;&lt;b&gt;authorization&lt;/b&gt;&amp;gt; element directly after the &amp;lt;&lt;b&gt;authentication&lt;/b&gt;&amp;gt; element.  &lt;/li&gt;&lt;/ul&gt;
 &amp;lt;authorization&amp;gt; &lt;br /&gt;   &amp;lt;deny users=&amp;quot;?&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/authorization&amp;gt;.      &lt;br /&gt;&lt;br /&gt;This will deny unauthenticated users the right to access the report server. The previously established &lt;b&gt;loginUrl&lt;/b&gt; attribute of the &amp;lt;&lt;b&gt;authentication&lt;/b&gt;&amp;gt; element will redirect unauthenticated requests to the Logon.aspx page.&lt;br /&gt;
&lt;h5&gt;To modify the Web.config file for Report Manager&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Open the Web.config for Report Manager. It is located in the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportManager directory. &lt;/li&gt;
&lt;li&gt;Disable impersonation by locating the section &lt;b&gt;&amp;lt;identity impersonate= &amp;quot;true&amp;quot; /&amp;gt;&lt;/b&gt; and changing it to the following: &lt;b&gt;&amp;lt;identity impersonate=&amp;quot;false&amp;quot; /&amp;gt;&lt;/b&gt;. &lt;/li&gt;
&lt;li&gt;Locate the &amp;lt;authentication&amp;gt; element and change the Mode attribute to Forms.&lt;/li&gt;
&lt;li&gt;Add the following keys to the &amp;lt;&lt;b&gt;appSettings&lt;/b&gt;&amp;gt; element. &lt;/li&gt;&lt;/ul&gt;
  &amp;lt;add key=&amp;quot;ReportServer&amp;quot; value=&amp;quot;&amp;lt;Server Name&amp;gt;&amp;quot;/&amp;gt;&lt;br /&gt;  &amp;lt;add key=&amp;quot;ReportServerInstance&amp;quot; value=&amp;quot;&amp;lt;Instance Name&amp;gt;&amp;quot;/&amp;gt; 
&lt;ul&gt;&lt;li&gt;Change the &lt;b&gt;&amp;lt;Server Name&amp;gt;&lt;/b&gt; value to the name of the report server and the &lt;b&gt;&amp;lt;Instance Name&amp;gt;&lt;/b&gt; value to the name of the instance the report server is associated with.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Note: &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; The &amp;lt;Instance Name&amp;gt; for a default instance is RS_MSSQLSERVER.  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;h3&gt;Creating the UserAccounts Database&lt;/h3&gt;The sample includes a database script, Createuserstore.sql, that enables you to set up a user store for the Forms sample in a SQL Server database.&lt;br /&gt;
&lt;h5&gt;To create the UserAccounts database&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Open SQL Server Management Studio, and then connect to your local instance of SQL Server. &lt;/li&gt;
&lt;li&gt;Locate the Createuserstore.sql SQL script file. The script file is contained within the sample project files. &lt;/li&gt;
&lt;li&gt;Run the query to create the  UserAccounts  database. &lt;/li&gt;
&lt;li&gt;Exit SQL Server Management Studio. &lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;
&lt;h3&gt;Testing the Sample&lt;/h3&gt;The following procedure tests the sample extension. You will register an administrator user, which adds the user name, password hash, and salt value to the  users  table in the  UserAccounts  database. It also will require you to enter that user name in the Report Server configuration file. You will then log on the same user to ensure the correct operation of the password verification routines as well as the proper loading of the extension assembly by the report server.&lt;br /&gt;
&lt;h5&gt;To test the sample &lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Restart the Reporting Services service by running the following commands at the command prompt:  *  net stop &amp;quot;SQL Server Reporting Services (&amp;lt;Instance Name&amp;gt;)&amp;quot;&lt;br /&gt;net start &amp;quot;SQL Server Reporting Services (&amp;lt;Instance Name&amp;gt;)&amp;quot; *
&lt;ul&gt;&lt;li&gt;Open Report Manager. You can do this from the Reporting Services program menu or by accessing the Reports virtual directory from your browser. &lt;/li&gt;
&lt;li&gt;Enter a user name and password and click &lt;b&gt;Register User&lt;/b&gt; to add the user to the  accounts  database. &lt;/li&gt;
&lt;li&gt;Open the RSReportServer.config file. Locate the &amp;lt;&lt;b&gt;Security&lt;/b&gt;&amp;gt; element and add the previously registered user name as follows:  &lt;/li&gt;&lt;/ul&gt;
  &amp;lt;Security&amp;gt;&lt;br /&gt;   &amp;lt;Extension Name=&amp;quot;Forms&amp;quot; &lt;br /&gt;Type=&amp;quot;Microsoft.Samples.ReportingServices.CustomSecurity.Authorization, &lt;br /&gt;Microsoft.Samples.ReportingServices.CustomSecurity&amp;quot; &amp;gt;&lt;br /&gt;      &amp;lt;Configuration&amp;gt;&lt;br /&gt;         &amp;lt;AdminConfiguration&amp;gt;&lt;br /&gt;            &amp;lt;UserName&amp;gt;username&amp;lt;/UserName&amp;gt;&lt;br /&gt;         &amp;lt;/AdminConfiguration&amp;gt;&lt;br /&gt;      &amp;lt;/Configuration&amp;gt;&lt;br /&gt;   &amp;lt;/Extension&amp;gt;&lt;br /&gt;&amp;lt;/Security&amp;gt; 
&lt;ul&gt;&lt;li&gt;Return to the UILogon.aspx page, re-enter the user name and password, and then click &lt;b&gt;Logon&lt;/b&gt;. You should have access to Report Manager and the report server with no restrictions. The administrator user that you create has equivalent permissions on the report server to those of a built-in administrator account on the local computer. For the purpose of this sample, you can only have one user designated as an administrator. After you have a built-in administrator account, you can register additional users and assign them roles on the report server.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Note:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  You should add your administrator user to the official System Administrator and Content Manager (root folder) roles of your report server. This prevents empty security descriptors from existing in the report server database. For more information about the System Administrator and Content Manager roles, see &lt;b&gt;Using Predefined Roles&lt;/b&gt;. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Using the Web Service with Custom Security&lt;/h3&gt;You can use the Web service API with Forms Authentication just as you would with Windows Authentication. However, you must call &lt;b&gt;LogonUser&lt;/b&gt; in your Web service code and pass the credentials of the current user. In addition, your Web service client will not have the benefit of automatic cookie management, which is provided by Internet Explorer or other Web browsers. You will have to extend the &lt;b&gt;ReportingService2005&lt;/b&gt; proxy class to include cookie management. This can be done by overriding the &lt;b&gt;GetWebRequest&lt;/b&gt; and &lt;b&gt;GetWebResponse&lt;/b&gt; methods of the Web service class.&lt;br /&gt;
&lt;h3&gt;Debugging the Sample Extension&lt;/h3&gt;Running the sample extension in the debugger is not only a great way to troubleshoot difficulties you may have, but it is also an effective way to step through the code and see the report server authentication and authorization process as it is happening.&lt;br /&gt;The Microsoft .NET Framework provides several debugging tools that can help you analyze the sample code. The following procedure uses Visual Studio to debug the previous sample.&lt;br /&gt;
&lt;h5&gt;To debug the Forms Authentication sample code&lt;/h5&gt;
&lt;ol&gt;&lt;li&gt;Start Visual Studio and open CustomSecurity.sln on your test report server. &lt;/li&gt;
&lt;li&gt;Open Internet Explorer and navigate to Report Manager while leaving the sample code open in Visual Studio. &lt;/li&gt;
&lt;li&gt;Switch to Visual Studio and set some break points in the custom security extension project code. &lt;/li&gt;
&lt;li&gt;With the extension project still the active window, from the &lt;b&gt;Debug&lt;/b&gt; menu, click &lt;b&gt;Process&lt;/b&gt;.The &lt;b&gt;Processes&lt;/b&gt; dialog opens. &lt;/li&gt;
&lt;li&gt;From the list of processes, select the Aspnet_wp.exe process (or W3wp.exe, if your application is deployed on IIS), and click &lt;b&gt;Attach&lt;/b&gt;. &lt;/li&gt;
&lt;li&gt;In the &lt;b&gt;Attach to Process&lt;/b&gt; dialog, select the &lt;b&gt;Common Language Runtime&lt;/b&gt; program type, and then click &lt;b&gt;OK&lt;/b&gt;. For improved debugging performance, make sure that &lt;b&gt;Native&lt;/b&gt; is not a selected program type. &lt;/li&gt;
&lt;li&gt;When the sample runs, a logon form appears. Type the user credentials into the logon form and click the &lt;b&gt;Logon&lt;/b&gt; button. Whenever your break points are encountered during processing, the debugger should stop execution at that point. &lt;/li&gt;
&lt;li&gt;Step through your code using the F11 key. For more information about using Visual Studio for debugging, see your Visual Studio documentation. &lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Note:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  Debugging this way requires a lot of resources and processor time. If you run into difficulties, close Visual Studio, reset IIS, and begin again by attaching the CustomSecurity solution to the ASP.NET worker process and logging on to Report Manager. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Removing the Sample Extension&lt;/h3&gt;While not generally recommended, it is possible to revert back to Windows Authentication after you have tried out the sample. &lt;br /&gt;
&lt;h5&gt;To revert to Windows security&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Restore the following files from your backup copies: Web.config and RSReportServer.config. This should set the authentication and authorization methods for the report server to the default Windows security. This should also remove any entries you made for your extension in the Report Server configuration file. &lt;/li&gt;
&lt;li&gt;After the configuration information is removed, your security extension is no longer available to the report server. You should not have to remove any security descriptors that were created while you were running the report server under the sample security extension. The report server automatically assigns the &lt;b&gt;System Administrator&lt;/b&gt; role to the BUILTIN\Administrators group on the computer hosting the report server when Windows Authentication is enabled. However, you will have to manually re-apply any role-based security for your Windows users.&lt;/li&gt;&lt;/ol&gt;
Note that reverting back to Windows Authentication after migrating to a different security extension is generally not recommended. If you do, you may experience errors when you attempt to access items in the report server database that have custom security descriptors, but no Windows Authentication security descriptors.&lt;br /&gt;
&lt;h3&gt;See Also&lt;/h3&gt;
&lt;h6&gt;Tasks&lt;/h6&gt;&lt;i&gt;Reporting Services Samples&lt;/i&gt;  
&lt;h6&gt;Other Resources&lt;/h6&gt;&lt;i&gt;Extension Samples (Reporting Services)&lt;/i&gt;  &lt;b&gt;Implementing a Security Extension&lt;/b&gt;    
&lt;h6&gt; Help and Information&lt;/h6&gt;&lt;ul&gt;&lt;li&gt;Getting SQL Server 2008 R2 Assistance* &amp;#169; 2011 Microsoft Corporation. All rights reserved.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>mariwill</author><pubDate>Thu, 22 Sep 2011 20:01:23 GMT</pubDate><guid isPermaLink="false">Updated Wiki: SS2008R2!Security Extension Sample 20110922080123P</guid></item><item><title>Updated Wiki: SS2008R2!Security Extension Sample</title><link>http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008R2!Security Extension Sample&amp;version=6</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;Readme_Security Extension Sample&lt;/h2&gt;
8/22/2011&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;This sample works only with SQL Server 2008 R2. It will not work with any version of SQL Server earlier than SQL Server 2008 R2. &lt;br /&gt;The CustomSecurity sample security extension uses Forms Authentication along with SQL Server to provide a custom security model that works with Reporting Services. This sample is not supported on Itanium-based operating systems.&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Before you begin:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; If you plan to build the sample in &lt;b&gt;Debug&lt;/b&gt; mode, you must comment the following line of code. If you don&amp;#39;t, the sample compiles without error, but the Report Manager page does not show when you use the sample.  &lt;br /&gt;&lt;br /&gt;System.Diagnostics.Debug.Assert(false, &amp;quot;Warning: userIdentity is null! Modify your code if you wish to support anonymous logon.&amp;quot;);&lt;br /&gt;&lt;br /&gt;The code is in GetUserInfo function in AuthenticationExtension.cs. &lt;br /&gt;&lt;br /&gt;public void GetUserInfo(out IIdentity userIdentity, out IntPtr userId)&lt;br /&gt;      {&lt;br /&gt;         if (HttpContext.Current != null&lt;br /&gt;               &amp;amp;&amp;amp; HttpContext.Current.User != null)&lt;br /&gt;         {&lt;br /&gt;               userIdentity = HttpContext.Current.User.Identity;&lt;br /&gt;         }&lt;br /&gt;         else&lt;br /&gt;         {&lt;br /&gt;             userIdentity = null;&lt;br /&gt;             System.Diagnostics.Debug.Assert(false, &amp;quot;Warning: userIdentity is null! Modify your code if you wish to support anonymous logon.&amp;quot;);&lt;br /&gt;             throw new NullReferenceException(&amp;quot;Anonymous logon is not configured. userIdentity should not be null!&amp;quot;);&lt;br /&gt;         }&lt;br /&gt;           userId = IntPtr.Zero;&lt;br /&gt;      }&lt;br /&gt;         &lt;br /&gt;This happens only when you build in &lt;b&gt;Debug&lt;/b&gt; mode, you do not need to make this change if you build in &lt;b&gt;Release&lt;/b&gt; mode. |&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;th&gt; Security Note:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  The security extension sample should not be deployed and tested in a production environment. Reverting back to Windows Authentication after migrating to a different security extension is generally not recommended. If you do, you may experience errors when you attempt to access items in the report server database that have custom security descriptors, but no Windows Authentication security descriptors. To revert, you will have to reinstall Reporting Services and manually re-apply any role-based security for your Windows users. Before using this sample, you should back up your configuration files. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Important:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  Samples are provided for educational purposes only. They are not intended to be used in a production environment and have not been tested in a production environment. Microsoft does not provide technical support for these samples. Sample applications and assemblies should not be connected to or used with your production SQL Server database or your report server without the permission of the system administrator. Microsoft does not provide technical support for these samples. Sample applications and assemblies should not be connected to or used with your production SQL Server database or your report server without the permission of the system administrator.  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Requirements&lt;/h3&gt;You should be familiar with Visual Studio and either Visual C# or Visual Basic and you must have the following applications installed to run the CustomSecurity sample: &lt;br /&gt;
&lt;ul&gt;&lt;li&gt; Microsoft Visual Studio 2008 or later.   &lt;/li&gt;
&lt;li&gt; Microsoft .NET Framework 2.0.  &lt;/li&gt;
&lt;li&gt; SQL Server 2008 R2 including Reporting Services and with SQL Server 2008 R2 CU3 or later applied.  &lt;/li&gt;
&lt;li&gt; Reporting Services samples.   &lt;/li&gt;
&lt;li&gt; A report server that you have permission to access on your network, if you plan to use the sample extension to add additional data processing functionality to your server.  &lt;/li&gt;&lt;/ul&gt;
&lt;table&gt;&lt;tr&gt;&lt;th&gt; Important:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  SQL Server samples and sample databases must be downloaded and installed before you can view or work with them. For more information, see &lt;i&gt;Considerations for Installing SQL Server Samples and Sample Databases&lt;/i&gt;. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Location&lt;/h3&gt;This sample is located by default at:&lt;br /&gt; C:\Program Files\Microsoft SQL Server\100\Samples\Reporting Services\  &lt;span class="codeInline"&gt;Extension Samples\FormsAuthentication Sample&lt;/span&gt; &lt;br /&gt;
&lt;h3&gt;Building the Sample&lt;/h3&gt;You must first compile and install the extension. The procedure assumes that you have installed Reporting Services to the default location: C:\Program Files\Microsoft SQL Server\MSRS10&lt;i&gt;50.MSSQLSERVER\Reporting Services. This location will be referred to throughout the remainder of this topic as &amp;lt;&lt;/i&gt;install_&amp;gt;.&lt;br /&gt;If you have not already created a strong name key file, generate the key file using the following instructions.&lt;br /&gt;
&lt;h5&gt;To generate a strong name key file&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Open a Microsoft Visual Studio prompt. Click &lt;b&gt;Start&lt;/b&gt;, point to &lt;b&gt;All Programs&lt;/b&gt;, point to &lt;b&gt;Microsoft .NET Framework SDK 2.0&lt;/b&gt;, and then click &lt;b&gt;SDK Command Prompt&lt;/b&gt;.-- or --Open a Microsoft .NET Framework command prompt. Click &lt;b&gt;Start&lt;/b&gt;, point to &lt;b&gt;All Programs&lt;/b&gt;, point to &lt;b&gt;Microsoft .NET Framework SDK 2.0&lt;/b&gt;, and then click &lt;b&gt;SDK Command Prompt&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Use the change directory command (CD) to change the current directory of the command prompt window to the folder where the samples are installed. &lt;b&gt;Note: To determine the folder where samples are located, click the &lt;/b&gt;Start* button, point to &lt;b&gt;All Programs&lt;/b&gt;, point to &lt;b&gt;Microsoft SQL Server&lt;/b&gt;, point to &lt;b&gt;Documentation and Tutorials&lt;/b&gt;, and then click &lt;b&gt;Samples Directory&lt;/b&gt;. If the default installation location was used, the samples are located in &amp;lt;system_drive&amp;gt;:\Program Files\Microsoft SQL Server\100\Samples.*&lt;/li&gt;
&lt;li&gt;At the command prompt, run the following command to generate the key file: &lt;span class="codeInline"&gt;sn -k SampleKey.snk&lt;/span&gt;  &lt;b&gt;Important: For more information about the strong-name key pair, see &amp;quot;Security Briefs: Strong Names and Security in the .NET Framework&amp;quot; in the .NET Development Center on MSDN.&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;h5&gt;To compile the sample using Visual Studio&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Open CustomSecurity.sln in Microsoft Visual Studio. If you installed the sample to the default location, you can access it at C:\Program Files\Microsoft SQL Server\100\Samples\Reporting Services\Extensions. &lt;/li&gt;
&lt;li&gt;In Solution Explorer, select the &lt;b&gt;CustomSecurity&lt;/b&gt; project. &lt;/li&gt;
&lt;li&gt;Look at the &lt;b&gt;CustomSecurity&lt;/b&gt; project&amp;#39;s references.  If you do not see Microsoft.ReportingServices.Interfaces.dll, complete steps the following steps:
&lt;ol&gt;&lt;li&gt;On the Project menu, click Add Reference. The Add References dialog box opens. &lt;/li&gt;
&lt;li&gt;Click the .NET tab. &lt;/li&gt;
&lt;li&gt;Click Browse, and find Microsoft.ReportingServices.Interfaces on your local drive. By default, the assembly is located in the &amp;lt;install&amp;gt;\ReportServer\bin directory. Click OK. The selected reference is added to your project. &lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;On the Build menu, click Build Solution. &lt;/li&gt;&lt;/ol&gt;

&lt;h3&gt;Deploying the Sample&lt;/h3&gt;After the sample is compiled, you must copy the DLLs and the ASPX pages to the appropriate subdirectories for your Report Server installation.&lt;br /&gt;
&lt;h5&gt;To deploy the sample&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Copy Microsoft.Samples.ReportingServices.CustomSecurity.dll and Microsoft.Samples.ReportingServices.CustomSecurity.pdb to the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportServer\bin directory. &lt;/li&gt;
&lt;li&gt;Copy Microsoft.Samples.ReportingServices.CustomSecurity.dll and Microsoft.Samples.ReportingServices.CustomSecurity.pdb to the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportManager\bin directory. If a PDB file is Not present, it was Not created by the Build step provided above. Ensure that the Project Properties for Debug/Build is set to generate PDB files. &lt;/li&gt;
&lt;li&gt;Copy the Logon.aspx page to the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportServer directory. &lt;/li&gt;
&lt;li&gt;Copy the UILogon.aspx page to the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportManager\Pages directory. After the assembly and logon pages are copied to the server, you need to make some modifications to the Report Server configuration file.&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Important:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  Make backup copies of all of your configuration files before making any changes. Backup and Restore Operations for a Reporting Services Installation can be looked up from MSDN. http://msdn.microsoft.com/en-us/library/ms155814.aspx is its current URL. Configuration Files (Reporting Services) can be reviewed to get detailed information about the various settings mentioned. Its current URL is http://msdn.microsoft.com/en-us/library/ms155866.aspx.  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;h5&gt;To modify the RSReportServer.config file &lt;/h5&gt;
&lt;ul&gt;&lt;li&gt;Open the RSReportServer.config file with Visual Studio or a simple text editor such as Notepad. RSReportServer.config is located in the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportServer directory. &lt;/li&gt;
&lt;li&gt;Locate the &amp;lt;&lt;b&gt;AuthenticationTypes&lt;/b&gt;&amp;gt; element and modify the settings as follows:   &lt;/li&gt;&lt;/ul&gt;
&amp;lt;Authentication&amp;gt;&lt;br /&gt;&amp;lt;AuthenticationTypes&amp;gt; &lt;br /&gt;&amp;lt;Custom/&amp;gt;&lt;br /&gt;&amp;lt;/AuthenticationTypes&amp;gt;&lt;br /&gt;&amp;lt;EnableAuthPersistence&amp;gt;true&amp;lt;/EnableAuthPersistence&amp;gt;&lt;br /&gt;&amp;lt;/Authentication&amp;gt; 
&lt;ul&gt;&lt;li&gt;Locate the &amp;lt;&lt;b&gt;Security&lt;/b&gt;&amp;gt; and &amp;lt;&lt;b&gt;Authentication&lt;/b&gt;&amp;gt; elements, within the &amp;lt;&lt;b&gt;Extensions&lt;/b&gt;&amp;gt; element, and modify the settings as follows: &lt;/li&gt;&lt;/ul&gt;
&amp;lt;Security&amp;gt;&lt;br /&gt;   &amp;lt;Extension Name=&amp;quot;Forms&amp;quot; &lt;br /&gt;Type=&amp;quot;Microsoft.Samples.ReportingServices.CustomSecurity.Authorization, &lt;br /&gt;Microsoft.Samples.ReportingServices.CustomSecurity&amp;quot; &amp;gt;&lt;br /&gt;      &amp;lt;Configuration&amp;gt;&lt;br /&gt;         &amp;lt;AdminConfiguration&amp;gt;&lt;br /&gt;            &amp;lt;UserName&amp;gt;username&amp;lt;/UserName&amp;gt;&lt;br /&gt;         &amp;lt;/AdminConfiguration&amp;gt;&lt;br /&gt;      &amp;lt;/Configuration&amp;gt;&lt;br /&gt;   &amp;lt;/Extension&amp;gt;&lt;br /&gt;&amp;lt;/Security&amp;gt;&lt;br /&gt;&amp;lt;Authentication&amp;gt;&lt;br /&gt;   &amp;lt;Extension Name=&amp;quot;Forms&amp;quot; &lt;br /&gt;Type=&amp;quot;Microsoft.Samples.ReportingServices.CustomSecurity.AuthenticationExtension,&lt;br /&gt; Microsoft.Samples.ReportingServices.CustomSecurity&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/Authentication&amp;gt; .  For more information regarding .NET Framework security and Reporting Services, see &lt;b&gt;Secure Development (Reporting Services)&lt;/b&gt;. 
&lt;ul&gt;&lt;li&gt;Locate the &amp;lt;&lt;b&gt;UI&lt;/b&gt;&amp;gt; element and update it as follows:  &lt;/li&gt;&lt;/ul&gt;
 &amp;lt;UI&amp;gt;&lt;br /&gt;   &amp;lt;CustomAuthenticationUI&amp;gt;&lt;br /&gt;      &amp;lt;loginUrl&amp;gt;/Pages/UILogon.aspx&amp;lt;/loginUrl&amp;gt;&lt;br /&gt;         &amp;lt;UseSSL&amp;gt;True&amp;lt;/UseSSL&amp;gt;&lt;br /&gt;   &amp;lt;/CustomAuthenticationUI&amp;gt;&lt;br /&gt;   &amp;lt;ReportServerUrl&amp;gt;http://&amp;lt;server&amp;gt;/ReportServer&amp;lt;/ReportServerUrl&amp;gt;&lt;br /&gt;&amp;lt;/UI&amp;gt; &lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Note:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  If you are running the sample security extension in a development environment that does not have a Secure Sockets Layer (SSL) certificate installed, you must change the value of the &lt;b&gt;&amp;lt;UseSSL&amp;gt;&lt;/b&gt; element to &lt;b&gt;False&lt;/b&gt; in the previous configuration entry. We recommend that you always use SSL when combining Reporting Services with Forms Authentication.  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You will need to add a code group for your custom security extension that grants FullTrust permission for your extension. You do this by adding the code group to the RSSrvPolicy.config file.&lt;br /&gt;
&lt;h5&gt;To modify the RSSrvPolicy.config file &lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Open the RSSrvPolicy.config file located in the &amp;lt;install&amp;gt;\ReportServer directory.&lt;/li&gt;
&lt;li&gt;Add the following &amp;lt;&lt;b&gt;CodeGroup&lt;/b&gt;&amp;gt; element after the existing code group in the security policy file that has a URL membership of $CodeGen as indicated below and then add an entry as follows to RSSrvPolicy.config: &lt;/li&gt;&lt;/ul&gt;
 &amp;lt;CodeGroup&lt;br /&gt;   class=&amp;quot;UnionCodeGroup&amp;quot;&lt;br /&gt;   version=&amp;quot;1&amp;quot;&lt;br /&gt;   Name=&amp;quot;SecurityExtensionCodeGroup&amp;quot;&lt;br /&gt;   Description=&amp;quot;Code group for the sample security extension&amp;quot;&lt;br /&gt;   PermissionSetName=&amp;quot;FullTrust&amp;quot;&amp;gt;&lt;br /&gt;   &amp;lt;IMembershipCondition &lt;br /&gt;      class=&amp;quot;UrlMembershipCondition&amp;quot;&lt;br /&gt;      version=&amp;quot;1&amp;quot;&lt;br /&gt;      Url=&amp;quot;C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.CustomSecurity.dll&amp;quot;&lt;br /&gt;   /&amp;gt;&lt;br /&gt;&amp;lt;/CodeGroup&amp;gt; &lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Note:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  For simplicity, the Forms Authentication Sample is weak-named and requires a simple URL membership entry in the security policy files. In your production security extension implementation, you should create strong-named assemblies and use the strong name membership condition when adding security policies for your assembly. For more information about strong-named assemblies, see the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=49255" class="externalLink"&gt;Creating and Using Strong-Named Assemblies&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; topic on MSDN. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next, you will need to increase the permissions for the &amp;quot;My Computer&amp;quot; code group in the Report Manager policy file.&lt;br /&gt;
&lt;h5&gt;To modify the RSMgrPolicy.config file &lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Open the Report Manager policy file, RSMgrPolicy.config, located in the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportManager directory.&lt;/li&gt;
&lt;li&gt;Locate the following code group in RSMgrPolicy.config and change the &lt;b&gt;PermissionSetName&lt;/b&gt; attribute from &lt;b&gt;Execution&lt;/b&gt; to &lt;b&gt;FullTrust&lt;/b&gt; as follows: &lt;/li&gt;&lt;/ul&gt;
 &amp;lt;CodeGroup &lt;br /&gt;        class=&amp;quot;FirstMatchCodeGroup&amp;quot; &lt;br /&gt;        version=&amp;quot;1&amp;quot; &lt;br /&gt;        PermissionSetName=&amp;quot;FullTrust&amp;quot;&lt;br /&gt;        Description=&amp;quot;This code group grants MyComputer code Execution permission. &amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;IMembershipCondition &lt;br /&gt;            class=&amp;quot;ZoneMembershipCondition&amp;quot;&lt;br /&gt;            version=&amp;quot;1&amp;quot;&lt;br /&gt;            Zone=&amp;quot;MyComputer&amp;quot; /&amp;gt; &amp;quot;}*To use Forms Authentication, you need to modify the Web.config files for Report Manager and Report Server.&lt;br /&gt;
&lt;h5&gt;To modify the Web.config file for Report Server&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Open the Web.config file in a text editor. By default, the file is located in the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportServer directory. &lt;/li&gt;
&lt;li&gt;Locate the &amp;lt;&lt;b&gt;identity&lt;/b&gt;&amp;gt; element and set the &lt;b&gt;Impersonate&lt;/b&gt; attribute to &lt;b&gt;false&lt;/b&gt;.  *  &amp;lt;identity impersonate=&amp;quot;false&amp;quot; /&amp;gt; *&lt;/li&gt;
&lt;li&gt;Locate the &amp;lt;&lt;b&gt;authentication&lt;/b&gt;&amp;gt; element and change the &lt;b&gt;Mode&lt;/b&gt; attribute to &lt;b&gt;Forms&lt;/b&gt;. &lt;/li&gt;
&lt;li&gt;Add the following &amp;lt;&lt;b&gt;forms&lt;/b&gt;&amp;gt; element as a child of the &amp;lt;&lt;b&gt;authentication&lt;/b&gt;&amp;gt; element and set the &lt;b&gt;loginUrl&lt;/b&gt;, &lt;b&gt;name&lt;/b&gt;, &lt;b&gt;timeout&lt;/b&gt;, and &lt;b&gt;path&lt;/b&gt; attributes as follows:  &lt;/li&gt;&lt;/ul&gt;
&amp;lt;authentication mode=&amp;quot;Forms&amp;quot;&amp;gt;&lt;br /&gt;   &amp;lt;forms loginUrl=&amp;quot;logon.aspx&amp;quot; name=&amp;quot;sqlAuthCookie&amp;quot; timeout=&amp;quot;60&amp;quot; &lt;br /&gt;               path=&amp;quot;/&amp;quot;&amp;gt;&amp;lt;/forms&amp;gt;&lt;br /&gt;   &amp;lt;/authentication&amp;gt; 
&lt;ul&gt;&lt;li&gt;Add the following &amp;lt;&lt;b&gt;authorization&lt;/b&gt;&amp;gt; element directly after the &amp;lt;&lt;b&gt;authentication&lt;/b&gt;&amp;gt; element.  &lt;/li&gt;&lt;/ul&gt;
 &amp;lt;authorization&amp;gt; &lt;br /&gt;   &amp;lt;deny users=&amp;quot;?&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/authorization&amp;gt;.      &lt;br /&gt;&lt;br /&gt;This will deny unauthenticated users the right to access the report server. The previously established &lt;b&gt;loginUrl&lt;/b&gt; attribute of the &amp;lt;&lt;b&gt;authentication&lt;/b&gt;&amp;gt; element will redirect unauthenticated requests to the Logon.aspx page.&lt;br /&gt;
&lt;h5&gt;To modify the Web.config file for Report Manager&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Open the Web.config for Report Manager. It is located in the &amp;lt;&lt;i&gt;install&lt;/i&gt;&amp;gt;\ReportManager directory. &lt;/li&gt;
&lt;li&gt;Disable impersonation by locating the section &lt;b&gt;&amp;lt;identity impersonate= &amp;quot;true&amp;quot; /&amp;gt;&lt;/b&gt; and changing it to the following: &lt;b&gt;&amp;lt;identity impersonate=&amp;quot;false&amp;quot; /&amp;gt;&lt;/b&gt;. &lt;/li&gt;
&lt;li&gt;Locate the &amp;lt;authentication&amp;gt; element and change the Mode attribute to Forms.&lt;/li&gt;
&lt;li&gt;Add the following keys to the &amp;lt;&lt;b&gt;appSettings&lt;/b&gt;&amp;gt; element. &lt;/li&gt;&lt;/ul&gt;
  &amp;lt;add key=&amp;quot;ReportServer&amp;quot; value=&amp;quot;&amp;lt;Server Name&amp;gt;&amp;quot;/&amp;gt;&lt;br /&gt;  &amp;lt;add key=&amp;quot;ReportServerInstance&amp;quot; value=&amp;quot;&amp;lt;Instance Name&amp;gt;&amp;quot;/&amp;gt; 
&lt;ul&gt;&lt;li&gt;Change the &lt;b&gt;&amp;lt;Server Name&amp;gt;&lt;/b&gt; value to the name of the report server and the &lt;b&gt;&amp;lt;Instance Name&amp;gt;&lt;/b&gt; value to the name of the instance the report server is associated with.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Note: &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; The &amp;lt;Instance Name&amp;gt; for a default instance is RS_MSSQLSERVER.  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;h3&gt;Creating the UserAccounts Database&lt;/h3&gt;The sample includes a database script, Createuserstore.sql, that enables you to set up a user store for the Forms sample in a SQL Server database.&lt;br /&gt;
&lt;h5&gt;To create the UserAccounts database&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Open SQL Server Management Studio, and then connect to your local instance of SQL Server. &lt;/li&gt;
&lt;li&gt;Locate the Createuserstore.sql SQL script file. The script file is contained within the sample project files. &lt;/li&gt;
&lt;li&gt;Run the query to create the  UserAccounts  database. &lt;/li&gt;
&lt;li&gt;Exit SQL Server Management Studio. &lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;
&lt;h3&gt;Testing the Sample&lt;/h3&gt;The following procedure tests the sample extension. You will register an administrator user, which adds the user name, password hash, and salt value to the  users  table in the  UserAccounts  database. It also will require you to enter that user name in the Report Server configuration file. You will then log on the same user to ensure the correct operation of the password verification routines as well as the proper loading of the extension assembly by the report server.&lt;br /&gt;
&lt;h5&gt;To test the sample &lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Restart the Reporting Services service by running the following commands at the command prompt:  *  net stop &amp;quot;SQL Server Reporting Services (&amp;lt;Instance Name&amp;gt;)&amp;quot;&lt;br /&gt;net start &amp;quot;SQL Server Reporting Services (&amp;lt;Instance Name&amp;gt;)&amp;quot; *
&lt;ul&gt;&lt;li&gt;Open Report Manager. You can do this from the Reporting Services program menu or by accessing the Reports virtual directory from your browser. &lt;/li&gt;
&lt;li&gt;Enter a user name and password and click &lt;b&gt;Register User&lt;/b&gt; to add the user to the  accounts  database. &lt;/li&gt;
&lt;li&gt;Open the RSReportServer.config file. Locate the &amp;lt;&lt;b&gt;Security&lt;/b&gt;&amp;gt; element and add the previously registered user name as follows:  &lt;/li&gt;&lt;/ul&gt;
  &amp;lt;Security&amp;gt;&lt;br /&gt;   &amp;lt;Extension Name=&amp;quot;Forms&amp;quot; &lt;br /&gt;Type=&amp;quot;Microsoft.Samples.ReportingServices.CustomSecurity.Authorization, &lt;br /&gt;Microsoft.Samples.ReportingServices.CustomSecurity&amp;quot; &amp;gt;&lt;br /&gt;      &amp;lt;Configuration&amp;gt;&lt;br /&gt;         &amp;lt;AdminConfiguration&amp;gt;&lt;br /&gt;            &amp;lt;UserName&amp;gt;username&amp;lt;/UserName&amp;gt;&lt;br /&gt;         &amp;lt;/AdminConfiguration&amp;gt;&lt;br /&gt;      &amp;lt;/Configuration&amp;gt;&lt;br /&gt;   &amp;lt;/Extension&amp;gt;&lt;br /&gt;&amp;lt;/Security&amp;gt; 
&lt;ul&gt;&lt;li&gt;Return to the UILogon.aspx page, re-enter the user name and password, and then click &lt;b&gt;Logon&lt;/b&gt;. You should have access to Report Manager and the report server with no restrictions. The administrator user that you create has equivalent permissions on the report server to those of a built-in administrator account on the local computer. For the purpose of this sample, you can only have one user designated as an administrator. After you have a built-in administrator account, you can register additional users and assign them roles on the report server.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Note:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  You should add your administrator user to the official System Administrator and Content Manager (root folder) roles of your report server. This prevents empty security descriptors from existing in the report server database. For more information about the System Administrator and Content Manager roles, see &lt;b&gt;Using Predefined Roles&lt;/b&gt;. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Using the Web Service with Custom Security&lt;/h3&gt;You can use the Web service API with Forms Authentication just as you would with Windows Authentication. However, you must call &lt;b&gt;LogonUser&lt;/b&gt; in your Web service code and pass the credentials of the current user. In addition, your Web service client will not have the benefit of automatic cookie management, which is provided by Internet Explorer or other Web browsers. You will have to extend the &lt;b&gt;ReportingService2005&lt;/b&gt; proxy class to include cookie management. This can be done by overriding the &lt;b&gt;GetWebRequest&lt;/b&gt; and &lt;b&gt;GetWebResponse&lt;/b&gt; methods of the Web service class.&lt;br /&gt;
&lt;h3&gt;Debugging the Sample Extension&lt;/h3&gt;Running the sample extension in the debugger is not only a great way to troubleshoot difficulties you may have, but it is also an effective way to step through the code and see the report server authentication and authorization process as it is happening.&lt;br /&gt;The Microsoft .NET Framework provides several debugging tools that can help you analyze the sample code. The following procedure uses Visual Studio to debug the previous sample.&lt;br /&gt;
&lt;h5&gt;To debug the Forms Authentication sample code&lt;/h5&gt;
&lt;ol&gt;&lt;li&gt;Start Visual Studio and open CustomSecurity.sln on your test report server. &lt;/li&gt;
&lt;li&gt;Open Internet Explorer and navigate to Report Manager while leaving the sample code open in Visual Studio. &lt;/li&gt;
&lt;li&gt;Switch to Visual Studio and set some break points in the custom security extension project code. &lt;/li&gt;
&lt;li&gt;With the extension project still the active window, from the &lt;b&gt;Debug&lt;/b&gt; menu, click &lt;b&gt;Process&lt;/b&gt;.The &lt;b&gt;Processes&lt;/b&gt; dialog opens. &lt;/li&gt;
&lt;li&gt;From the list of processes, select the Aspnet_wp.exe process (or W3wp.exe, if your application is deployed on IIS), and click &lt;b&gt;Attach&lt;/b&gt;. &lt;/li&gt;
&lt;li&gt;In the &lt;b&gt;Attach to Process&lt;/b&gt; dialog, select the &lt;b&gt;Common Language Runtime&lt;/b&gt; program type, and then click &lt;b&gt;OK&lt;/b&gt;. For improved debugging performance, make sure that &lt;b&gt;Native&lt;/b&gt; is not a selected program type. &lt;/li&gt;
&lt;li&gt;When the sample runs, a logon form appears. Type the user credentials into the logon form and click the &lt;b&gt;Logon&lt;/b&gt; button. Whenever your break points are encountered during processing, the debugger should stop execution at that point. &lt;/li&gt;
&lt;li&gt;Step through your code using the F11 key. For more information about using Visual Studio for debugging, see your Visual Studio documentation. &lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Note:  &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;  Debugging this way requires a lot of resources and processor time. If you run into difficulties, close Visual Studio, reset IIS, and begin again by attaching the CustomSecurity solution to the ASP.NET worker process and logging on to Report Manager. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Removing the Sample Extension&lt;/h3&gt;While not generally recommended, it is possible to revert back to Windows Authentication after you have tried out the sample. &lt;br /&gt;
&lt;h5&gt;To revert to Windows security&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Restore the following files from your backup copies: Web.config and RSReportServer.config. This should set the authentication and authorization methods for the report server to the default Windows security. This should also remove any entries you made for your extension in the Report Server configuration file. &lt;/li&gt;
&lt;li&gt;After the configuration information is removed, your security extension is no longer available to the report server. You should not have to remove any security descriptors that were created while you were running the report server under the sample security extension. The report server automatically assigns the &lt;b&gt;System Administrator&lt;/b&gt; role to the BUILTIN\Administrators group on the computer hosting the report server when Windows Authentication is enabled. However, you will have to manually re-apply any role-based security for your Windows users.&lt;/li&gt;&lt;/ol&gt;
Note that reverting back to Windows Authentication after migrating to a different security extension is generally not recommended. If you do, you may experience errors when you attempt to access items in the report server database that have custom security descriptors, but no Windows Authentication security descriptors.&lt;br /&gt;
&lt;h3&gt;See Also&lt;/h3&gt;
&lt;h6&gt;Tasks&lt;/h6&gt;&lt;i&gt;Reporting Services Samples&lt;/i&gt;  
&lt;h6&gt;Other Resources&lt;/h6&gt;&lt;i&gt;Extension Samples (Reporting Services)&lt;/i&gt;  &lt;b&gt;Implementing a Security Extension&lt;/b&gt;    
&lt;h6&gt; Help and Information&lt;/h6&gt;&lt;ul&gt;&lt;li&gt;Getting SQL Server 2008 R2 Assistance* &amp;#169; 2011 Microsoft Corporation. All rights reserved.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>mariwill</author><pubDate>Thu, 22 Sep 2011 19:55:18 GMT</pubDate><guid isPermaLink="false">Updated Wiki: SS2008R2!Security Extension Sample 20110922075518P</guid></item></channel></rss>