10 Juillet 201210 Juillet 2012
Configurer Kerberos et SharePoint 2010
Nicolas GeorgeaultArchitecte SharePoint, MVP SharePoint, Public Consulting Group
Courriel: [email protected]: http://ngeorgeault.club-sharepoint.frTwitter: www.twitter.com/ngeorgeault
Agenda
Qu’est-ce que Kerberos, et pourquoi en avons-nous besoin?
Les SPNs requis pour SharePoint 2010 Configurer le service C2WTS Démos
Scenario 1 – Services Excel vers les Services d’Analyses Scenario 2 – Applications Web (Afficheur RSS) Scenario 3 – Bases de données SQL Server Scenario 4 – Services de Rapports SQL Server
Trucs, astuces et Liens utiles Questions
References…
Martin Hatch - SharePoint User Group UK (SUGUK) http://www.martinhatch.com/
De longues journées et nuits a comprendre et a mettre en place…
Demo Environment
Domaine AD: “skopus.local”
wfe1.skopus.localhttp://portail/
app1.skopus.localhttp://portail-rss/Services Excel
Bases de donnéesSQL Server (DBs SP)
Administration Centrale
olap1.skopus.localServices d’ Analyses SQL
Web Server App Server Data Server
En general…
DéveloppentProduction BAM!
“Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'"
Alors vous deployez en production…Alors vous deployez en production…
Mais alors que ce passe-t-il?Mais alors que ce passe-t-il?
CHAMPAGNE!!Tous fonctionne bien… C’est facile ;)
Le fameux problème de “Double-Hop” Le “double hop” fait référence a la situation ou un service
(Service A) doit utiliser l’identite de l’utilisateur (John) pour être identifier auprès d’un autre service comme cet utilisateur. C’est ce qu’on appelle la “Délégation”
Le défis c’est que l’authentification par défaut de Windows (NTLM) ne supporte pas la délégation. Voila pourquoi le second service reçoit une demande de connexion NULL (connexion anonyme)
John Client
bob
Service A Service B
bob
Delegation
Qu’est-ce que Kerberos ?
Protocole d’Authentification Le plus sécurisé des Protocoles d’Authentification Windows Tellement plus efficace que NTLM Vous permets de “déléguer l’authentification” (ex: multi-hop)
Si vous être authentifie par une source de données “au nom de l’utilisateur actuel” Alors vous n’y couperez pas… Kerberos est indispensable!
SQL Server n’est pas “Claims aware” (en version pré SQL 2011) Services de Rapports SQL Server (SSRS) Services d’Analyses SQL Server (SSAS)
Kerberos Authentication Example
KDC
Client
Serveur
KRB_AS_REQ
KRB_AS_REP
11
22
HTTP GET 33
44ACCESS DENIED
John
skopus.local
svcPortalSPN: HTTP/portail
svcPortal
KRB_AP_REP
KRB_AP_REQ 77
88
http://portailsvcPortal
KRB_TGS_REQ
KRB_TGS_REP
55
66
svcPortal
SPNSPN
Prérequis Kerberos
Avoir le temps… Etre super copain avec l’administrateur du domaine. Un Service de synchronisation du temps! Une ferme SharePoint 2010 Des comptes de services correctement crées (Dépend de
vos besoins) Un services DNS opérationnel (un fichier Host peut
dépanner) Configuration d’Active Directory (SPN, Délégation) Configuration de SharePoint Configuration IIS (Kernel Mode) Port de communication non bloque (par défaut TCP/UDP 88)
Ok… Mais c’est quoi un SPN?
“SPN pour Service Principal Name est le nom par lequel un client identifie de manière unique une instance d'un service.”
Plusieurs instances > Un SPN pour chaque instance. Plusieurs noms > Un SPN pour chaque nom si besoin
d’authentification.
Une instance de service peut enregistrer un SPN pour chaque nom ou l'alias de l'hôte.
http://support.microsoft.com/kb/929650/fr
DNS
Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME) Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME) Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME) Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME) Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME) Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME) Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME)
Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME) !!!
On vous l’a dit?
SPNs
Active Directory utilise les “Service Principal Names” (SPNs) pour identifier les objets dans une implémentation Kerberos. Un SPN consiste en:
<un type de service> / <un nom de domaine> : <un port>
Vous créez les SPNs en utilisant la commande setspn.exe:setspn.exe –S <SPN> <domain>\<account>
Il faut être administrateur du domaine pour utiliser la commande
Lister tous les SPNs pour un comptesetspn.exe –L <domain>\<account>
Trouver tous les SPNs dupliquessetspn.exe –X
Déléguer ses supers pouvoirs!
Vous avez déjà probablement essaye de déléguer ce pouvoir…
Avec un Control total ce sera parfait ;)
Failed!!!
La délégation n’est pas une permission… Mais un droit d’utilisateur
ntrights -u DOMAIN\useraccount +r SeEnableDelegationPrivilege
Web Applications Les Applications Web utilisent le protocole “HTTP”. Le numéro de Port est EGALEMENT requis si vous n’utilisez pas un numéro de port non-
standardsNote, Le SPN reste HTTP même pour les applications en SSL!
Vous devez déclarer le nom de domaine ET le FQDN de l’URL pour cette application web.
Ex: http://portail ou https://portail dans le domaine skopus.localHTTP/portailHTTP/portail.skopus.local
Ex: http://nonstandardport:8080/ dans le domaine skopus.localHTTP/portail:8080HTTP/portail.skopus.local:8080HTTP/portailHTTP/portail.skopus.local
A appliquer au COMPTE DE SERVICE du POOL D’APPLICATION de cette Application Web.
Bases de données SQL Les Bases de données SQL utilisent le protocole “MSSQLSvc” Vous devez déclarer le FQDN du serveur SQL (Indépendamment du fait que vous
utilisiez les alias SQL!)
Création automatique du SPN Si le Server SQL fonctionne avec les comptes Local System ou un compte Admin du domaine,
il créera automatiquement le SPN quand l’instance est démarrée. Ok… Vous devriez vraiment faire cela manuellement!
Mes serveurs SQL sont “app1.skopus.local”
Les SPNs devront être: MSSQLSvc/app1.skopus.local MSSQLSvc/app1.skopus.local:1433 (Bonne pratique SQL… Changer le port par défaut)
A appliquer au COMPTE DE SERVICE de l’instance de la base de données!
Les Services d’Analyses SQL Server
Les services SSAS utilisent le protocole “MSOLAPSvc.3”
Vous devez déclarer le nom de domaine ET le FQDN de votre server SSAS sans aucun numéro de port!
Mes services SSAS sont installes sur “olap1.skopus.local”
Les SPNs dont j’ai besoin sont: MSOLAPSvc.3/olap1 MSOLAPSvc.3/olap1.skopus.local
A appliquer au COMPTE DE SERVICE des Services d’Analyses SQL de l’instance SSAS!
L’Authentification dans SharePoint 2010
Clients Ferme SharePoint Systeme externe
Classic (Windows Auth)
Claims
Claims
Classic (Windows Auth)
Claims
Authentification Entrante
Authentification Intra/Inter Ferme
Authentification Sortante
Normalisation de l’identite
NT TokenWindows Identity
ASP.Net (FBA)
SAL, LDAP, Custom
SAML TokenSAML TokenClaims Based Claims Based
IdentityIdentity
SPUser
NT TokenWindows Identity
SAML1.1+ADFS, etc.
ClassiqueClassique Claims/RevendicationsClaims/Revendications
Normalisation des revendications vers l’identite Windows
NTLM CLAIMS
John
Kerberos
WFE APP SQL
Le service C2WTS
C2WTS: Claims to Windows Token Service traduit les “Informations d’autorisation basées sur les revendications” interne a SharePoint en Informations d’autorisation Windows.
C2WTS est un Service Windows Fonctionne par défaut avec le compte “Local System” Bonne pratique: Utiliser un Compte de Domaine
Vous devrez créer un SPN fictif pour le C2WTS. Nous en auront juste besoin pour la Délégation Contrainte.Nous créons le SPN “SP/C2WTS”
A appliquer au COMPTE DE SERVICE du service Windows C2WTS
Le service C2WTS
Les applications de service suivantes exigent la traduction des informations d’identification fondées sur les revendications vers les informations d'identification Windows. Ce processus de traduction utilise le Claim To Windows Token Service (C2WTS):
Excel Services PerformancePoint Services InfoPath Forms Services Visio Services
TechNet - http://technet.microsoft.com/en-us/library/ff607695.aspx
“
”
Example de service C2WTS
NTLM SAML
WFE APP SQL
Excel Services
Excel Services
SA
ML
C2WTSC2WTS
SA
ML
Kerb
Kerb
Kerberos
S4U LogonS4U Logon
AD
John
Configurer C2WTS C2WTS requière le service “Cryptographic Service” veillez vous assurer de mettre en place la dépendance!
Le service C2WTS essayera de vérifier les certificats de sécurité Microsoft a son démarrage; cela nécessite une connexion Internet et les connexions par Proxy ne sont pas supportées!
Contournement1 - .Net 4 Install .Net Framework 4 (which supports Proxy connections) Some reported issues with SharePoint PowerShell and .Net 4
Contournement2 – Desactiver le controle de CRL (Liste de Revocation des Certificats) HKEY_USERS\.DEFAULT\SOFTWARE\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software
Publishing Value = State Radix= decimal Changer la valeur a '146944' pour desactiver le controle de CRL
Contournement3 – Fichier HOSTS Ajouter une entrée dans le fichier host “crl.microsoft.com” vers 127.0.0.1
Configurer C2WTS
Le compte de service C2WTS doit être administrateur local sur le server sur lequel il est en fonction.
Ce compte doit en plus avoir les permissions suivantes: Act as part of the operating system Impersonate a client after authentication Log on as a service
En utilisant la gestion des règles de sécurité de la machine locale (secpol.msc)
Scenario 1: Services Excel vers les Services d’Analyses
Requête Web Interne(Claims)
Requête de donnée(Kerberos)
C2WTS
WFE Services Excel Serviced’AnalysesSQL Server
SP/c2wtsSP/excel
Delegation Contrainte
MSOLAPSvc.3/olap1.skopus.local
STS
Services Excel et C2WTS Dans notre démo nous avons les paramètres suivant:
Le compte de service des Services Excel: “SKOPUS\SkpSvcExcel” Le compte de service de C2WTS: “SKOPUS\SkpSvcC2WTS” Les services SSAS fonctionnent sur le serveur “olap1.skopus.local” Le compte de service des services SSAS est “SKOPUS\SkpSvcSQLAnalysis”
Donc il nous faut configurer les SPNs suivant: setspn.exe –S SP/excel SKOPUS\SkpSvcExcel setspn.exe –S SP/c2wts SKOPUS\SkpSvcC2WTS setspn.exe –S MSOLAPSvc.3/olap1.skopus.local SKOPUS\SkpSvcSQLAnalysis setspn.exe –S MSOLAPSvc.3/olap1 SKOPUS\SkpSvcSQLAnalysis
La Délégation Contrainte est paramétrée par Active Directory Users & Computers
DEMO
Services Excel vers les Services d’Analyses
Configurer Kerberos et SharePoint 2010
Conclusion: Services Excel vers les Services d’Analyses Les SPNs NE sont pas requis sur l’Application Web C2WTS fait tout le “Sale” boulot ;)
Tant que vous utilisez des comptes du domaine, vous n’aurez a configurer les SPNs et la Délégation Contrainte qu’une seule fois.. Peut importe le nombre de serveurs Excel vous installerez!
PerformancePoint Services Fonctionne exactement de la même façon
(et si vous avez déjà configure les Services Excel alors le paramétrage de C2WTS a déjà été fait!)
Scenario 2: Le Lecteur de flux RSS
http://portail/ Requete Web(Kerberos)
WFE 1
LecteurRSS
http://portail-rss/ Requette Lecteur RSS(Kerberos)
Delegation Constrainte
HTTP/portail HTTP/portail-rss
APP 1
Configurer l’Application Web Administration Centrale – Changer le fournisseur d’authentification
pour Kerberos Vous devez créer les SPNs pour votre application Web Dans notre exemple, vous avez 2 URLs d’Application Web
http://portail et http://portail-rss/
Le domaine AD est skopus.local Le compte du pool d’application est SKOPUS\SkpAppPool Il vous faut donc configurer les SPNs suivants:
setspn.exe –S HTTP/portail SKOPUS\SkpAppPool setspn.exe –S HTTP/portail.skopus.local SKOPUS\SkpAppPool setspn.exe –S HTTP/portail-rss SKOPUS\SkpAppPool setspn.exe –S HTTP/portail-rss.skopus.local SKOPUS\SkpAppPool Délégation Contrainte: portail portail-rss
DEMO
Application Web
Configurer Kerberos et SharePoint 2010
Scenario 3: Serveur SQL de données
Pas réellement “requis” mais recommande nous avons dons Kerberos de disponible dans l’installation (Plus efficace aussi!)
SQL fonctionne sur le serveur app1.skopus.local Le compte de service SQL est “SKOPUS\SkpSqlDbSvc” Le port de la base de donnees SQL est 60433
Il nous faut donc configurer les SPNs suivants:
setspn.exe –S MSSQLSvc/app1.skopus.local:60433 SKOPUS\SkpSqlDbSvc setspn.exe –S MSSQLSvc/app1.skopus.local SKOPUS\SkpSqlDbSvc
DEMO
Le Serveur SQL de donnees
Configurer Kerberos et SharePoint 2010
Conclusion: Le Serveur SQL de données Rapide et facile (Pas de redémarrages nécessaires) Requête SQL pour vérifier que les connexions fonctionnent:
Select s.session_id, s.login_name, s.host_name, c.auth_scheme from sys.dm_exec_connections c inner join sys.dm_exec_sessions s on c.session_id = s.session_idwhere s.host_name = ‘WFE1’
Le journal d’evenements sur le Serveur Web Evènement de connexion (4624) Le Package d’authentification devrait être “Kerberos”
Scenario 4: SQL Server Reporting Services
Web Request(Kerberos)
Web Service(Kerberos)
Data Request(Kerberos)
WFE SQL ServerReportingServices
SQL Server AnalysisServices
HTTP/app1
Constrained Delegation
MSOLAPSvc.3/olap1.sp2010.local
HTTP/kerberos
Scenario 4: Services de Rapports
Les Services de Rapport SQL Serveur (SSRS) fonctionne depuis un Service Web sur la machine Reporting Services, c’est une connexion HTTP standard
La web part de l’affichage de rapport (sur le Frontal Web) est le lien de communication avec SSRS
Ainsi nous aurons besoin de: Un SPN pour l’application Web (Ou s’execute la web part de
l’afficheur de rapports) Un SPN pour notre URL du service Web de SSRS Une délégation depuis l’Application Web Le service Web SSRS
(2ieme hop) Un SPN pour le service SSAS Une délégation depuis le service Web SSRS SSAS (3ieme hop)
Scenario 4: Services de Rapports
Nous avons deja configure les SPNs suivants (dans les etapes 1 et 2): L’Application Web Les Services d’Analyses SQL Server (SSAS)
Donc il nous manque juste les SPNs pour les services de rapport
setspn.exe –S HTTP/app1.skopus.local SP2010\SkpSqlRpSvc setspn.exe –S HTTP/app1 SP2010\SkpSqlRpSvc
La Délégation Contrainte est, cette fois encore, paramétrée par Active Directory Users & Computers
DEMO
SSRS SSAS
Configurer Kerberos et SharePoint 2010
DésoléDésoléMais ca prend du temps!Mais ca prend du temps!
Conclusion: SSRS SSAS
Le Service Web SSRS est une Application Web Les SPNs sont requis pour les Services Web SSRS Comme SSRS ne support pas le Claims en 2008 R2, Kerberos
fera toujours le hop depuis le Frontal Web! Mais ca change ;) Vive SQL 2012…
Si les Services SSRS sont montes en grappe, il faut alors utiliser l’adresse du cluster.
Le journal d’evenements Windows et le Profiler SQL sont des moyens simples pour voir si cela fonctionne
Le même journal d’evenements est utilise pour l’Application Web Les mêmes vérifications faites pour les services Excel avec le
Profiler SQL
Trucs et astuces… C2WTS peut être compliquer a paramétrer. Le service doit fonctionner sur le bon
serveur…
Les applications web utilisant une authentification basée sur formulaires ou sur SAML personnalise NE PEUVENT PAS UTILISER C2WTS
Les Délégations Contraintes Kerberos ne peuvent pas traverser les frontières du domaine
Les Applications de Service Applications et les sources de données externes doivent donc être dans le même domaine
Le Serveur Windows 2008 contient un bug connu Kerberos AES bug Limitée toutefois au fait de fonctionner avec 2 machines qui seraient équipées de Windows
Server 2008 ou Windows Vista (ca ne serait quand même pas de chance :P) Un Hotfix Microsoft est disponible; http://support.microsoft.com/kb/969083 Note – Ce bug n’existe pas avec Windows Server 2008 R2!
Les SPNs sont vraiment très faciles a casser... Toutes erreur de type peut être fatale!
Trucs et astuces…
PowerPivot Pensez a paramétrer le fichier web.config caché dans
:“C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\PowerPivot”
Reporting Services Pensez a paramétrer le fichier de connexion
rsreportserver.config caché dans le répertoire du service SSRS
“ C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer ”
Lancez vous.. PREVOYEZ PREVOYEZ PREVOYEZ Plus de 90% des mauvaises implémentations proviennent d’erreurs de
configuration des SPNs
Kerberos est un prérequis pour certains scenarii de business intelligence
Pas besoin d’exorciste, ni magie noire… Vous pouvez vérifier le fonctionnement avec des outils standards
Journaux d’evenements Windows (Sur les Serveurs Web) SQL Profiler (Sur les Bases de Données) Fiddler (Sur le Client)
Il faut maitriser l’AD… Donc prévoyez de vous faire de nouveaux amis chez les Administrateurs de votre domaine.
La délégation est un prérequis si vous vous engages sur le service
Liens Utiles…
TechNet – What is Kerberos Authentication?
http://technet.microsoft.com/en-us/library/cc780469(WS.10).aspx
Microsoft Guide – Configuring Kerberos Authentication for Microsoft SharePoint 2010 products
http://www.microsoft.com/download/en/details.aspx?id=23176
TechNet – Plan for Kerberos Authentication (SharePoint 2010)
http://technet.microsoft.com/en-us/library/ee806870.aspx
Questions...
A mon tour ;)
Question 1
Une nouvelle Application web vient d’etre ajoutée a SharePoint avec le host header REPORTS. Le site SharePoint se trouve sur le serveur frontal SP2010-WFE-01.skopus.com. L’application devra etre accessible par l’adresse https://reports.skopus.com. Quelle(s) ligne(s) de commande dois-je utiliser pour ajouter les Service Principal Names corrects?
setspn.exe –s HTTP/reports SP2010-WFE-01setspn.exe –s HTTP/reports.skopus.com SP2010-WFE-01
Question 2
Que dois-je verifier dans mon DNS pour assurer le bon fonctionnement de Kerberos?
Nom d’Hote (A Record) seulementEt surtout…Surtout pas d’Alias (CNAME)
Annexes
Problèmes Kerberos connus
Configurer Kerberos et SharePoint 2010
Issue: Clients (.NET, IE) create malformed SPNs for HTTP services running on non-default ports by forming the SPN without port number.
http://support.microsoft.com/kb/908209/en-us http://technet.microsoft.com/en-us/library/
cc263449.aspxExample:
If the web application is running at http://intranet.contoso.com:1234, the client will create a SPN for http/intranet.contoso.com instead of http/intranet.contoso.com:1234
HTTP and non-default ports
HTTP and non-default ports
To workaround this issue, register SPNs with and without port number. Example:
Actual URL: http://intranet.contoso.com:12345
SPNs:
http/intranet
http/intranet.contso.com
http/intranet:12345
http/intranet.contoso.com:12345
Option 2: To resolve this issue, you'll need to set the FEATURE_INCLUDE_PORT_IN_SPN_KB908209 registry value (as per http://support.microsoft.com/kb/908209).
SPN Uses Host Name instead of Alias
Issue: Clients (.NET, IE) create malformed SPNs by using the host name instead of the alias name of the target service
http://support.microsoft.com/kb/911149/en-us http://support.microsoft.com/kb/938305/en-us
Example: A Record: wfe01.skopus.local CNAME: intranet.skopus.local (aliases wfe01.skopus.local) If the client attempts to authenticate with http://intranet.skopus.local
it creates a malformed SPN and requests a Kerberos ticket for http/wfe01.skopus.local instead of http/intranet.skopus.local
SPN Uses Host Name instead of Alias
To workaround this issue, configure Kerberos enabled services using DNS A records instead of CNAME aliases.
Use the FEATURE_USE_CNAME_FOR_SPN_KB911149 registry key documented in this article: http://support.microsoft.com/kb/911149.
The hotfix mentioned in KB article will correct this issue for Internet Explorer but will not correct the issue for the .NET framework
Kerberos will fail if ticket is too large
In some environments, users may be members of many Active Directory groups, which can increase the size of their Kerberos tickets. If the tickets grow too large, Kerberos authentication can fail.
For more information about how to adjust the max token size see:
New resolution for problems with Kerberos authentication when users belong to many groups
Note: When adjusting max token size, be aware that if you configure the max token size beyond the maximum value for the registry setting, you may see Kerberos authentication errors. It is recommended to not exceed 65535 decimal, FFFF hexadecimal, for max token size.
Kerberos Web App Setup
Appendix
Web Application Settings
AuthN Provider
Friendly Warning, More to Do…
IIS Authentication Double Check
Ensure Windows Auth is Enabled
Make Sure not to Use Kernel Mode Auth
Ensure the Negotiate Provider is Enabled This is done by SharePoint via the Web
App Settings
Don’t use Aliases in DNS (CNAME)
Register the SPNs
Ways to Verify SPNs (Ensure no Duplicates)
You can also check for SPNs in Active Directory
Purge your tickets before testing the web app
After Making a Request, Check the Ticket Cache
Netmon Capture of the AuthN Sequence
Excel Services
Appendix
Check Data Source to Ensure Kerberos is Enabled
Register SPNs for Data Source (SQL Example)
Start the Claims to Windows Token Service
Register Dummy SPN to get to Delegation Tab
Configure Constrained Delegation to Data Source
Dump of claims on Windows Claims Site You must use Windows Claims for Excel
Services with C2WTS to work
Test Connection Refresh
BCS Screen Shots
Appendix
Configure SPNs on the Web App Service Account
Configure Delegation from Web App to Data Source
Configure ECT Connection
Use Per-User (User’s Identity) AuthN
Recommended