Identity delegation for PerformancePoint Services (SharePoint Server 2010)
Applies to: SharePoint Server 2010, PerformancePoint Services
In this scenario, you will add the PerformancePoint Services service application to the SharePoint Server environment and configure Kerberos constrained delegation to allow the service to pull data from an external Analysis Services cube and have the option to pull data from SQL Server.
Note
If you are installing on Windows Server 2008, you may need to install the following hotfix for Kerberos authentication:
A Kerberos authentication fails together with the error code 0X80090302 or 0x8009030f on a computer that is running Windows Server 2008 or Windows Vista when the AES algorithm is used (https://support.microsoft.com/kb/969083)
Scenario dependencies
To complete this scenario you will need to have completed:
Scenario 1: Core Configuration
Scenario 2: Kerberos Authentication for SQL OLTP (optional)
Scenario 3: Kerberos Authentication for SQL Server Analysis Services
Configuration checklist
Area of configuration | Description |
---|---|
Active Directory configuration |
Create PerformancePoint Services service account Create an SPN for the service account running the PerformancePoint Service on the Application Server Verify Analysis Services SPN on SQL Server Analysis Services service account, vmlab\svcSQLAS (performed in Scenario 3) and (Optional) verify the SQL Server database engine service account, vmlab\svcSQL(performed in Scenario 2). Configure Kerberos constrained delegation for Claims to Windows Token Services service account to Analysis Services Configure Kerberos constrained delegation for the PerformancePoint Services service account to Analysis Services |
SharePoint Server configuration |
Start Claims to Windows Token Service on PerformancePoint Services Servers Start the PerformancePoint Services service instance on the PerformancePoint Services server Create the PerformancePoint Services service application and proxy Check the identity on PerformancePoint application Grant the PerformancePoint Services service account permissions on the web application content database Configure PerformancePoint services trusted file location and authentication settings |
Verify PerformancePoint Service constrained delegation |
Create document library to host a test dashboard Create a data source that reference an existing SQL Server Analysis Services cube Create a trusted PerformancePoint content list Create test PerformancePoint dashboard Publish dashboard to SharePoint Server |
Scenario environment details
Kerberos constrained delegation paths
In this scenario we will configure the PerformancePoint Services service account for Kerberos constrained delegation to the SQL Server service.
SharePoint Server logical authentication
Authentication in this scenario begins with the client authenticating with Kerberos authentication at the web front end. SharePoint Server 2010 will convert the Windows authentication token into a claims token using the local Security Token Service (STS). The PerformancePoint service application will accept the claims token and convert it into a Windows token (Kerberos) using the local Claims to Windows Token Service (C2WTS) that is a part of Windows Identity Framework (WIF). The PerformancePoint service application will then use the client’s Kerberos ticket to authenticate with the backend DataSource.
Step-by-step Configuration instructions
Active Directory configuration
Create PerformancePoint Services service account
As a best practice PerformancePoint Services should run under its own domain identity. To configure the PerformancePoint Service Application, an Active Directory account must be created and registered as a managed account in SharePoint Server 2010. For more information see Managed Accounts in SharePoint 2010. In this example the following account is created and registered later in this scenario:
SharePoint Server service | IIS App Pool Identity |
---|---|
PerformancePoint Services |
vmlab\svcPPS |
Note
You can optionally reuse a single domain account for multiple services. This configuration is not covered in the following sections.
Create an SPN for the Service Account running the PerformancePoint Service on the Application Server
The Active Directory Users and Computers MMC snap-in is typically used to configure Kerberos delegation. To configure the delegation settings within the snap-in, the Active Directory object being configured must have a service principal name applied; otherwise the delegation tab for the object will not be visible in the object’s properties dialog. Although PerformancePoint Services does not require a SPN to function, we will configure one for this purpose. Note that if the service account already has an SPN applied (in the case of sharing accounts across services) this step is not required.
On the command line, run the following command:
SETSPN -S SP/PPS vmlab\svcPPS
Note
The SPN is not a valid SPN. It is applied to the specified service account to reveal the delegation options in the AD users and computers add-in. There are other supported ways of specifying the delegation settings (specifically the msDS-AllowedToDelegateTo AD attribute) but this topic will not be covered in this document.
Verify Analysis Services SPN on SQL Server Analysis Services service account, vmlab\svcSQLAS (performed in Scenario 3) AND (Optional) Verify the SQL Server database engine service account, vmlab\svcSQL (performed in Scenario 2)
Verify that the SPN for the SQL Server Analysis Services account (vmlab\svcSQLAS) exists with the following SetSPN command:
SetSPN -L vmlab\svcSQLAS
You should see the following:
MSOLAPSvc.3/MySqlCluster
Verify the SPN for the SQL Server service account (vmlab\svcSQL) exists with the following SetSPN command:
SetSPN -L vmlab\svcSQL
You should see the following:
MSSQLSVC/MySqlCluster
Configure Kerberos constrained delegation from the PerformancePoint Services Service account to the SSAS Service and optionally for SQL Server service
To allow PerformancePoint services to delegate the client's identity, Kerberos constrained delegation must be configured. You must also configure constrained delegation with protocol transition for the conversion of claims token to Windows token via the WIF C2WTS.
Each server running PerformancePoint services must be trusted to delegate credentials to each back-end service with which PerformancePoint will authenticate. In addition, the PerformancePoint services service account must also be configured to allow delegation to the same back-end services. Notice also that HTTP/Portal and HTTP/Portal.vmlab.local are configured to delegate in order to include a SharePoint list as an optional data source for your PerformancePoint dashboard.
In our example the following delegation paths are defined:
Principal Type | Principal Name |
---|---|
User |
Vmlab\svcC2WTS |
User |
Vmlab\svcPPS |
To configure constrained delegation
Open the Active Directory Object’s properties in Active Directory Users and Computers.
Navigate to the Delegation tab.
Select Trust this user for delegation to specified services only.
Note
Constrained delegation on computer account, VMSP10APP01, is optional and only required when you are running the C2WTS as Local System. If you configure the computer account, select Trust this computer for delegation to specified services only.
Select Use any authentication protocol.
Click the add button to select the service principal.
Select User and Computers.
Select the service account running the service you wish to delegate to (SQL Server, SQL Server Analysis Services, or both).
Note
The service account selected must have an SPN applied to it. In our example, the SPN for this account was configured in a previous scenario. See Kerberos authentication for SQL OLTP (SharePoint Server 2010) and Kerberos authentication for SQL Server Analysis Services (SharePoint Server 2010).
Click OK.
Select the SPNs you would like to delegate to, and then click OK.
You should now see the selected SPNS in the services to which this account can presented delegated credentials list.
Repeat these steps for each delegation path defined in the beginning of this section.
SharePoint Server configuration
Configure and Start the Claims to Windows Token Service on PerformancePoint Services Servers
The Claims to Windows Token Service (C2WTS) is a component of the Windows Identity Foundation (WIF) which is responsible for converting user claim tokens to Windows tokens. Performance Point services uses the C2WTS to convert the user’s claims token into a windows token when the services needs to delegate credentials to a back-end system which uses Windows authentication. WIF is deployed with SharePoint Server 2010 and the C2WTS can be started from Central Administration.
Each PerformancePoint Services Application server must run the C2WTS locally. The C2WTS does not open any ports and cannot be accessed by a remote caller. Further, the C2WTS service configuration file must be configured to specifically trust the local calling client identity.
As a recommended practice you should run the C2WTS using a dedicated service account and not as Local System (the default configuration). The C2WTS service account requires special local permissions on each server that the service runs on. Be sure to configure these permissions when you choose to run the C2WTS with a domain account. To ensure the C2WTS account picks up the needed privileges, reboot the server after you have configured the C2WTS.
Note
If you choose to configure the C2WTS as Local System, you do not need to configure any additional local privileges.
To start the C2WTS
Create a service account in Active Directory to run the service under. In this example we created vmlab\svcC2WTS.
Add an arbitrary Service Principal Name (SPN) to the service account to expose the delegation options for this account in Active Directory Users and Computers. The SPN can be any format because we do not authenticate to the C2WTS using Kerberos authentication. It is recommended to not use an HTTP SPN to avoid potentially creating duplicate SPNs in your environment. In our example we registered SP/C2WTS to the vmlab\svcC2WTS using the following command:
SetSPN -S SP/C2WTS vmlab\svcC2WTS
Configure Kerberos constrained delegation on the C2WTS services account. In this scenario we delegate credentials to the SQL Server service that is running with the MSOLAPsvc.3/MySqlCluster.vmlab.local service principal name.
Next, configure the required local server permissions the C2WTS requires. You have to configure these permissions on each server the C2WTS runs on. In our example this is VMSP10APP01. Log onto the server and give the C2WTS the following permissions:
Add the service account to the local Administrators Groups.
In local security policy (secpol.msc) under user rights assignment give the service account the following permissions:
Act as part of the operating system
Impersonate a client after authentication
Log on as a service
Open Central Administration.
In the Security section, under Configure Managed Service Accounts, register the C2WTS service account as a managed account.
Under services, select Manage services on server.
In the server selection box in the upper right hand corner select the server(s) running PerformancePoint services. In this example it is VMSP10APP01.
Find the Claims to Windows Token Service and start it.
Go to Manage Service Accounts in the Security section. Change the identity of the C2WTS to the new managed account.
Note
If the C2WTS was already running before configuring the dedicated service account, or if you need to changes the permissions of the service account after the C2WTS is running you must restart the C2WTS from the services console.
In addition, if you experience issues with the C2WTS after restarting the service it may also be required to reset the IIS application pools that communicate with the C2WTS.
Add startup dependencies to the WIF C2WTS service
There is a known issue with the C2WTS where it may not automatically startup successfully on system reboot. A workaround to the issue is to configure a service dependency on the Cryptographic Services service:
Open the command-prompt window.
Type: sc config c2wts depend= CryptSvc
Find the Claims to Windows Token Service in the services console.
Open the properties for the service.
Check the Dependencies tab. Make sure Cryptographic Services is listed:
Click OK.
Reboot the server. Make sure that the C2WTS has started once the computer reboots.
Start the PerformancePoint Services service instance on the PerformancePoint Services server
Before creating a PerformancePoint Services service application, start the PerformancePoint services serve service on the designated Farm servers. To learn more about PerformancePoint Services configuration, see PerformancePoint Services administration (SharePoint Server 2010).
Open Central Administration.
Under services, select Manage services on server.
In the server selection box in the upper right hand corner select the server(s) running PerformancePoint services. In this example it is VMSP10APP01.
Start the PerformancePoint Service service.
Create the PerformancePoint Services service application and proxy
Next configure a new PerformancePoint Services service application and application proxy to allow web applications to consume PerformancePoint Services:
Open Central Administration.
Select Manage Service Applications under Application Management.
Select New, and then click PerformancePoint Services Application.
Configure the new service application. Be sure to select the correct service account or create a new managed account if you did not perform this step previously.
Note
Configuring the Unattended Services Account is optional in this scenario and only used if you want to also test NTLM authentication.
You can create and register a new service account for an existing application pool dedicated for PerformancePoint Services before this step or when you create the new PerformancePoint Service. To associate the service account with an existing application pool dedicated to PerformancePoint or verify an existing account, do the following.
Navigate to SharePoint Central Administration. Find Configure managed accounts in the Security section.
Select the drop-down box and select the application pool.
Select the Active Directory account.
Grant the PerformancePoint Services service account permissions on the web application content database
A required step in configuring SharePoint Server 2010 Office Web Applications is allowing the web application’s service account access to the content databases for a given web application. In this example, we will grant the PerformancePoint Services account access to the "portal" web application’s content database by using Windows PowerShell.
Run the following command from the SharePoint 2010 Management Shell:
$w = Get-SPWebApplication -Identity http://portal
$w.GrantAccessToProcessIdentity("vmlab\svcPPS")
Configure PerformancePoint services trusted file location and authentication settings
Once the PerformancePoint Services application is created, you must configure the properties on the new service application to specify a trusted host location and authentication settings.
Open Central Administration.
Select Manage Service Applications under Application Management.
Click the link for the new Service Application, PerformancePoint Services and click the Manage button in the ribbon.
In the PerformancePoint services management screen, click Trusted Data Source Locations.
Select the Only specific locations option and click Add Trusted Data Source Location.
Type the URL of the location, select the Site Collection (and subtree) option, and then click OK.
Select the Only specific locations option and click Add Trusted Data Source Location.
Type the URL of the location, select the Site (and subtree) option, and then click OK.
Verify PerformancePoint Service Constrained Delegation
Note
In larger environments with multiple Active Directory servers, you may need to wait for Active Directory replication to finish before you verify your configuration.
Create test PerformancePoint dashboard with a SQL Server AS data connection
Next, open PerformancePoint Dashboard Designer and create an Analysis Services data connection.
Open PerformancePoint Dashboard Designer and right-click data source to create a connection.
Select Analysis Services.
Specify the server, database, and cube and select Per-user Identity.
Click Test Data Source to test the connection.
Create a report and dashboard.
Make sure you have a data connection by dragging measures and dimensions from the details pain into the report designer.
Your report can be included in the dashboard.
Select Reports and then drag My Report onto the Dashboard Content page.
Publish the dashboard to SharePoint Server
The last step to validate the PerformancePoint Services application is to publish the dashboard and test refreshing and viewing the Analysis Services data. To do this:
Select the bright file button icon.
Click Deploy in the file selection.
Select a Master Page to which you want to publish.
Click the refresh button in your browser.
If the data connection refreshes, you have successfully configured Kerberos delegation for PerformancePoint Services.