Partager via


Autoriser les utilisateurs de compléments hébergés par un fournisseur au moment de l’exécution avec OAuth

Fournir un accès autorisé aux ressources SharePoint en utilisant OAuth lors de l’exécution des compléments hébergés par le fournisseur.

S’applique à : SharePoint 2013 | Compléments SharePoint | SharePoint Online

Vos utilisateurs peuvent accéder aux compléments SharePoint en ouvrant un site SharePoint, en choisissant Contenu du site, puis en choisissant le complément. SharePoint redirige les utilisateurs vers le web distant où votre complément hébergé par le fournisseur s’exécute. Étant donné que les utilisateurs accèdent au complément à partir de SharePoint, les utilisateurs sont autorisés par SharePoint avant qu’ils puissent accéder au complément.

Par ailleurs, si vos utilisateurs accèdent directement à l’URL de votre complément hébergé par le fournisseur, ce complément doit les autoriser au moment de l’exécution à l’aide OAuth. Dans ce scénario, le complément hébergé par le fournisseur doit gérer l’autorisation, car votre utilisateur n’a pas été autorisé tout d’abord par SharePoint. L’exemple Core.DynamicPermissions vous montre comment demander dynamiquement des autorisations à un site web à l’aide d’OAuth. Utiliser cette solution pour :

  • Autoriser les utilisateurs qui arrivent directement à votre complément hébergé par le fournisseur plutôt que d’accéder à votre complément à partir de SharePoint. Par exemple, vous ne souhaitez peut-être pas que vos utilisateurs utilisent l’interface utilisateur SharePoint. À la place, vos utilisateurs peuvent utiliser un complément hébergé par le fournisseur qui affiche les données pertinentes récupérées à partir de SharePoint.

  • Créer un complément hébergé par le fournisseur qui peut authentifier les utilisateurs avec OAuth et peut être vendu sur l’Office Store.

Avant de commencer

Pour commencer, téléchargez l’exemple de complément Core.DynamicPermissions à partir du projet modèles et pratiques Office 365 Développeur sur GitHub.

Avant d’exécuter l’exemple de code :

  • Vérifiez que vous disposez des autorisations Gérer sur le site. En savoir plus surComprendre les niveaux d’autorisation

  • Inscrire le complément sur un site SharePoint à l’aide d’ AppRegNew.aspx :

    1. Accédez à appregnew.aspx sur votre site SharePoint. Par exemple, si vous souhaitez utiliser votre complément sur le site contoso.sharepoint.com, accédez à http://contoso.sharepoint.com/_layouts/15/appregnew.aspx.

    2. Choisissez Générer pour générer un nouvel ID client.

    3. Choisissez Générer pour générer une nouvelle clé secrète client.

    4. Entrez un titre pour votre complément dans Titre.

    5. Dans Domaine de complément, entrez l’URL de votre complément hébergé par le fournisseur. Par exemple, entrez localhost.

    6. Dans URI de redirection, entrez l’URL de votre complément hébergé par le fournisseur. SharePoint redirigera votre complément vers cet URL après autorisation et accordera l’autorisation d’accès. Par exemple, entrez https://localhost:44363/Home/Callback. Vous pouvez obtenir le nom de domaine et le numéro de port à partir de la propriété URL SSL du projet Core.DynamicPermissionsWeb dans Visual Studio.

    7. Sélectionnez Créer.

  • Copiez l’ID client et la clé secrète client dans l’élément appSettings dans Core.DynamicPermissionsWeb\web.config.

À l’aide du complément Core.DynamicPermissions

Lorsque vous exécutez l’exemple de code :

  1. Dans Se connecter à Office 365, entrez l’URL du site SharePoint sur lequel vous avez inscrit votre complément, puis choisissez Se connecter. Par exemple, entrez https://contoso.sharepoint.com.

  2. Connectez-vous à votre site Office 365.

  3. Si vous êtes invité à accorder votre consentement aux autorisations demandées par le complément, choisissez Approuver. Notez que vous êtes redirigé vers la page /_layouts/15/OAuthAuthorize.aspx.

    Remarque

    Votre utilisateur doit disposer des autorisations Gérer pour accorder son consentement aux autorisations demandées par le complément. Pour plus d’informations, reportez-vous à la rubrique Flux OAuth avec code d’autorisation pour les compléments SharePoint.

  4. Dans Connexion réussie à Contoso, entrez le nom d’une nouvelle liste à créer, puis choisissez Créer une liste.

  5. Vérifiez que Listes dans Contoso, qui affiche toutes les listes qui appartiennent au site Contoso, affiche votre nouvelle liste.

