Intégration avec SharePoint 2010/2013
Auth0 peut aider à simplifier radicalement le processus d’authentification pour SharePoint. Dans ce didacticiel, vous apprendrez à ajouter l’authentification unique (SSO) à Sharepoint à l’aide d’Auth0. Vos utilisateurs pourront se connecter en utilisant n’importe lequel de nos fournisseurs d’identité sociale (Facebook, X, Github, etc.), fournisseurs d’entreprise (LDAP, Entra, ADFS, etc.) ou avec un nom d’utilisateur et un mot de passe.
Configuration
1. Ajout de l’intégration à votre compte
La première chose que vous devez faire est d’accéder à la section SSO Integrations (Intégrations SSO) dans le Dashboard et sélectionner SharePoint à partir de la liste d’applications.
2. Suivez la documentation en direct
Sur l’onglet Réglages, vous devrez saisir l’URL de l’application Web SharePoint et l’URL externe (généralement le point de terminaison Internet dans vos mappages d’accès alternatifs).
La documentation en direct commencera par l’installation des CmdLets Auth0 pour SharePoint :

Une fois ceux-ci installés, vous pourrez activer/désactiver Auth0 et le fournisseur de demandes pour les différentes applications Web. Vous devrez activer l’authentification avec Auth0 :

Ensuite, installez le fournisseur de demandes pour vous assurer que le People Picker (Sélecteur de personnes) et les autorisations fonctionnent correctement :

Une fois ces scripts exécutés, vous terminerez la configuration dans l’Administration centrale :

