extending your apps for enterprise and education use · these are confidential sessions—please...

84
These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps for Enterprise and Education Use Victor Alexander iOS Data Access Engineer Dave Rahardja iOS Device Management Engineer

Upload: others

Post on 27-Sep-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

These are confidential sessions—please refrain from streaming, blogging, or taking pictures

Session 301

Extending Your Apps forEnterprise and Education Use

Victor AlexanderiOS Data Access Engineer

Dave RahardjaiOS Device Management Engineer

Page 2: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps
Page 3: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps
Page 4: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Apps in Enterprise

Page 5: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps
Page 6: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Authentication

Networking

Data Security

Management

Page 7: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Authentication

Page 8: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSAuthentication

• Shared keychain—great for apps from same developer

Page 9: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSAuthentication

• Shared keychain—great for apps from same developer

Shared Keychain

App 1 App 2

Page 10: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSAuthentication

• Shared keychain—great for apps from same developer

Shared Keychain

App 1 App 2 App 3

Page 11: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSSingle Sign-On

Shared Keychain

App 1 App 2 App 3

Page 12: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSSingle Sign-On

App 1 App 2 App 3

Page 13: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSSingle Sign-On

Server

App 1 App 2 App 3

Page 14: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSSingle Sign-On

App 1 App 2 App 3

Server

Page 15: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSSingle Sign-On

• Kerberos•Grant access to specific apps only• Password not stored inside apps

App 1 App 2 App 3

Server

Page 16: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersSingle Sign-On

•No code changes (if you use NSURLConnection)•Use NSURLConnection or NSURLSession•No authentication callback to your appconnection:willSendRequestForAuthenticationChallenge

Page 17: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

IT integratorsSingle Sign-On

• Configuration profile■ Define account■ Define apps■ Define URL prefixes

•Works with third-party apps and Safari

Page 18: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Authentication

Networking

Data Security

Management

Page 19: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Networking

Page 20: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSNetworking

• SSL/TLS• Proxies—per-SSID or global•Wi-Fi

■ 802.1X■ WPA/WPA2

• VPN

Page 21: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSPer-App VPN

Page 22: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSPer-App VPN

App 1 App 2 App 3

VPN

Enterprise

Internet

Page 23: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSPer-App VPN

Page 24: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSPer-App VPN

• Limit VPN access to specific apps• Security + privacy

Page 25: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersPer-App VPN

Page 26: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersPer-App VPN

•No code changes required

Page 27: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

IT integratorsPer-App VPN

• VPN plugin support• Configured using MDM

Page 28: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersNetworking

•Use NSURLConnection/NSURLSession• Be aware of proxies if you use lower level API• Be conscious of cellular data usageurlRequest.allowsCellularAccess = NO;

Page 29: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Authentication

Networking

Data Security

Management

Page 30: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Data Security

Page 31: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSData Security

•Data protection—protects data at rest with passcode

Page 32: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSData Security

•Data protection—protects data at rest with passcode

Complete withAuthorization CompleteNone

Page 33: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSData Security

•Data protection—protects data at rest with passcode

Restart Complete withAuthorization CompleteNone

Page 34: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSData Security

•Data protection—protects data at rest with passcode

Restart

User enters passcode Complete

Complete withAuthorization CompleteNone

Complete withAuthorizationNone

Page 35: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSData Security

•Data protection—protects data at rest with passcode

Restart

User enters passcode

User locks device CompleteComplete withAuthorization

Complete

Complete withAuthorization CompleteNone

Complete withAuthorization

None

None

Page 36: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSData Security

•Data protection—protects data at rest with passcode• Installed apps automatically protected with NSFileProtectionCompleteUntilFirstUserAuthentication

Page 37: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSData Security

•Data protection—protects data at rest with passcode• Installed apps automatically protected with NSFileProtectionCompleteUntilFirstUserAuthentication

Page 38: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSData Security

•Data protection—protects data at rest with passcode• Installed apps automatically protected with NSFileProtectionCompleteUntilFirstUserAuthentication

• FIPS 140-2 certification

Page 39: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersData Security

Page 40: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersData Security

•Use NSFileProtectionComplete when appropriate

Page 41: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersData Security

•Use NSFileProtectionComplete when appropriate•Write data to buffer if device is locked

Page 42: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersData Security

•Use NSFileProtectionComplete when appropriate•Write data to buffer if device is locked• Keychain data protection keep secrets on one devicekSecAttrAccessibleAfterFirstUnlockThisDeviceOnly

Page 43: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersData Security

•Use NSFileProtectionComplete when appropriate•Write data to buffer if device is locked• Keychain data protection keep secrets on one devicekSecAttrAccessibleAfterFirstUnlockThisDeviceOnly

• iCloud document sync

Page 44: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Authentication

Networking

Data Security

Management

Page 45: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Management

Page 46: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSManagement

•Mobile device management■ Passcode and security policies■ Account installation■ Remote erase■ App installation and removal

Page 47: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSManaged Open In

Page 48: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSManaged Open In

• Prevent unintentional data movement

Page 49: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSManaged Open In

• Prevent unintentional data movement•Managed data stay in managed apps and accounts

Page 50: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

DemoManaged open in

Page 51: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSApp Configuration and Feedback

Page 52: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSApp Configuration and Feedback