Lorsque vous choisissez Se connectersur Se connecter à Office 365, connectez-vous dans Controllers\HomeController.cs, qui appelle ensuite TokenRepository.Connect . L’URL entré par l’utilisateur sur Se connecter à Office 365 est transmis à TokenRepository.Connect en tant que hostUrl.

Remarque

Le code dans cet article est fourni tel quel, sans garantie d’aucune sorte, expresse ou implicite, y compris mais sans s’y limiter, aucune garantie implicite d’adéquation à un usage particulier, à une qualité marchande ou une absence de contrefaçon.

 public ActionResult Connect(string hostUrl)
        {
            TokenRepository repository = new TokenRepository(Request, Response);
            repository.Connect(hostUrl);
            return View();            
        }

TokenRepository.Connect appelle TokenHelper.GetAuthorizationUrl . TokenHelper.GetAuthorizationUrl renvoie l’URL de redirection à OAuthAuthorize.aspx à l’aide de hostUrl et les autorisations sur la ressource SharePoint souhaitées. OAuthAuthorize.aspx est utilisé pour autoriser les utilisateurs à l’aide de OAuth. Lorsqu’il est redirigé vers OAuthAuthorize.aspx, l’utilisateur doit se connecter à Office 365, puis donner son consentement aux autorisations demandées par le complément ou approuver le complément. L’autorisation souhaitée sur la ressource SharePoint est Web.Manage . Après l’autorisation de l’utilisateur, l’exemple de code crée des listes sur le site SharePoint. Pour créer des listes sur un site SharePoint, les utilisateurs doivent disposer des autorisationsWeb.Manage.

Remarque

TokenHelper.GetAuthorizationUrl renvoie une URL au format https://contoso.sharepoint.com/_layouts/15/OAuthAuthorize.aspx?IsDlg=1&client_id=<ID> client&scope=Web.Manage&response_type=code, où <ID> client est l’ID client du complément. Si votre complément est inscrit via le tableau de bord vendeur, un site Office 365 peut installer le complément. Si votre complément n’est pas inscrit via le tableau de bord vendeur, vous devez inscrire votre complément à l’aide de appregnew.aspx puis mettre à jour Core.DynamicPermissionsWeb\web.config. Pour plus d’informations, voirInscrire les compléments SharePoint 2013.

 public void Connect(string hostUrl)
        {
            if (!IsConnectedToO365)
            {
                HttpCookie spHostUrlCookie = new HttpCookie("SPHostUrl");
                spHostUrlCookie.Value = hostUrl;
                spHostUrlCookie.Expires = DateTime.Now.AddYears(5);
                _response.Cookies.Add(spHostUrlCookie);
                _response.Redirect(TokenHelper.GetAuthorizationUrl(hostUrl, "Web.Manage"));
            }
        }

Après l’autorisation, le complément est redirigé vers Callback in Controllers\HomeController.cs, qui est l’URI de redirection spécifié sur appregnew.aspx. TokenHelper transmet le code d’autorisation, code , en rappel . Pour accorder des token décrits plus loin dans cet article, le code d’autorisation, codedoit être renvoyé vers rappel . Rappel appelle ensuite TokenRepository.Callback.

 public ActionResult Callback(string code)
        {
            TokenRepository repository = new TokenRepository(Request, Response);
            repository.Callback(code);
            return RedirectToAction("Index");
        }

TokenRepository.Callback appelle TokenCache.UpdateCacheWithCode, qui utilise TokenHelper.GetAccessToken pour obtenir un jeton d’accès OAuth en fonction du code d’autorisation code.

public void Callback(string code)
        {
            HttpCookie spHostUrlCookie = _request.Cookies["SPHostUrl"];
            if (null != spHostUrlCookie)
            {
                Uri sharePointSiteUrl = new Uri(spHostUrlCookie.Value);
                TokenCache.UpdateCacheWithCode(_request, _response, sharePointSiteUrl);
            }
        }
 public static void UpdateCacheWithCode(HttpRequestBase request, HttpResponseBase response, Uri targetUri)
        {
            string refreshToken = TokenHelper.GetAccessToken(request.QueryString["code"], "00000003-0000-0ff1-ce00-000000000000", targetUri.Authority, TokenHelper.GetRealmFromTargetUrl(targetUri), new Uri(request.Url.GetLeftPart(UriPartial.Path))).RefreshToken;
            SetRefreshTokenCookie(response.Cookies, refreshToken);
            SetRefreshTokenCookie(request.Cookies, refreshToken);
        }

Votre complément a désormais du jeton d’accès pour cet utilisateur et pouvez donc créer des listes sur le site SharePoint.

Voir aussi