building office 365 app with aad oauth - microsoft · oauth •widely adopted open standard for...

17
Office 365 DevDays 2017.11.4-6 | 上海 Office 365 DevDays 2017.11.4-6 | 上海 Building Office 365 App with AAD OAuth 薛伟文 - Office 中国研发团队 Raymond Xue – Office China Incubation Team

Upload: others

Post on 02-Aug-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

Office 365 DevDays

2017.11.4-6 | 上海

Office 365 DevDays

2017.11.4-6 | 上海

Building Office 365 App with AAD OAuth

薛伟文 - Office 中国研发团队

Raymond Xue – Office China Incubation Team

Page 2: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

OAuth Introduction

AAD App Models

Office 365 Web App

Development

目 录CONTENTS

Page 3: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

Terms

• Authentication (AuthN)• To proove who you are (are you really John Doe?)

• Authorization (AuthZ)• To confirm what you may or may not do (scope, permission, etc.)

• Single Sign On (SSO)• An optimization of the authentication sequence to remove the burden of repeating

actions placed on the end user. To facilitate SSO, an element called an Identity Provider can act as a proxy on a user's behalf to provide evidence of authentication events to 3rd parties requesting information about the user. These Identity Providers are trusted 3rd parties and need to be trusted both by the user (to maintain the user's identity information as the loss of this information can result in the compromise of the users identity) and the Web services which may grant access to valuable resources and information based upon the integrity of the identity information provided by the IP.

Page 4: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

Office 365 App = OAuth + AAD + REST API

Page 5: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

OAuth

• Widely adopted open standard for authorization

• Provides client app a “secure delegated access” to server resources on behalf of the resource owner without explicitly taking username and password

• Begins in Nov. 2006 as OAuth 1.0 (RFC 5849)

• OAuth 2.0 published in Oct. 2012 (RFC 6749, RFC 6750)

• Supported by most major IDP (ID providers)• Microsoft (MSA, Office 365), Google, Yahoo!, Amazon, Dropbox,

Facebook, PayPal, etc.• 微信, QQ,百度,新浪微博,网易,搜狐

Page 6: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

How OAuth 2.0 Works?

• Resource Owner - An entity capable of granting access to a protected resource. When the resource owner is a person, it is referred to as an end-user

• Client - An application making protected resource requests on behalf of the resource owner and with its authorization

• Authorization Server - The server (usually IDP) issuing access tokens to the client after successfully authenticating the resource owner and obtaining authorization.

• Resource Server - The server hosting the protected resources, capable of accepting and responding to protected resource requests using access tokens.

User

Resource Owner

Client

Authorization Server

Resource Server

(1)

Au

tho

riza

tio

n

Re

qu

est

(2) A

uth

oriza

tion

G

rant

(3) Authorization Grant

(4) Access Token

(5) Access Token

(6) Protected Resource

3rd Party App

Page 7: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

OAuth Grant Types

• Authorization Code Grant

• Implicit Grant

• Resource Owner Password Credentials Grant

• Client Credentials Grant

Page 8: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

Access Token

• The credential for accessing resource servers

• JSON Web Token (JWT) format (RFC 6750)

• Base64 encoded string• Encrypted signature for

authentication• Has expiry (optional)• Try out the JWT decoder:

http://jwt.calebb.net/

Page 9: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

OAuth 2.0 in Azure AD(Authorization Code Grant)

ResourceOwner

AuthorizationServer

Resource Server(Office 365 Services)

Client

Page 10: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

Actual Call Flow

OAuth 2.0 in Azure ADhttp://msdn.microsoft.com/en-us/library/azure/dn645545.aspx

https://docs.microsoft.com/zh-cn/azure/active-directory/develop/active-directory-protocols-oauth-code

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-authentication-scenarios#web-browser-to-web-application

https://docs.microsoft.com/zh-cn/azure/active-directory/develop/active-directory-authentication-scenarios#web-browser-to-web-application

Page 11: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

Setting AAD App for Office 365

• Create AAD app on Azure portal• Native app or web app

• Set the “app permission”• What the app can do on behalf of the users (on Office 365 resources)

• Obtain “app ID (client ID)” and “app secret”

Page 12: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

Setting up an AAD appDemonstration

Page 13: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

Office 365 & Azure – A Tale of Two Instances• 中国版 vs. 全球版

• 21Vianet 运维 vs. Microsoft 运维• 中国国内数据中心 vs. 海外(香港)数据中心

• 两个互不相通的实例• Azure portal• Auth endpoint• Resource endpoints

• API endpoint 对照• https://msdn.microsoft.com/office/office365/APi/o365-china-endpoints

中国版 (21Vianet 运维) 全球版 (Microsoft 运维)

Authorization https://login.chinacloudapi.cn https://login.microsoftonline.com

Outlook/Calendar/Contact https://partner.outlook.cn https://outlook.office.com

SharePoint https://{tenant}.sharepoint.cn/{site-path}/_api/v1.0 https://{tenant}.sharepoint.com/{site-path}/_api/v1.0

OneDrive for Business https://{tenant}-my.sharepoint.cn/_api/v1.0/me https://{tenant}-my.sharepoint.com/_api/v1.0/me

Graph API https://microsoftgraph.chinacloudapi.cn https://graph.microsoft.com

Graph Explorer https://developer.microsoft.com/zh-cn/graph/graph-explorer-china https://developer.microsoft.com/en-us/graph/

Azure Portal https://www.azure.cn https://azure.microsoft.com

Page 14: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

App Demo

Page 15: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

Graph Explorer

• 中国版• https://developer.microsoft.com/zh-cn/graph/graph-explorer-china

• 全球版• https://developer.microsoft.com/en-us/graph/

Page 16: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

Code Walkthrough

Page 17: Building Office 365 App with AAD OAuth - Microsoft · OAuth •Widely adopted open standard for authorization •Provides client app a “secure delegated access” to server resources

Office 365 DevDays

Thank you