• Configuration■ Send configuration dictionary to managed app■ Appears in NSUserDefaults

Page 53: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Built into iOSApp Configuration and Feedback

• Configuration■ Send configuration dictionary to managed app■ Appears in NSUserDefaults

• Feedback■ App writes to NSUserDefaults ■ Read feedback dictionary from managed app

Page 54: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersApp Configuration and Feedback

• Read configuration dictionary using[[NSUserDefaults standardUserDefaults] objectForKey:@”com.apple.configuration.managed”]

•Write feedback dictionary to NSUserDefaults keycom.apple.feedback.managed

• Listen for changes using NSUserDefaultsDidChangeNotification

• Your app might not be running

Page 55: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

DemoApp configuration and feedback

Page 56: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App Configuration

- (void)viewDidLoad { [super viewDidLoad];

//...

[[NSNotificationCenter defaultCenter] addObserverForName:NSUserDefaultsDidChangeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) { [self readDefaultsValues]; }];

[self readDefaultsValues];}

Page 57: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App Configuration

- (void)readDefaultsValues { NSDictionary *serverConfig = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"com.apple.configuration.managed"];

NSString *serverURLString = serverConfig[@"serverURL"]; if (serverURLString && [serverURLString isKindOfClass:[NSString class]]) { self.serverURLTextField.text = serverURLString; } else { self.serverURLTextField.text = @"http://foo.bar"; }

//...}

Page 58: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App Feedback

- (void)incrementSuccessCount { self.successCount += 1;

//...

NSMutableDictionary *feedback = [[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"com.apple.feedback.managed"] mutableCopy]; if (!feedback) feedback = [NSMutableDictionary dictionary];

feedback[@"successCount"] = @(self.successCount); [[NSUserDefaults standardUserDefaults] setObject:feedback forKey:@"com.apple.feedback.managed"];}

Page 59: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersApp Configuration

Page 60: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersApp Configuration

• Settings and preferences■ App UI settings■ URLs■ Disable iCloud document sync

Page 61: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersApp Configuration

• Settings and preferences■ App UI settings■ URLs■ Disable iCloud document sync

• Stored as NSFileProtectionNone—no passwords or private keys!

Page 62: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersApp Configuration

• Settings and preferences■ App UI settings■ URLs■ Disable iCloud document sync

• Stored as NSFileProtectionNone—no passwords or private keys!•Document your dictionary keys

Page 63: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersApp Configuration

• Settings and preferences■ App UI settings■ URLs■ Disable iCloud document sync

• Stored as NSFileProtectionNone—no passwords or private keys!•Document your dictionary keys• Validate all input types and values

Page 64: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersApp Configuration

• Settings and preferences■ App UI settings■ URLs■ Disable iCloud document sync

• Stored as NSFileProtectionNone—no passwords or private keys!•Document your dictionary keys• Validate all input types and values• Keep it small

Page 65: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersApp Configuration

• Settings and preferences■ App UI settings■ URLs■ Disable iCloud document sync

• Stored as NSFileProtectionNone—no passwords or private keys!•Document your dictionary keys• Validate all input types and values• Keep it small•App might not be running

Page 66: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersApp Feedback

• Errors and usage statistics•Aggregate, don’t log•Document your dictionary keys• Keep it small•App might not be running• Respect privacy

Page 67: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

IT integratorsApp Configuration and Feedback

• Provide configuration when installing app•Use feedback to detect server connection errors

Page 68: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersFonts

• Installed using configuration profiles• Font list may change• kCTFontManagerRegisteredFontsChangedNotification

Page 69: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Single App Mode

•MDM-controlled

Page 70: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App-Requested Single App Mode

Page 71: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App-Requested Single App Mode

•MDM-authorizedUIAccessibilityRequestGuidedAccessSession()UIAccessibilityIsGuidedAccessEnabled()UIAccessibilityGuidedAccessStatusDidChangeNotification

Page 72: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

App developersApp Revocation

•App licenses can expire• Expiry date available on receipt• See session on receipts

Page 73: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Authentication

Networking

Data Security

Management

Page 74: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Authentication

Networking

Data Security

Management

Page 75: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Summary

Page 76: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Summary

• Build the next generation of enterprise apps

Page 77: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Summary

• Build the next generation of enterprise apps•Use iOS 7 features

Page 78: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Summary

• Build the next generation of enterprise apps•Use iOS 7 features• Support app configuration and feedback

Page 79: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Summary

• Build the next generation of enterprise apps•Use iOS 7 features• Support app configuration and feedback•Use NSURLConnection / NSURLSession

Page 80: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Summary

• Build the next generation of enterprise apps•Use iOS 7 features• Support app configuration and feedback•Use NSURLConnection / NSURLSession• Build in data protection and security

Page 81: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

More Information

Paul [email protected]

Apple in Businesshttp://www.apple.com/business/

Apple in Educationhttp://www.apple.com/education/

Apple Developer Forumshttp://devforums.apple.com

Page 82: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Using Receipts to Protect Your Digital Sales PresidioThursday 2:00PM

Managing Apple Devices Pacific HeightsTuesday 11:30AM

Related Sessions

Page 83: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps

Labs

Apps for Enterprise and Education Lab Services Lab BTuesday 4:30PM

Page 84: Extending Your Apps for Enterprise and Education Use · These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 301 Extending Your Apps