SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Agenda

 Identitäten und Authentifizierung


 Rollen, Rechte und Berechtigungen


 Heraufstufung und Impersonifizierung


 (Cloud) App Security mit OAuth
Identitäten

     Farm


    App Pool


    System


    Benutzer
SharePoint vs. Windows-Identität

     Worker Prozess            SharePoint-Objekte
                           Listen, Bibliotheken, Dateien
    SharePoint System

    App Pool Account
                             Backend-Datenbanken
                                  SQL Server
        XML-Dateien und
       andere Ressourcen



      Webserver
Authentifizierungsarten
   Classic                           Claims



 NT Token      NT Token        ASP.NET (FBA)     SAML 1.1
 Windows       Windows         LDAP, Custom,   ADFS, Live ID,
  Identität     Identität           etc.           etc.



Nur noch via
PowerShell
                      SAML Token
                     Claims Identität


                            SPUser
Authentifizierungsprozess




Quelle: http://msdn.microsoft.com
Was ist ein Claim?




i:0#.w|itacsdaniel
SharePoint Claims Encoding

                    i:0#.w|itacsfabian
Claim Identität   Reserviert für   Claim Typ      Herausgeber          Claim Wert
                  zukünftige       # = Logon,     w = windows,         Bei Forms mit
c = andere        Claim Typen      5 = e-mail,    s = local STS        weiteren | für
Identitäten                        - = role       m = membership       den Namen des
                                   + = group                           Herausgebers
                                                  r = role
                        0          % = farm       t = trusted STS
     i:/c:                         ! = identity   p = personal          Login Name
                                   provider       c = claim provider
                                                  f = forms
                                   #/./?/S etc.
                                                  w/s/m/r/t/c/f etc.
Claims Encoding Beispiele
Windows Account          i:0#.w|contosofabianm
CONTOSOfabianm

Alle authentifizierten
                         c:0!.s|windows
Windows-Nutzer

Windows-
Sicherheitsgruppe        c:0+.w|s-1-5-21…


Federated Location mit
E-Mail als Login Namen   i:05.t|azure|fm@itacs.de

Membership Provider
                         i:0#.f|membership|fabianm
Claims vs. Identity




                  VS
      Identity         Claims
Identität ermitteln
•   Der alte Weg
    HttpContext.Current.Identity;

•   Weiterhin möglich
    SPContext.Current.Web.CurrentUser;

•   Der Claims Weg
    IClaimsIdentity identity =
       (ClaimsIdentity)Thread
       .CurrentPrincipal.Identity;
Wichtige Begriffe
zusammengefasst…
•   Identity
     Attribute die einen Benutzer oder eine Gruppe
     beschreiben
•   Security Token
     Verschlüsselte und signierte Liste an Claims

•   Security Token Service (STS)
     Erstellt und signiert (Claim-)Tokens

•   Identity Provider (z. B. Active Directory)
     Überprüft Tokens auf ihre Gültigkeit

•   Relaying Party
     Autorisiert Identitäten anhand von Claims
Demo
Formular-basierte Authentifzierung
Agenda

 Identitäten und Authentifizierung


 Rollen, Rechte und Berechtigungen


 Heraufstufung und Impersonifizierung


 (Cloud) App Security mit OAuth
Die Rolle der Site Collection
•   Sicherheitsgrenze
•   Hierarchie von Webs
•   Gruppendefinition
•   Höchste Einheit der Berechtigungs-vererbung
•   Backup / Recovery
•   Site Coll. Papierkorb
Berechtigungslevel
SharePoint-Rechte
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 Nutzer
     SPUserCollection users = currentWeb.Users;

     // Authentifizierte Nutzer
     SPUserCollection allUsers = currentWeb.AllUsers;

     // Alle Nutzer
     SPUserCollection siteUsers = currentWeb.SiteUsers;
SPWeb.EnsureUser
•   Der alte Weg
    SPUser theOldWay = SPContext.Current.Web.EnsureUser(@"contosofritzh");

•   Der Weg mit Claims
    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);
    }
Nutzer explizit berechtigen
•   Verwaltung über Role Assignments
•   Rechtezuweisung über Role Definition

      //SPRoleDefinition für Teilnehmen
      SPRoleDefinition roleContribute =
               currentWeb.RoleDefinitions.GetByType(SPRoleType.Contributor) ;

      //Neues RoleAssignment erzeugen
      SPRoleAssignment roleAssignment = new SPRoleAssignment(
               "i:0#.f|ldapmember|fabianm",
               "fabian.moritz@itacs.de",
               "Fabian Moritz",
               "SharePoint MVP");

      //Teilnehmenrecht der Rolle zuweisen
      roleAssignment.RoleDefinitionBindings.Add(roleContribute);
      currentWeb.RoleAssignments.Add(roleAssignment);
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);
SharePoint-Objekte absichern
•   Jedes Objekt verfügt
    über eine ACL
•   ACLs werden vererbt
    (der Parent wird genutzt)
•   Aufbrechen möglich
Vererbung aufbrechen

 SPWeb web = SPContext.Current.Web;

 // get list
 SPList docs = web.GetListFromUrl(
          web.Url + "/Freigegebene Dokumente/Forms/AllItems.aspx");

 // get members group and assignment
 SPGroup group = web.SiteGroups["Mitglieder"];
 SPRoleAssignment groupAssignment = new SPRoleAssignment(group);
 SPRoleDefinition roleRead = web.RoleDefinitions.GetByType(SPRoleType.Reader);

 // break role inheritance
 docs.BreakRoleInheritance(false);
 groupAssignment.RoleDefinitionBindings.Add(roleRead);
 docs.RoleAssignments.Add(groupAssignment);

 // reset role inheritance
 docs.ResetRoleInheritance();
Demo
Benutzer, Gruppen und Berechtigungen
Agenda

 Identitäten und Authentifizierung


 Rollen, Rechte und Berechtigungen


 Heraufstufung und Impersonifizierung


 (Cloud) App Security mit OAuth
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
              // SHAREPOINTSYSTEM
     });
Code impersonifizieren
•   Zugriff auf Backend-Systeme mit Windows-Identität
•   Claims to Windows Token Service


     // ist aktuelle Identität ein WinClaim
     if (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
         }
     }
Agenda

 Identitäten und Authentifizierung


 Rollen, Rechte und Berechtigungen


 Heraufstufung und Impersonifizierung


 (Cloud) App Security mit OAuth
SharePoint 2013 Apps
App Architektur




                        REST, OAuth, OData, Remote Events


          SharePoint & Exchange Server              Office 365


             On-Premise Plattformen               Azure Runtime
                      IIS                         Azure Websites
                    Workflow                      Azure Workflows
                     SQL                            SQL Azure




                 On Premises                          Cloud
Apps Authentifizierung




                         OAuth
Authentifizierungs-Prozess
                                    1    SharePoint authentifiziert den Client mit CLAIMS

                                    2    SharePoint erfragt den Kontext-Token beim STS

                                         ACS (Access Control Service)
                                    3
                                         gibt den (signierten) Kontext-Token zurück

                                    4    SharePoint leitet den Token an den Nutzer weiter

                                         Der Nutzer greift mit dem Token auf die App zu
                                    5
                                         (wird als IFrame in der Seite gerendert)

                                         Die App extrahiert den Kontext-Token und übergibt
                                    6
                                         diesen dem ACS (Access Control Service)

                                         Der ACS gibt einen Zugriffs-Token mit den Rechten
                                    7
                                         des Nutzers an die App zurück

                                         Die App greift via CSOM/REST auf die SharePoint-
                                    8
                                         Website mit dem Access Token (OAuth) zu

                                         SharePoint authentifiziert die App und verarbeitet
                                    9
                                         die CSOM/REST-Abfrage

                                    10   Die App sendet das HTML an den Client




Quelle: http://msdn.microsoft.com
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
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>
Agenda

 Identitäten und Authentifizierung


 Rollen, Rechte und Berechtigungen


 Heraufstufung und Impersonifizierung


 (Cloud) App Security mit OAuth
Fabian Moritz                           Daniel
         ITaCS GmbH                              Lindemann
         MVP SharePoint
                                                  ITaCS GmbH
         Server
                                                  Senior Entwickler
Fabian.Moritz@itacs.de                  Daniel.Lindemann@itacs.
                                        de
http://www.itacs.de                     http://www.itacs.de

http://sharepointcommunity.de/fabianm   http://www.dlindemann.de/blog

@FabianMoritz                           @DanielLindemann
SharePoint 2013 Security

Weitere ähnliche Inhalte

Ähnlich wie SharePoint 2013 Security

dotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile Servicesdotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile Services
Sascha Dittmann
 
Company Appstore Suite
Company Appstore SuiteCompany Appstore Suite
Company Appstore Suite
THIS IS! Digital Media Group GmbH
 

Ähnlich wie SharePoint 2013 Security (20)

Ajax, Comet & Co.
Ajax, Comet & Co.Ajax, Comet & Co.
Ajax, Comet & Co.
 
Personalisierung
PersonalisierungPersonalisierung
Personalisierung
 
Webinar: Online Security
Webinar: Online SecurityWebinar: Online Security
Webinar: Online Security
 
Sicherheit in Single-Page-Web-Anwendungen
Sicherheit in Single-Page-Web-AnwendungenSicherheit in Single-Page-Web-Anwendungen
Sicherheit in Single-Page-Web-Anwendungen
 
OAuth 2.0 presentation with example with google auth
OAuth 2.0 presentation with example with google authOAuth 2.0 presentation with example with google auth
OAuth 2.0 presentation with example with google auth
 
Token statt Cookies dank JWT - #ETKA16
Token statt Cookies dank JWT - #ETKA16Token statt Cookies dank JWT - #ETKA16
Token statt Cookies dank JWT - #ETKA16
 
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
 
Ist GraphQL das bessere REST
Ist GraphQL das bessere RESTIst GraphQL das bessere REST
Ist GraphQL das bessere REST
 
dotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile Servicesdotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile Services
 
Login mit Facebook? Login mit Google? Oder Login mit "meine firma"?!? OpenID ...
Login mit Facebook? Login mit Google? Oder Login mit "meine firma"?!? OpenID ...Login mit Facebook? Login mit Google? Oder Login mit "meine firma"?!? OpenID ...
Login mit Facebook? Login mit Google? Oder Login mit "meine firma"?!? OpenID ...
 
Was ist neu bei Windows Server 2012 R2
Was ist neu bei Windows Server 2012 R2Was ist neu bei Windows Server 2012 R2
Was ist neu bei Windows Server 2012 R2
 
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
 
API Authentifizierung und Autorisierung
API Authentifizierung und Autorisierung API Authentifizierung und Autorisierung
API Authentifizierung und Autorisierung
 
Token statt Cookies dank JWT (Java Land 2016)
Token statt Cookies dank JWT (Java Land 2016)Token statt Cookies dank JWT (Java Land 2016)
Token statt Cookies dank JWT (Java Land 2016)
 
MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der Cloud
 
iOS Network Extensions
iOS Network ExtensionsiOS Network Extensions
iOS Network Extensions
 
Company Appstore Suite
Company Appstore SuiteCompany Appstore Suite
Company Appstore Suite
 
Cloud APIs - Wettbewerbsvorteile durch Einbindung externer Services
Cloud APIs - Wettbewerbsvorteile durch Einbindung externer ServicesCloud APIs - Wettbewerbsvorteile durch Einbindung externer Services
Cloud APIs - Wettbewerbsvorteile durch Einbindung externer Services
 
Web-API Design in Java
Web-API Design in JavaWeb-API Design in Java
Web-API Design in Java
 
Active Directory Federation Services
Active Directory Federation ServicesActive Directory Federation Services
Active Directory Federation Services
 

Mehr von fabianmoritz

Formulare vNext - Was ist die richtige Formularlösung für mich?
Formulare vNext - Was ist die richtige Formularlösung für mich?Formulare vNext - Was ist die richtige Formularlösung für mich?
Formulare vNext - Was ist die richtige Formularlösung für mich?
fabianmoritz
 
Search driven Apps mit SharePoint 2013 und SharePoint Online
Search driven Apps mit SharePoint 2013 und SharePoint OnlineSearch driven Apps mit SharePoint 2013 und SharePoint Online
Search driven Apps mit SharePoint 2013 und SharePoint Online
fabianmoritz
 
SharePoint Responsive - Mobile Webseiten mit SharePoint 2013 und SharePoint O...
SharePoint Responsive - Mobile Webseiten mit SharePoint 2013 und SharePoint O...SharePoint Responsive - Mobile Webseiten mit SharePoint 2013 und SharePoint O...
SharePoint Responsive - Mobile Webseiten mit SharePoint 2013 und SharePoint O...
fabianmoritz
 

Mehr von fabianmoritz (7)

