Le Post Infeeny

Les articles des consultants et experts Infeeny

#SPC2012 : Developing Hybrid apps for SharePoint

Thurday, 10h30, Rob Howard, Program Manager, SharePoint Developer

Résumé

Une grosse partie d’introduction est de la redite de session précédente.

La deuxième partie explique comment configurer SharePoint pour qu’il utilise ACS en O365 ou un high trust (STS) en On-prem grâce à un certificat pour gérer la sécurité de la même façon entre les deux environnements mais avec la même App.

On va rentrer dans le code, JSON, token OAuth.

// Review of SP App Authentication

C’est le même monsieur qui a fait la session sur OAuth, et ce sont les mêmes slides, c’est annoncé et il s’excuse, il fait 10min de redite par rapport à la session de mardi.

// Scénarios Hybrid

Vendre une app pour des clients sur O365 ou on prem.

Créer une App avec un code qui puisse fonctionner pour les clients qui un O365 ou un on-prem.

Connecter une App dans le cloud avec une App en on-prem.

// App identity

En mode cloud, nous avons Azure AD qui sert de STS (token service). L’app et O365 trust l’Azure AD.

En on prem, on se base sur du certificat.

Hybrid, avoir des serveurs App et SP qui trust un Azure AD.

Pour du Hybrid, les autohosted apps ne sont pas gérées ni supportées pour les fermes on-prem.

Les cross-firewall server-side calls peuvent être un problème.

// DEMO : Meeting Scheduler App

Il a une APP qu’il upload sur O365 dans l’app catalog (SharePoint hosted).

Il ajoute l’app à un site. Il montre que l’app est bien dans un domaine.

Il met un élément dans sa liste (événement). Cela envoie un mail à tous les participants les invitant à saisir leurs préférences.

Il a un formulaire comme un Doodle qui lui permet de sélectionner des dates préférentielles.

Le créateur peut valider la date où le max de personnes est dispo.

Il créé un fichier ICS en javascript.

–> Juste pour montrer qu’il a créé une App qui fonctionne on-prem autant que sur O365

// Access tokens and issuers

En décodant l’access token déjà évoqué dans d’autres sessions.

Il y a le x5t correspondant au thumbprint, identifiant

iss est l’issuer, est le token service qui va permettre à SP de savoir s’il connait ce fournisseur de token.

Les deux vont permettre à SP de savoir s’il connait le fournisseur de Token + s’il connait la personne qu’il le demande (x5t-thumbprint).

Ensuite, le aud est un guid + url. guid représente l’audience qui peut profiter de ce token (SharePoint va avoir un numéro, Exchange un autre, Lync un autre).

identityprovider permet de savoir quel est le type d’identité ? (Microsoft Online ici).

Le nameid identifie cette identité.

actor est un Guid, représentant le client id qui effectue la requête.

En online, on a un Azure AD, qui va créer un access token grâce à un certificat. SharePoint, on va créer un ACS proxy qui va déclarer Azure AD comme trusté. Azure AD va gérer les tokens ensuite.

En On-prem, il y a un Trusted Security Token Issuer, qui va jouer le rôle de ACS mais en on prem.

// DEMO : Création d’une app high trust on-prem

En on-prem, il faut qu’on configure SP, pour qu’il y ait un trust grâce à un certificat.

Cela se passe en Powershell, avec l’utilisation de issuerId (ISS).

On récupère le realm, Get-SPAuthenticationRealm -ServiceContext http://sphvm-57892.

On récupère le certificat Get-PfxCertificate.

Du code Powershell que je n’ai pas noté. Grosso modo, il déclare le token issuer sur SP.

Il créé une app Provider Hosted.

Le wizard VS 2012, propose d’utiliser un client secret via ACS ou un certificate.

On utilise le certificat où on met le certificat PFX et le mot de passe.

Il a une app, où il ajoute une List en XML.

Dans son ASPX, il utilise le CSOM pour ajouter un item.

Dans le load, il utilise le TokenHelper du projet pour faire un GetS2SAccessTokenWithWindowsIdentity(appWeb, Request.LogonUserIdentity) qui lui permet de générer son propre token.

Le token généré est passé à sa création de liste pour qu’il ait l’accès, utilisation de TokenHelper.GetContext…

// Configuring a hybrid SP environment

Il va configurer ACS comme trusted token issue sur SP

C’est du Powershell.

Il récupère un SPWeb.

Il définit un $ACSMetadataEndPoint étant l’URL, d’ACS accounts.accesscontrol.windows.net… il met l’URL du realm en format JSON.

Il récupère le flux via Invoke-RestMethod.

Il utilise Set-SPAutneticationRealm en passant le flux JSON.

Il créé un proxy Azure ACS Service Application Proxy en passant l’endpoint.

Il créé New-TrustedSecurityTokenIssuer en mettant également l’endpoint ACS.

Le code décrit ici n’est pas complet mais le but est bien de définir ACS comme étant trusté par SP.

// Creating a hybrid SharePoint App

Il utilise ACS en ligne quand on est sur O365.

Il utilise son propre token issue avec certificat lorsqu’il est on-prem.

Il créé un projet VS2012, App SharePoint, il met une URL on-prem, Provider-hosted.

Il utilise le certificat avec le PFX et le mot de passe.

Il explique que VS2012, fait le travail pour lui de mettre dans dans le web.config pour créer un client secret.

Il va dans le default.aspx. Et ajoute un snippet deux fois.

Premier test, il n’a pas de tokenstring (GetContextTokenFromRequest(Request)) il affiche le Title du hostWeb. Il va utiliser le GetS2S…. pour récupérer le token généré.

Sinon Deuxième, il utilise GetClientContextWithContextToken(token).

Il va sur IE, sur SP Online, il utilise _layouts/15/appregnew.aspx pour générer un App Id, App Secret en se basant dans le web.config sur le client Id et secret qui était généré par Visual Studio. Il met l’appdomain à son localhost. Il upload l’App qu’il a utilisé côté on-prem.

En allant sur l’App, il va dans le 2ème test, car il est un context token.

Sa démo échoue, son explication est qu’il s’est trompé de package App. Car l’audience n’est visiblement pas la bonne.

Dernière chose qu’il veut nous montrer est qu’en faisant publish et en renseignant un client id et secret commun, il a un .APP et un .ZIP aussi qui peut lui servir à déployer son App sur Azure par exemple

Christian

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :