Slide 1

Slide 1 text

Daniel Lindemann | ITaCS GmbH Authorize your Apps! OAuth in SharePoint 2013

Slide 2

Slide 2 text

Über mich Senior SharePoint Developer @ITaCS GmbH [email protected] www.itacs.de www.dlindemann.de/blog @daniellindemann Daniel Lindemann

Slide 3

Slide 3 text

Agenda OAuth Allgemein OAuth in SharePoint Zusammenfassung / Fazit

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Zugriff einer Anwendung Oldschool Mails lesen, Mails schreiben, Mails löschen, Kalendereinträge lesen, Kalendereinträge bearbeiten, Kalendereinträge löschen, … Mails lesen, Mails schreiben, Mails löschen, Kalendereinträge lesen, Kalendereinträge bearbeiten, Kalendereinträge löschen, …

Slide 6

Slide 6 text

Probleme Passwort wird an Drittanbieter herausgegeben Drittanbieter Applikation hat Zugriff auf alle Daten Drittanbieter muss Passwörter speichern Ändert der Benutzer sein Passwort hat der Drittanbieter keinen Zugriff mehr

Slide 7

Slide 7 text

“Passwords are not confetti. Please stop throwing them around. (Especially if they’re not yours.)” Chris Messina – Mitbegründer OAuth-Protokoll

Slide 8

Slide 8 text

Was ändert sich Passwörter werden durch Tokens ersetzt Tokens sind verschlüsselte Zeichenketten, die Zugriff auf eine API gewähren Zugriff steuerbar Es lässt sich festlegen auf welchen Teil einer API zugegriffen wird Client und Resource Server müssen sich vertrauen Selbe Ticketausstellungs-Stelle (Issuer)

Slide 9

Slide 9 text

Applikation registrieren Client ID und Client Secret

Slide 10

Slide 10 text

Rollen Resource Owner Authorization Server Resource Server Client

Slide 11

Slide 11 text

Tokens Authorization Token Access Token Refresh Token

Slide 12

Slide 12 text

Scopes Beschreiben welche Daten der Consumer abrufen darf Wird beim Anfordern des Authorization Tokens definiert Beispiel: https://myservice.de/oauth/2/get_authorizationCode?client_id=123&response_type=cod e&scope=Profile.Read,News.Edit&redirect_uri=https%3A%2F%2Fmyservice.de%2Fapp_au thorized

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

Zugriff einer Anwendung mit OAuth Mails lesen, Mails schreiben, Mails löschen, Kalendereinträge lesen, Kalendereinträge bearbeiten, Kalendereinträge löschen, … Kalendereinträge lesen, Kalendereinträge bearbeiten, Kalendereinträge löschen

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

DEMO Manuelles Registrieren einer SharePoint-App in SharePoint Online

Slide 17

Slide 17 text

SharePoint implementiert OAuth genau wie in der Spezifikation beschrieben http://tools.ietf.org/html/rfc6749#page-24

Slide 18

Slide 18 text

TokenHelper.cs und SharePointContext.cs

Slide 19

Slide 19 text

Rollen in SharePoint Resource Owner Authorization Server Resource Server Client

Slide 20

Slide 20 text

Rollen in SharePoint Browser / User STS / ACS SharePoint App

Slide 21

Slide 21 text

App-Berechtigungen in SharePoint App-Berechtigungen werden in der AppManifest.xml konfiguriert Berechtigungserteilung bei Installtion Aufbau eines PermissionRequest Produkt Permission Provider Objekt Berechtigung

Slide 22

Slide 22 text

SharePoint Scopes Scope URI Scope Alias Available Rights http://sharepoint/content/sitecollection Site Read, Write, Manage http://sharepoint/content/sitecollection/web Web Read, Write, Manage http://sharepoint/content/sitecollection/web/list List Read, Write, Manage http://sharepoint/content/tenant AllSites Read, Write, Manage http://sharepoint/bcs/connection None (currently not supported) Read http://sharepoint/search Search QueryAsUserIgnoreAppPrincipal http://sharepoint/projectserver ProjectAdmin Manage http://sharepoint/projectserver/projects Projects Read, Write http://sharepoint/projectserver/projects/project Project Read, Write http://sharepoint/projectserver/enterpriseresources ProjectResources Read, Write http://sharepoint/projectserver/statusing ProjectStatusing SubmitStatus http://sharepoint/projectserver/reporting ProjectReporting Read http://sharepoint/projectserver/workflow ProjectWorkflow Elevate http://sharepoint/social/tenant AllProfiles Read, Write, Manage http://sharepoint/social/core Social Read, Write, Manage http://sharepoint/social/microfeed Microfeed Read, Write, Manage http://sharepoint/taxonomy TermStore Read, Write

Slide 23

Slide 23 text

Benutzer-Berechtigungen werden durch Benutzung einer App nicht heraufgestuft.

Slide 24

Slide 24 text

DEMO Benutzer-Berechtigung

Slide 25

Slide 25 text

SharePoint App OAuth Flow 1. Start App 4. App Redirect (mit Token) 8. Request mit Access Token 9. Daten von SharePoint 2. Anfrage Context Token 3. Erhalt Context Token (signiert) 5. Anfrage zur App-Startseite mit Context Token 10. App-Startseite mit Content und SharePoint Daten 7. Access Token 6. Refresh Token

Slide 26

Slide 26 text

Context Token {"typ":"JWT", "alg":"none"}.{ "aud":"0794723a-ca7f-42b3-af6f-c424a222f02b/localhost:44309@3eef8910-0332-4feb-9436-8c4579d2696d", "iss":"00000001-0000-0000-c000-000000000000@3eef8910-0332-4feb-9436-8c4579d2696d", "nbf":"1411411418", "exp":"1411454618", "appctxsender":"00000003-0000-0ff1-ce00-000000000000@3eef8910-0332-4feb-9436-8c4579d2696d", "appctx":"{ \"CacheKey\":\"QTJ+bUnrMnsmsRCLh613QhpixdDTZY5WvqNWD9WtIUM=\", \"SecurityTokenServiceUri\":\"https://accounts.accesscontrol.windows.net/tokens/OAuth/2\" }", "refreshtoken":"IAAAAO_y8wP5- onrc5xvPfEU9NT6393L1CZVYTcP5wccQAdtKk1npcQmQUG7eZ4OqknbI0PEacfwwaBFx7yF6L1nVGz408Zerh4v0 847lw_9AX5XP7TU-LYYjrYHWHU-XiAIvyDdV- ZD30_5wev1fZwGAFAXein6BSVGgguyDbqvYOinESsHTfE5JC13vEdZ5JyPywWnwTxsNXAJIdlLB4ByEHEmbLbG1w QHLymSw09YQjUqN5fXsDe2w4GA3DbgfoitYPEvXHsxeQZ2DrmW2T4PomExTltG6H58VlKEdoDCq4wB0Xq2q9 CWkrIRI7qhCtJoHRgRXj1GYfQBwaTcC7wyTPg", "isbrowserhostedapp":"true" }

Slide 27

Slide 27 text

Context Token {"typ":"JWT", "alg":"none"}.{ "aud":"0794723a-ca7f-42b3-af6f-c424a222f02b/localhost:44309@3eef8910-0332-4feb-9436-8c4579d2696d", "iss":"00000001-0000-0000-c000-000000000000@3eef8910-0332-4feb-9436-8c4579d2696d", "nbf":"1411411418", "exp":"1411454618", "appctxsender":"00000003-0000-0ff1-ce00-000000000000@3eef8910-0332-4feb-9436-8c4579d2696d", "appctx":"{ \"CacheKey\":\"QTJ+bUnrMnsmsRCLh613QhpixdDTZY5WvqNWD9WtIUM=\", \"SecurityTokenServiceUri\":\"https://accounts.accesscontrol.windows.net/tokens/OAuth/2\" }", "refreshtoken":"IAAAAO_y8wP5- onrc5xvPfEU9NT6393L1CZVYTcP5wccQAdtKk1npcQmQUG7eZ4OqknbI0PEacfwwaBFx7yF6L1nVGz408Zerh4v0 847lw_9AX5XP7TU-LYYjrYHWHU-XiAIvyDdV- ZD30_5wev1fZwGAFAXein6BSVGgguyDbqvYOinESsHTfE5JC13vEdZ5JyPywWnwTxsNXAJIdlLB4ByEHEmbLbG1w QHLymSw09YQjUqN5fXsDe2w4GA3DbgfoitYPEvXHsxeQZ2DrmW2T4PomExTltG6H58VlKEdoDCq4wB0Xq2q9 CWkrIRI7qhCtJoHRgRXj1GYfQBwaTcC7wyTPg", "isbrowserhostedapp":"true" } Client ID App URL Tenant ID Azure ACS Tenant ID Start Ende User ID + Issuer + App + Realm Tenant ID SharePoint STS URL Refresh Token

Slide 28

Slide 28 text

Access Token { "typ":"JWT", "alg":"RS256", "x5t":"kriMPdmBvx68skT8-mPAB3BseeA" }.{ "aud":"00000003-0000-0ff1-ce00-000000000000/dlindemann.sharepoint.com @3eef8910-0332-4feb-9436-8c4579d2696d", "iss":"00000001-0000-0000-c000-000000000000@3eef8910-0332-4feb-9436-8c4579d2696d", "nbf":1411414034, "exp":1411457234, "nameid":"1003000080fd1db2", "actor":"0794723a-ca7f-42b3-af6f-c424a222f02b@3eef8910-0332-4feb-9436-8c4579d2696d", "identityprovider":"urn:federation:microsoftonline" }

Slide 29

Slide 29 text

Access Token { "typ":"JWT", "alg":"RS256", "x5t":"kriMPdmBvx68skT8-mPAB3BseeA" }.{ "aud":"00000003-0000-0ff1-ce00-000000000000/dlindemann.sharepoint.com @3eef8910-0332-4feb-9436-8c4579d2696d", "iss":"00000001-0000-0000-c000-000000000000@3eef8910-0332-4feb-9436-8c4579d2696d", "nbf":1411414034, "exp":1411457234, "nameid":"1003000080fd1db2", "actor":"0794723a-ca7f-42b3-af6f-c424a222f02b@3eef8910-0332-4feb-9436-8c4579d2696d", "identityprovider":"urn:federation:microsoftonline" } SharePoint Host Web Tenant ID Azure ACS Tenant ID Start Ende UPN STS ID Tenant ID Identity Provider

Slide 30

Slide 30 text

DEMO Token dekodieren

Slide 31

Slide 31 text

User-Context vs. App-Context

Slide 32

Slide 32 text

Start User credentials provided? Set user context OAuth token present? Is endpoint CSOM? Does the token include user info? End Is endpoint outside of an app web? Set app and user context Use anonymous context Set App- Only context No Yes Yes No Yes Yes Yes No No No

Slide 33

Slide 33 text

DEMO User und App Token

Slide 34

Slide 34 text

OAuth in SharePoint Apps Office Web Apps Workflows

Slide 35

Slide 35 text

Warum sollte ICH über OAuth Bescheid wissen?

Slide 36

Slide 36 text

Angriffsmöglichkeiten Man in the middle Replay Attack Übertragen von (Authentifizierungs-) Informationen im Klartext http://thehackernews.com/2014/07/facebook-sdk-vulnerability-puts.html

Slide 37

Slide 37 text

Fazit Auf den ersten Blick sehr komplex Standardisiertes Protokoll Entwicklung wird durch das IETF weiter vorangetrieben Bildet den Kern neuer Technologien Open ID Connect

Slide 38

Slide 38 text

Links und weitere Infos http://oauth.net/ http://hueniverse.com/oauth/ http://msdn.microsoft.com/en- us/library/office/fp142384%28v=office.15%29.aspx Authorization and authentication of apps for SharePoint 2013 http://blogs.technet.com/b/speschka/archive/2013/07/29/ security-in-sharepoint-apps-part-1.aspx Security in SharePoint Apps http://www.oreilly.de/catalog/9781449311605/index.html Buch Getting Stated with OAuth 2.0 http://technet.microsoft.com/en-us/library/jj219758.aspx What's new in authentication for SharePoint 2013 http://msdn.microsoft.com/en- us/library/office/dn155905%28v=office.15%29.aspx Use an Office 365 to authorize apps on an on- premises SharePoint site

Slide 39

Slide 39 text

@brandmysp BrandMySharePoint http://bit.ly/brandmysp http://www.brandmysharepoint.de