Office Add-ins entwickeln
Office Add-ins entwickelnOffice Add-ins entwickeln
Office Add-ins entwickeln
 
Formulare vNext - Was ist die richtige Formularlösung für mich?
Formulare vNext - Was ist die richtige Formularlösung für mich?Formulare vNext - Was ist die richtige Formularlösung für mich?
Formulare vNext - Was ist die richtige Formularlösung für mich?
 
Search driven Apps mit SharePoint 2013 und SharePoint Online
Search driven Apps mit SharePoint 2013 und SharePoint OnlineSearch driven Apps mit SharePoint 2013 und SharePoint Online
Search driven Apps mit SharePoint 2013 und SharePoint Online
 
SharePoint Responsive - Mobile Webseiten mit SharePoint 2013 und SharePoint O...
SharePoint Responsive - Mobile Webseiten mit SharePoint 2013 und SharePoint O...SharePoint Responsive - Mobile Webseiten mit SharePoint 2013 und SharePoint O...
SharePoint Responsive - Mobile Webseiten mit SharePoint 2013 und SharePoint O...
 
SharePoint Branding Best Practices - Grafische Gestaltung von SharePoint-Webs...
SharePoint Branding Best Practices - Grafische Gestaltung von SharePoint-Webs...SharePoint Branding Best Practices - Grafische Gestaltung von SharePoint-Webs...
SharePoint Branding Best Practices - Grafische Gestaltung von SharePoint-Webs...
 
Search driven Applications mit SharePoint 2013
Search driven Applications mit SharePoint 2013Search driven Applications mit SharePoint 2013
Search driven Applications mit SharePoint 2013
 
Brand My SharePoint
Brand My SharePointBrand My SharePoint
Brand My SharePoint
 

