+ All Categories
Home > Documents > Authentication for iOS Apps Made Easy - Recent...

Authentication for iOS Apps Made Easy - Recent...

Date post: 27-Oct-2018
Category:
Upload: phamxuyen
View: 213 times
Download: 0 times
Share this document with a friend
25
Authentication for iOS Apps Made Easy Suganya Baskaran
Transcript
Page 1: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Authentication for iOS Apps Made Easy

Suganya Baskaran

Page 2: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Agenda

• Introduction

- Goals for API

- Authentication Manager

• Authenticating a User

- Authentication Challenges

- Demo

• Caching User Crdentials

- Keychain

- Demo

Page 3: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Introduction

Page 4: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Goals for Authenticat ion API

• Less code

- Simplied process

• Central Logic

- Avoid different failure point for resources

- Do it once and in one place!

• Consistent

- Handle different security mechanisms

Page 5: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

• Centralized

• Go-to class for all security related configuration

• Coarse-grained

• Singleton

• AGSAuthenticationManager

• Responsible for authenticating user and caching user

credentials

Authenticat ion Manager

Page 6: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

SECTION 1

Authenticating a User

Page 7: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Server or

PortalAuthentication

Manager

Challenge

Authenticat ion Process

Page 8: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Types of Challenges

• Username Password

• Client Certificate

• OAuth

• Untrusted Host

Challenge Actions

• Provide a credential

• Cancel

• Trust Host (for “Untrusted Host” type challenge)

• Handling a challenge

- Default

- Custom

- Hybrid

Authenticat ion Challenge

Page 9: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Handl ing Chal lenges: 1 . DEFAULT HANDLER

Auth Manager Presents UI Credentials Obtained from User Resource Loaded

Token/IWA OAuth PKI

NO Extra

Code!

Page 10: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Handl ing Chal lenges: 2 . CUSTOM HANDLER

Time

Implements didReceiveAuthChallenge

delegete method

Checks Challenge Type

Creates Custom UI

Presents UI to user & obtains

credential

Sets Credential on Challenge

Developer

Creates Challenge object & fires

delegate method

Loads Resource

Authentication Manager Adopt

<AGSAuthenticationManagerDelegate>

Page 11: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Handl ing Chal lenges: 3 . HYBRID HANDLER

• Custom Hander – for some

• Fall back to default handler – for the rest

- Eg. OAuth Challenges

Page 12: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

DEMO

Authentication Challenges

Page 13: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

OAuth Chal lenges

OAi

OAuth Configurations

Portal URL

Client ID

Redirect URI

Refresh Token Interval

Portal URL

Client ID

Redirect URI

Refresh Token Interval

• Sign into ArcGIS Org or Portal using OAuth

• Client ID of the app

• Optional Redirect URI

- Safari View Controller

Set OauthConfigurations on Authentication Manager

Fall back – username password

Page 14: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

OAuth Chal lenges

• UI handled by Auth Manager

- Oauth VC internal

- No Custom Views

• Change presentation & transition styles

- Adopt <AGSAuthenticationManagerDelegate>

- wantsToShowViewController: & wantsToDismissViewController:

OAuth

Page 15: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

DEMO

OAuth Challenge

Page 16: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

SECTION 2

Caching User Credentials

Page 17: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Credent ia l Cache

• In memory cache

- Enabled by default

• Global

- Reusable for objects in the same domain

• Persist credentials

- between sessions

- between apps

- between devices using iCloud keychain sharing

Page 18: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Save credent ia l – Stay Logged in

• Between sessions (Identifier)

- Saves new credential to keychaiin

- Fetches existing credential to cache

- Updates to cache sync’ed to keychain

• Between apps (accessGroup)

- Apps must share the same accessGroup

• Between devices (acrossDevices)

- iCloud Keyshaing Sharing must be enabled in all devices

Credential

Cache

Device

Keychain

Page 19: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Remove Credent ia l – Logging out

Remove credentials from Cache

Credential

Cache

Device

Keychain

Page 20: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

DEMO

Caching User Credentials

Remember Me

Page 21: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Authenticat ion in a nutshel l . .

Username Password

Client Certificate

OAuth

Challenge Types

Default

Custom

Hybrid

Challenge Handling Continue with credential

Continue with default

handler

Cancel

Challenge Actions

Resources can opt out of Authentication Manager!

Summary

Page 22: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Caching in a nutshel l

In Memory

Between sessions

Between apps

Between devices

Persist Credentials

Credentials from Cache

Remove

Summary

Page 23: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

THANK YOU

Page 24: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Please Take Our Survey!

Download the Esri Events app

and go to DevSummit

Select the session you attended

Scroll down to the

“Feedback” section

Complete Answers,

add a Comment,

and Select “Submit”

Page 25: Authentication for iOS Apps Made Easy - Recent Proceedingsproceedings.esri.com/library/userconf/devsummit17/papers/dev_int... · •Provide a credential ... Set OauthConfigurations

Recommended