Využití Facebook a Microsoft Account identit pro přihlášení k SharePoint 2013

V případě kdy potřebujeme zpřístupnit SharePoint pro externí uživatele, potřebujeme rozhodnout, jaké identity budeme pro externí uživatele využívat. SharePoint samozřejmě standardně využívá Active Directory účty, ale v závislosti na počtu a typu externích uživatelů, může být správa AD účtů pro externisty hodně náročnou a nepříjemnou činností.

Jedním z řešení tohoto problému, může být využití Facebook nebo Windows Live ID identit pro přístup do SharePointu.

Co budeme potřebovat:

  1. Windows Azure Account s Access Control Service (ACS)
  2. Facebook account integrovaný s Facebook Developer Aplication
  3. SharePoint 2013
  4. X.509 certifikát pro digitální podepsání tokenů vydaných Azure ACS

Postup:

  1. Vytvoření FaceBook aplikace, která podporuje Facebook Login
  2. V Azure ACS vytvoříme nový Identity Provider, Relying Party a Rule Group
  3. Na závěr provedeme konfiguraci SharePointu, kde přidáme Azure ACS jako Trusted Identity Providera

Vytvoření Azure ACS namespace

V Azure portálu vybereme Access Control a zadáme vhodný název.

image

Facebook Aplikace

Na https://developers.facebook.com/apps clip_image001

Zvolíme vytvoření nové aplikace

image

Zvolíme vhodné jméno

image

Jako Site URL zadáme jméno Azure ACL NameSpace zadané dříve do Azure portálu.

App ID a App Secret budeme potřebovat pro konfiguraci Identity Providera v ACS.

image

Konfigurace ACS Identity Provider

Zvolíme Manage

image

V ACS konfiguraci si můžeme všimnout, že Windows Live ID je již předkonfigurovaný. Potřebujeme tedy nakonfigurovat pouze Facebook jako Identity Providera.

image

Zadáme údaje, které jsme získali z Facebook aplikace. Klikneme na Save.

image

V dalším kroku budeme konfigurovat Relying Party – v tomto případě tedy SharePoint. Zadáme příslušné URL.

image

V Rule groups poté vygenerujeme Rules pro jednotlivé Identity Providery.

image

image

V dalším kroku nahrajeme do ACS certifikát pro podepisování tokenů.

image

V tomto případě je použít certifikát od Windows CA, ale pro testovací účely je možné použít i například self-signed certifikát, který můžeme získat tímto způsobem.

MakeCert.exe -r -pe -n "CN=osharepoint.accesscontrol.windows.net" -sky exchange -ss my -len 2048 -e 08/04/2015

image

Na závěr můžeme přikročit ke konfiguraci SharePointu

.V SharePoint Management Shell zadáme:

$realm = "https://mtshowosp"

$signinurl = "https://osharepoint.accesscontrol.windows.net:443/v2/wsfederation?wa=wsignin1.0&wtrealm=http%3a%2f%2fmtshowosp%2f"

$certloc = "C:\i\osharepoint.cer"

$rootcert = Get-PfxCertificate $certloc

New-SPTrustedRootAuthority "Windows Azure ACS" -Certificate $rootcert

$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($certloc)

$map1 = New-SPClaimTypeMapping -IncomingClaimType "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" -IncomingClaimTypeDisplayName "Email" -SameAsIncoming

$map2 = New-SPClaimTypeMapping -IncomingClaimType "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" -IncomingClaimTypeDisplayName "Display Name" –LocalClaimType "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"

$map3 = New-SPClaimTypeMapping -IncomingClaimType "https://www.facebook.com/claims/AccessToken" -IncomingClaimTypeDisplayName "Access Token" -SameAsIncoming

$map4 = New-SPClaimTypeMapping -IncomingClaimType "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier" -IncomingClaimTypeDisplayName "Name Identifier" –LocalClaimType "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"

$map5 = New-SPClaimTypeMapping -IncomingClaimType "https://schemas.microsoft.com/ws/2008/06/identity/claims/expiration" -IncomingClaimTypeDisplayName "Expiration" -SameAsIncoming

New-SPTrustedIdentityTokenIssuer -Name "Facebook/LiveID" -Description "Facebook/LiveID" -Realm $realm -ImportTrustCertificate $cert -ClaimsMappings $map1,$map2,$map3,$map4,$map5 -SignInUrl $signinurl -IdentifierClaim $map1.InputClaimType

V Application Management zvolíme Authentication provider a vybereme právě vytvořený Identity Provider Facebook/LiveID

image

Dále musíme povolit přístup uživatelům ověřeným přes FB a LiveID. V User Policy zvolíme Add Users:

image

Vybereme All Zones:

image

A vybereme všechny uživatele od našeho providera.

image

A nakonec přidělíme potřebná oprávnění

image

Závěrem provede otestování. Pro přihlášení vybereme FaceBook/LiveID

image

Vybereme příslušný zdroj identit

image

V případě FB potvrdíme, že povolujeme předání údajů externí aplikaci.

image

A jsme přihlášeni FaceBook účtem. Stejně se můžeme přihlásit pomocí Live ID.

image

Ověření pomocí FaceBook a LiveID účtů prostřednictvím Azure ACS může být velice užitečný pomocník zejména pro různé „extranety“, kde je potřeba spolupráce s větším počtem externích subjektů, kterým nechceme nebo nemůžeme vytvářet účty v Active Directory.

Ondřej Štefka
Mainstream Technologies