SharePoint 2013 Security

  • 1.
  • 2. Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth
  • 3. Identitäten Farm App Pool System Benutzer
  • 4. SharePoint vs. Windows-Identität Worker Prozess SharePoint-Objekte Listen, Bibliotheken, Dateien SharePoint System App Pool Account Backend-Datenbanken SQL Server XML-Dateien und andere Ressourcen Webserver
  • 5. Authentifizierungsarten Classic Claims NT Token NT Token ASP.NET (FBA) SAML 1.1 Windows Windows LDAP, Custom, ADFS, Live ID, Identität Identität etc. etc. Nur noch via PowerShell SAML Token Claims Identität SPUser
  • 7. Was ist ein Claim? i:0#.w|itacsdaniel
  • 8. SharePoint Claims Encoding i:0#.w|itacsfabian Claim Identität Reserviert für Claim Typ Herausgeber Claim Wert zukünftige # = Logon, w = windows, Bei Forms mit c = andere Claim Typen 5 = e-mail, s = local STS weiteren | für Identitäten - = role m = membership den Namen des + = group Herausgebers r = role 0 % = farm t = trusted STS i:/c: ! = identity p = personal Login Name provider c = claim provider f = forms #/./?/S etc. w/s/m/r/t/c/f etc.
  • 9. Claims Encoding Beispiele Windows Account i:0#.w|contosofabianm CONTOSOfabianm Alle authentifizierten c:0!.s|windows Windows-Nutzer Windows- Sicherheitsgruppe c:0+.w|s-1-5-21… Federated Location mit E-Mail als Login Namen i:05.t|azure|fm@itacs.de Membership Provider i:0#.f|membership|fabianm
  • 10. Claims vs. Identity VS Identity Claims
  • 11. Identität ermitteln • Der alte Weg HttpContext.Current.Identity; • Weiterhin möglich SPContext.Current.Web.CurrentUser; • Der Claims Weg IClaimsIdentity identity = (ClaimsIdentity)Thread .CurrentPrincipal.Identity;
  • 12. Wichtige Begriffe zusammengefasst… • Identity  Attribute die einen Benutzer oder eine Gruppe beschreiben • Security Token  Verschlüsselte und signierte Liste an Claims • Security Token Service (STS)  Erstellt und signiert (Claim-)Tokens • Identity Provider (z. B. Active Directory)  Überprüft Tokens auf ihre Gültigkeit • Relaying Party  Autorisiert Identitäten anhand von Claims
  • 13.
  • 15. Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth
  • 16. Die Rolle der Site Collection • Sicherheitsgrenze • Hierarchie von Webs • Gruppendefinition • Höchste Einheit der Berechtigungs-vererbung • Backup / Recovery • Site Coll. Papierkorb
  • 19. 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 Nutzer SPUserCollection users = currentWeb.Users; // Authentifizierte Nutzer SPUserCollection allUsers = currentWeb.AllUsers; // Alle Nutzer SPUserCollection siteUsers = currentWeb.SiteUsers;
  • 20. SPWeb.EnsureUser • Der alte Weg SPUser theOldWay = SPContext.Current.Web.EnsureUser(@"contosofritzh"); • Der Weg mit Claims 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); }
  • 21. Nutzer explizit berechtigen • Verwaltung über Role Assignments • Rechtezuweisung über Role Definition //SPRoleDefinition für Teilnehmen SPRoleDefinition roleContribute = currentWeb.RoleDefinitions.GetByType(SPRoleType.Contributor) ; //Neues RoleAssignment erzeugen SPRoleAssignment roleAssignment = new SPRoleAssignment( "i:0#.f|ldapmember|fabianm", "fabian.moritz@itacs.de", "Fabian Moritz", "SharePoint MVP"); //Teilnehmenrecht der Rolle zuweisen roleAssignment.RoleDefinitionBindings.Add(roleContribute); currentWeb.RoleAssignments.Add(roleAssignment);
  • 22. 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);
  • 23. SharePoint-Objekte absichern • Jedes Objekt verfügt über eine ACL • ACLs werden vererbt (der Parent wird genutzt) • Aufbrechen möglich
  • 24. Vererbung aufbrechen SPWeb web = SPContext.Current.Web; // get list SPList docs = web.GetListFromUrl( web.Url + "/Freigegebene Dokumente/Forms/AllItems.aspx"); // get members group and assignment SPGroup group = web.SiteGroups["Mitglieder"]; SPRoleAssignment groupAssignment = new SPRoleAssignment(group); SPRoleDefinition roleRead = web.RoleDefinitions.GetByType(SPRoleType.Reader); // break role inheritance docs.BreakRoleInheritance(false); groupAssignment.RoleDefinitionBindings.Add(roleRead); docs.RoleAssignments.Add(groupAssignment); // reset role inheritance docs.ResetRoleInheritance();
  • 25. Demo Benutzer, Gruppen und Berechtigungen
  • 26. Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth
  • 27. 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 // SHAREPOINTSYSTEM });
  • 28. Code impersonifizieren • Zugriff auf Backend-Systeme mit Windows-Identität • Claims to Windows Token Service // ist aktuelle Identität ein WinClaim if (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 } }
  • 29. Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth
  • 31. App Architektur REST, OAuth, OData, Remote Events SharePoint & Exchange Server Office 365 On-Premise Plattformen Azure Runtime IIS Azure Websites Workflow Azure Workflows SQL SQL Azure On Premises Cloud
  • 33. Authentifizierungs-Prozess 1 SharePoint authentifiziert den Client mit CLAIMS 2 SharePoint erfragt den Kontext-Token beim STS ACS (Access Control Service) 3 gibt den (signierten) Kontext-Token zurück 4 SharePoint leitet den Token an den Nutzer weiter Der Nutzer greift mit dem Token auf die App zu 5 (wird als IFrame in der Seite gerendert) Die App extrahiert den Kontext-Token und übergibt 6 diesen dem ACS (Access Control Service) Der ACS gibt einen Zugriffs-Token mit den Rechten 7 des Nutzers an die App zurück Die App greift via CSOM/REST auf die SharePoint- 8 Website mit dem Access Token (OAuth) zu SharePoint authentifiziert die App und verarbeitet 9 die CSOM/REST-Abfrage 10 Die App sendet das HTML an den Client Quelle: http://msdn.microsoft.com
  • 34. 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
  • 35. 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>
  • 36. Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth
  • 37. Fabian Moritz Daniel ITaCS GmbH Lindemann MVP SharePoint ITaCS GmbH Server Senior Entwickler Fabian.Moritz@itacs.de Daniel.Lindemann@itacs. de http://www.itacs.de http://www.itacs.de http://sharepointcommunity.de/fabianm http://www.dlindemann.de/blog @FabianMoritz @DanielLindemann

Hinweis der Redaktion

  1. http://msdn.microsoft.com/en-us/library/hh394901(v=office.14).aspx
  2. http://msdn.microsoft.com/en-us/library/fp142382.aspx