Veuillez noter que l’appel à Enable-Auth0
peut être adapté à :
Modifier l’identifiant unique des utilisateurs (comme l’adresse courriel ou l’identifiant d’utilisateur)
Autoriser la transmission de demandes supplémentaires à SharePoint
Activer ou désactiver l’authentification Windows par défaut
L’exemple suivant ajoute également la demande de Rôle au mappage de demandes et autorise l’authentification Windows :
Enable-Auth0
-auth0Domain:"fabrikam.auth0.com"
-clientId:"bOFty3tWgpijnwMcltysNFqHgO1ziz1I"
-webAppUrl:"http://fabrikam-sp/"
-identifierClaimType:"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"
-claims:@(
"Email|http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
"Role|http://schemas.microsoft.com/ws/2008/06/identity/claims/role", "Client ID|http://schemas.auth0.com/clientID",
"Given Name|http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
"Surname|http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "Picture|http://schemas.auth0.com/picture")
-allowWindowsAuth
Was this helpful?
3. Vous avez maintenant configuré Sharepoint
Vous avez configuré SharePoint pour utiliser Auth0 comme intermédiaire SSO. Lorsque vos utilisateurs visitent votre site, une page de connexion affichant toutes les connexions activées pour cette application leur sera présentée.
En fonction des demandes qui ont été mappées lors de l’installation du fournisseur de demandes, ces informations supplémentaires seront également disponibles dans la page des paramètres personnels de l’utilisateur :


Veuillez noter que vous pouvez adapter l’appel à Enable-Auth0
pour :
Modifier l’identifiant unique des utilisateurs (comme l’adresse courriel ou l’identifiant d’utilisateur)
Autoriser la transmission de demandes supplémentaires à SharePoint
Activer ou désactiver l’authentification Windows par défaut
L’exemple suivant ajoute également la demande de Rôle au mappage de demandes et autorise l’authentification Windows :
Enable-Auth0
-auth0Domain:"fabrikam.auth0.com"
-clientId:"bOFty3tWgpijnwMcltysNFqHgO1ziz1I"
-webAppUrl:"http://fabrikam-sp/"
-identifierClaimType:"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"
-claims:@(
"Email|http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
"Role|http://schemas.microsoft.com/ws/2008/06/identity/claims/role", "Client ID|http://schemas.auth0.com/clientID",
"Given Name|http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
"Surname|http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "Picture|http://schemas.auth0.com/picture")
-allowWindowsAuth
Was this helpful?
SharePoint utilisera désormais Auth0 comme intermédiaire SSO.
Personnaliser la page de connexion
Vous pouvez personnaliser la page de connexion en suivant les instructions dans Connexion universelle Auth0 .
Vous souhaiterez peut-être fournir un moyen de permettre aux utilisateurs de s’authentifier auprès de Sharepoint à l’aide de l’authentification Windows, en contournant Auth0. Vous pouvez le faire en personnalisant la page de connexion, en ajoutant un lien vers le point de terminaison d’authentification Windows (généralement similaire à : https://yoursharepointserver/_windows/default.aspx?ReturnUrl=/_layouts/15/Authenticate.aspx
).
Une façon de procéder consiste à utiliser jQuery pour modifier le gadget logiciel Lock et ajouter un lien vers le point de terminaison d’authentification Windows.
Vous devez ajouter une référence à jQuery en haut de la <body>
section de la page de connexion personnalisée.
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
Was this helpful?
Avant d’appeler lock.show()
, ajoutez le code pour modifier le DOM HTML qui ajoute le lien.
// construct Lock
// var lock = ...
[...]
// One or more SharePoint client IDs here for which you want
// a Windows Auth button
var sharepointClientIDs = ['your_sharepoint_client_id'];
if (sharepointClientIDs.indexOf(config.clientID) >= 0) {
lock.on('signin ready', function() {
var getParameterByName = function(name) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(window.location.search);
if (results == null) return null;
else return results[1];
};
// get the host from the callback URL
var parser = document.createElement('a');
parser.href = config.callbackURL;
var host = parser.host;
var windowsAuthURL = "https://" + host + "/_windows/default.aspx?ReturnUrl=/_layouts/15/Authenticate.aspx";
var wctx = getParameterByName("wctx");
if (wctx) {
windowsAuthURL += "&Source=" + wctx;
}
$('.auth0-lock-tabs-container')
.after('<div><p class="auth0-lock-alternative" style="padding:5px 0;">' +
'<a class="auth0-lock-alternative-link" ' +
'href="/docs/'+ windowsAuthURL + '">' +
'Login with Windows Authentication!!!</a>' +
'</p><p><span>or</span></p></div>').attr('href','https://nowhere');
});
}
lock.show();
Was this helpful?
Dépannage
Lorsque vous travaillez avec des demandes et des autorisations supplémentaires, il peut toujours être utile d’afficher les demandes de l’utilisateur actuel. L’article de Liam Clearly de Microsoft Professionnal, Claims Viewer Web Part [en anglais], peut être utilisé pour résoudre tout problème lié aux demandes de l’utilisateur :
Journaux dans SP2010
Les erreurs et avertissements sont enregistrés dans le « Unified Logging Service » (Service de journalisation unifié) de SharePoint, et des outils comme ULS Viewer peuvent être utilisés pour résoudre tout problème que vous pourriez rencontrer lors de l’utilisation du fournisseur de demandes (Claims Provider).
Pour en savoir plus sur ULS Viewer et récupérer les spécifications, veuillez consulter la documentation de Microsoft ULS Viewer [en anglais].
Journaux dans SP2013
Pour SharePoint 2013, nous n’utilisons plus Unified Logging Service pour nos journaux, mais nous sommes passés à Event Tracing Windows à la place. Il offre davantage de performances et plusieurs façons de capturer tous les événements enregistrés.
Pour visualiser les journaux en temps réel, vous pouvez télécharger le fichier Logs Processor (Processeur de journaux)d’Auth0 depuis Github. Exécutez cet outil sur votre/vos serveur(s) SharePoint pour identifier chaque appel que SharePoint effectue vers le fournisseur de demandes :
Prochaines étapes
Autorisation
Les demandes transmises depuis Auth0 peuvent également être utilisées pour l’autorisation dans SharePoint. Par exemple, un utilisateur avec la demande de Rôle contenant Fabrikam HR devrait avoir accès ou être un contributeur sur un site spécifique.
Prenons Entra ID comme exemple. Dans cet Directory dans le nuage, les utilisateurs peuvent faire partie de groupes et David fait partie de Fabrikam HR.
Lorsque David se connecte à l’aide de son compte Entra ID (et que l’attribut Security Groups [Groupes de sécurité] est activé pour cette connexion), les appartenances aux groupes seront stockées dans l’attribut groups
du profil de l’utilisateur.
Si nous voulons rendre ces groupes disponibles en tant que Rôles dans SharePoint, nous devrons élaborer une Rule (Règle) qui ajoute ceci à la configuration SAML. Cette règle ne s’exécutera que pour l’application nommée Fabrikam Intranet (SharePoint) (Intranet de Fabrikam).
function (user, context, callback) {
if (context.clientName === 'Fabrikam Intranet (SharePoint)') {
context.samlConfiguration.mappings = {
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier': 'user_id',
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress': 'email',
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name': 'name',
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname': 'given_name',
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname': 'family_name',
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn': 'upn',
'http://schemas.microsoft.com/ws/2008/06/identity/claims/role': 'groups'
};
}
callback(null, user, context);
}
Was this helpful?
Elle ajoutera une demande sortante supplémentaire http://schemas.microsoft.com/ws/2008/06/identity/claims/role
contenant les groupes
et qui sera utilisée par SharePoint pour l’autorisation.
Lors de l’installation du fournisseur de revendications, nous devons autoriser la transmission de la demande de Rôle à SharePoint, en l’ajoutant à la liste de mappage des demandes :
Enable-Auth0
-auth0Domain:"fabrikam.auth0.com"
...
-claims:@(
"Email|http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
"Role|http://schemas.microsoft.com/ws/2008/06/identity/claims/role",
...)
...
-Verbose
Was this helpful?
Par défaut, un utilisateur n’aura pas accès au site.
Désormais, au lieu d’ajouter cet utilisateur spécifique à un groupe SharePoint (par ex. : Contributeurs) nous pouvons maintenant ajouter un Rôle à un groupe SharePoint. Voici un exemple de script PowerShell qui montre comment ajouter des membres « Fabrikam HR » au groupe Contributeurs :
$webName = "http://fabrikam-sp"
$groupName = "Contributors"
$roleClaim = "Fabrikam HR"
$sts = Get-SPTrustedIdentityTokenIssuer "Auth0"
$claimPrincipal = New-SPClaimsPrincipal -ClaimValue $roleClaim -ClaimType "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" -TrustedIdentityTokenIssuer $sts
$web = Get-SPWeb $webName
$user = New-SPUser -UserAlias $claimPrincipal.ToEncodedString() -Web $web
$group = $web.SiteGroups[$groupName]
$group.AddUser($user)
Was this helpful?
Après avoir ajouté cette valeur de demande au groupe Contributeurs, David pourra accéder au site et modifier son contenu.
Synchronisation du profil utilisateur
Par défaut, SharePoint est capable de synchroniser les informations de profil utilisateur provenant d’Entra ID. Désormais, avec Auth0, les utilisateurs peuvent provenir de différents types de connexions (du réseau social à l’entreprise), ce qui nécessitera une approche différente pour synchroniser les profils utilisateurs.
Une première approche consisterait à créer une tâche de minuterie qui s’exécute toutes les quelques heures, interroge le point de terminaison des utilisateurs d’Auth0 et synchronise les informations de profil pour ces utilisateurs.
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Microsoft.Office.Server;
using Microsoft.Office.Server.UserProfiles;
namespace UserProfileSync
{
class Program
{
static void Main(string[] args)
{
// Call the Auth0 Management API - https://docs.auth0.com/api/v2
using (var site = new SPSite("http://servername"))
{
var context = SPServiceContext.GetContext(site);
var profileManager = new UserProfileManager(context);
var accountName = "i:05.t|auth0|john@example.org";
var userProfile = profileManager.GetUserProfile(accountName);
userProfile[PropertyConstants.HomePhone].Value = "+1 594 9392";
userProfile.Commit();
}
}
}
}
Was this helpful?
Alternativement, cette logique pourrait également être implémentée sous la forme d’un HttpModule qui s’exécute à chaque fois que l’utilisateur se connecte :
public class PersistUserClaimsHttpModule : IHttpModule
{
private SPFederationAuthenticationModule FederationModule
{
get { return HttpContext.Current.ApplicationInstance.Modules["FederatedAuthentication"] as SPFederationAuthenticationModule; }
}
public void Init(HttpApplication context)
{
FederationModule.SecurityTokenValidated += OnFederationSecurityTokenValidated;
}
private void OnFederationSecurityTokenValidated(object sender, SecurityTokenValidatedEventArgs e)
{
// Use e.ClaimsPrincipal
}
}
Was this helpful?