fabian moritz | mvp sharepoint server
DESCRIPTION
Fabian Moritz | MVP SharePoint Server. SharePoint Security Das SharePoint 2013-Sicherheitssystem. Agenda. Identitäten und Authentifizierung. Rollen, Rechte und Berechtigungen. Heraufstufung und Impersonifizierung. ( Cloud ) App Security mit OAuth. Identitäten. Farm. App Pool. System. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/1.jpg)
Fabian Moritz | MVP SharePoint Server
SharePoint SecurityDas SharePoint 2013-Sicherheitssystem
![Page 2: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/2.jpg)
Agenda
Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen
Heraufstufung und Impersonifizierung
(Cloud) App Security mit OAuth
![Page 3: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/3.jpg)
Identitäten
App Pool
Farm
System
Benutzer
![Page 4: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/4.jpg)
SharePoint vs. Windows-Identität
Webserver
Worker Prozess
SharePoint System
App Pool Account
XML-Dateien und andere Ressourcen
SharePoint-ObjekteListen, Bibliotheken, Dateien
Backend-DatenbankenSQL Server
![Page 5: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/5.jpg)
Classic
Authentifizierung
NT TokenWindows Identität
Claims
NT TokenWindows Identität
ASP.NET (FBA)LDAP,
Custom, etc.
SAML 1.1ADFS, Live ID,
etc.
SAML TokenClaims
Identität
SPUser
Nur noch via PowerShell
![Page 6: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/6.jpg)
Authentifizierungs-Prozess
Quelle: http://msdn.microsoft.com
![Page 7: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/7.jpg)
SharePoint Claims Encoding
i:0#.w|contoso\fabian
Claim Identität
c = andere Identitäten
i:/c:
Reserviert für zukünftige Claim Typen
0
Claim Typ# = Logon,5 = e-mail,- = role+ = group% = farm! = identity provider
#/./?/S etc.
Herausgeberw = windows,s = local STSm = membershipr = rolet = trusted STSp = personalc = claim providerf = forms
w/s/m/r/t/c/f etc.
Claim Wert Bei Forms mit weiteren | für den Namen des Herausgebers
Login Name
![Page 8: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/8.jpg)
Claims Encoding BeispieleWindows Account CONTOSO\fabianm
Alle authentifizierten
Windows-Nutzer
Windows-
Sicherheitsgruppe
Federated Location mit E-Mail als Login Namen
Membership Provider
i:0#.w|contoso\fabianm
c:0!.s|windows
c:0+.w|s-1-5-21…
i:05.t|azure|[email protected]
i:0#.f|membership|fabianm
![Page 9: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/9.jpg)
Identität ermitteln
• Der alte WegHttpContext.Current.Identity;
• Weiterhin möglichSPContext.Current.Web.CurrentUser;
• Der Claims WegIClaimsIdentity identity = (ClaimsIdentity)Thread .CurrentPrincipal.Identity;
![Page 10: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/10.jpg)
Formular-basierte Authentifizierung mit Claims
Demo
![Page 11: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/11.jpg)
Agenda
Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen
Heraufstufung und Impersonifizierung
(Cloud) App Security mit OAuth
![Page 12: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/12.jpg)
Die Rolle der Site Collection
• Sicherheitsgrenze• Hierarchie von Webs• Gruppendefinition• Höchste Einheit der
Berechtigungs-vererbung
• Backup / Recovery• Site Coll. Papierkorb
![Page 13: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/13.jpg)
Berechtigungslevel
![Page 14: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/14.jpg)
SharePoint-Rechte
![Page 15: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/15.jpg)
Benutzerlisten in SharePoint• Users - Benutzer, die explizit berechtigt wurden• AllUsers - Authentifizierte Benutzer der Website • SiteUsers - Alle Benutzer der Site Collection
SPWeb currentWeb = SPContext.Current.Site.RootWeb;
// Explizit berechtigte NutzerSPUserCollection users = currentWeb.Users;
// Authentifizierte NutzerSPUserCollection allUsers = currentWeb.AllUsers;
// Alle Nutzer SPUserCollection siteUsers = currentWeb.SiteUsers;
![Page 16: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/16.jpg)
Nutzer explizit berechtigen
• Verwaltung über Role Assignments• Rechtezuweisung über Role Definition
//SPRoleDefinition für TeilnehmenSPRoleDefinition roleContribute =
currentWeb.RoleDefinitions.GetByType(SPRoleType.Contributor) ;
//Neues RoleAssignment erzeugenSPRoleAssignment roleAssignment = new SPRoleAssignment(
"i:0#.f|ldapmember|fabianm", "[email protected]","Fabian Moritz",
"SharePoint MVP");
//Teilnehmenrecht der Rolle zuweisenroleAssignment.RoleDefinitionBindings.Add(roleContribute);currentWeb.RoleAssignments.Add(roleAssignment);
![Page 17: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/17.jpg)
SharePoint-Gruppen
• Gruppierung von Benutzern• Vergabe von Rechten für SP-Objekte• Verwaltung auf Ebene der Site Collection
SPWeb web = SPContext.Current.Web;web.SiteGroups.Add(
"Demo Gruppe",web.SiteAdministrators[0],null,"Per Code generiert!");
SPGroup group = web.SiteGroups["Demo Gruppe"];group.AddUser(SPContext.Current.Web.CurrentUser);web.AssociatedGroups.Add(group);
![Page 18: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/18.jpg)
SPWeb.EnsureUser
• Der alte Weg
• Der Weg mit Claims
SPUser theOldWay = SPContext.Current.Web.EnsureUser(@"contoso\fritzh");
SPClaimProviderManager claimProviderManager = SPClaimProviderManager.Local; if (claimProviderManager != null){
SPClaim claim = new SPClaim(SPClaimTypes.UserLogonName, "fritzh", "http://www.w3.org/2001/XMLSchema#string",SPOriginalIssuers.Format(SPOriginalIssuerType.Forms,
"ldapmember"));
string encodedClaimString = claimProviderManager.EncodeClaim(claim);
SPUser user = SPContext.Current.Web.EnsureUser(encodedClaimString);}
![Page 19: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/19.jpg)
SharePoint-Objekte absichern
• Jedes Objekt verfügt über eine ACL
• ACLs werden vererbt(der Parent wird genutzt)
• Aufbrechen möglich
![Page 20: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/20.jpg)
Vererbung aufbrechenSPWeb web = SPContext.Current.Web; // get listSPList docs = web.GetListFromUrl(
web.Url + "/Freigegebene Dokumente/Forms/AllItems.aspx");
// get members group and assignmentSPGroup group = web.SiteGroups["Mitglieder"];SPRoleAssignment groupAssignment = new SPRoleAssignment(group);SPRoleDefinition roleRead = web.RoleDefinitions.GetByType(SPRoleType.Reader);
// break role inheritancedocs.BreakRoleInheritance(false);groupAssignment.RoleDefinitionBindings.Add(roleRead);docs.RoleAssignments.Add(groupAssignment);
// reset role inheritancedocs.ResetRoleInheritance();
![Page 21: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/21.jpg)
Auf Rechte prüfenSPSite site = SPContext.Current.Site;SPUser user = SPContext.Current.Web.EnsureUser("i:#0.f|pdapmember|fritzh");
using (SPSite impersonatedSite = new SPSite(site.ID, user.UserToken)){ using (SPWeb impersonatedWeb = impersonatedSite.OpenWeb()) { foreach (SPList list in impersonatedWeb.Webs) { if(list.DoesUserHavePermissions(SPBasePermissions.ManageLists)) { // do sth. } } }}
![Page 22: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/22.jpg)
Benutzer, Gruppen und Berechtigungen verwalten
Demo
![Page 23: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/23.jpg)
Agenda
Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen
Heraufstufung und Impersonifizierung
(Cloud) App Security mit OAuth
![Page 24: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/24.jpg)
Code-Heraufstufung
• Code wird mit dem Token des aktuell angemeldeten Nutzers ausgeführt
• In einigen Szenarien können höhere Rechte erforderlich sein (Heraufstufung)// Code wird mit Token des aktuellen Nutzers ausgeführt// i:#0.f|ldapmember|fabianm
SPSecurity.RunWithElevatedPrivileges(()>={
// Code wird mit heraufgestuften Rechte ausgeführt// SHAREPOINT\SYSTEM
});
![Page 25: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/25.jpg)
Code impersonifizieren
• Zugriff auf Backend-Systeme mit Windows-Identität
• Claims to Windows Token Service
// ist aktuelle Identität ein WinClaimif (SPSecurityContext.IsWindowsIdentityAvailable){ // nutze des c2WTS und hole die Windows identity WindowsIdentity wid = SPSecurityContext.GetWindowsIdentity(); // Impersonifizieren using (WindowsImpersonationContext ctxt = wid.Impersonate()) { // Zugriff auf Backend / Windows Ressourcen }}
![Page 26: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/26.jpg)
Heraufstufung und Impersonifizierung
Demo
![Page 27: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/27.jpg)
Agenda
Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen
Heraufstufung und Impersonifizierung
(Cloud) App Security mit OAuth
![Page 28: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/28.jpg)
SharePoint 2013 Apps
Plattformen Dienste und DatenApps
Apps Store und Katalog
Urlaubs-antrag
EventManagement
Währungsrechner
Urlaubs-antrag
RisikoManagementHelp Desk
![Page 29: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/29.jpg)
App Architektur
Plat
tfor
mA
pp
Client Code: HTML / CSS / JavaScript
Server Code: HTML, ASP.NET, PHP, etc.
SharePoint(Online oder On-Premises)
Ser
vice
s
On Premises
SharePoint & Exchange Server
On-Premise PlattformenIIS
WorkflowSQL
Cloud
Office 365
Azure RuntimeAzure WebsitesAzure Workflows
SQL Azure
REST, OAuth, OData, Remote Events
3rd Party DiensteBing, SalesForce, SAP, Twitter, Facebook
![Page 30: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/30.jpg)
SharePoint
SharePoint
App Web
Cloud App
SharePoint
Apps Authentifizierung
SharePoint
Sandbox
OA
uth
![Page 31: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/31.jpg)
Authentifizierungs-Prozess1 SharePoint authentifiziert den Client mit CLAIMS
Der Nutzer greift mit dem Token auf die App zu (wird als IFrame in der Seite gerendert)
5
Die App extrahiert den Kontext-Token und übergibt diesen dem ACS (Access Control Service)
6
SharePoint erfragt den Kontext-Token beim STS2
ACS (Access Control Service)gibt den (signierten) Kontext-Token zurück
3
SharePoint leitet den Token an den Nutzer weiter4
Der ACS gibt einen Zugriffs-Token mit den Rechten des Nutzers an die App zurück
7
Die App greift via CSOM/REST auf die SharePoint-Website mit dem Access Token (OAuth) zu
8
SharePoint authentifiziert die App und verarbeitet die CSOM/REST-Abfrage
9
Die App sendet das HTML an den Client10
Quelle: http://msdn.microsoft.com
![Page 32: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/32.jpg)
App-Berechtigungen
• App-Berechtigungen…– sind anders als Nutzer-Berechtigungen– gelten für sämtliche Nutzer– haben keine Hierarchie
• Apps haben eine Standard-Berechtigung– Limitierte Leserechte auf das Host Web– Apps können weitere Rechte beantragen– Der installierende Nutzer vergibt die Rechte
![Page 33: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/33.jpg)
Rechte definieren
• Wird über das App-Manifest gesteuert
<AppPermissionRequests> <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web/list" Right="FullControl" /> <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="Read" /> <AppPermissionRequest Scope="http://sharepoint/search" Right="QueryAsUserIgnoreAppPrincipal" /> <AppPermissionRequest Scope="http://sharepoint/taxonomy" Right="Write" /> </AppPermissionRequests>
![Page 34: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/34.jpg)
SharePoint Apps-Berechtigungen
Demo
![Page 35: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/35.jpg)
Agenda
Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen
Heraufstufung und Impersonifizierung
(Cloud) App Security mit OAuth
![Page 36: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/36.jpg)
Und nun?
• Laden Sie sich die Beispiele herunterhttp://sharepointcommunity.de/fabianm
• Registrieren Sie sich für eine Office 365 Developer Sitehttp://msdn.microsoft.com/en-us/library/fp179924.aspx
• Nutzen Sie die MSDN Libraryhttp://msdn.microsoft.com/en-US/
• Machen Sie sich mit Claims, OAuth und dem App Development vertraut
![Page 37: Fabian Moritz | MVP SharePoint Server](https://reader035.vdocuments.mx/reader035/viewer/2022062222/56815bc7550346895dc9bfff/html5/thumbnails/37.jpg)
Fabian MoritzITaCS GmbHMVP SharePoint Server
[email protected]://www.itacs.de
@FabianMoritz
http://sharepointcommunity.de/fabianm