Analysis of existing OpenID Connect applications and libraries in iOS to be used as a basis for the implementation of the federation functionality described in https://github.com/OpenIDC/fedoidc/blob/master/draft/oidcfed.hf.txt.

AppAuth for iOS and macOS (from Google)

URL: https://openid.github.io/AppAuth-iOS/

External references: https://connect2id.com/blog/openid-ios-client-library

AppAuth for iOS and macOS is a client SDK for communicating with OAuth 2.0 and OpenID Connect providers. It strives to directly map the requests and responses of those specifications, while following the idiomatic style of the implementation language. In addition to mapping the raw protocol flows, convenience methods are available to assist with common tasks like performing an action with fresh tokens.

It follows the best practices set out in OAuth 2.0 for Native Apps including using SFSafariViewController on iOS for the auth request. For this reason, UIWebView is explicitly not supported due to usability and security reasons.

It also supports the PKCE extension to OAuth which was created to secure authorization codes in public clients when custom URI scheme redirects are used. 

AeroGear iOS

URL: https://aerogear.org/ios/

The library features are ranging from networking, authorization (and in particular OAuth2) , Storage and Crypto. We believe the iOS platform offers a solid and extremely powerful foundation, but there are cases in which developer productivity can be improved by offering a much easier access to that foundation. Please use the corresponding links below for more information of the features provided by each respective library.

HTTP Module

aerogear-ios-http is a thin layer to take care of your http requests working with NSURLSession. Taking care of:

OAuth2 Module

aerogear-ios-oauth2 is an OAuth2 Client based on aerogear-ios-http. Taking care of:

JSON Serialization Module

aerogear-ios-jsonsz serializes ‘Swift’ objects back-forth from their JSON representation the ‘easy way’. 

Useful resources and tools

SWIFT Resources

 

 

 

You may also want to use visual panels to communicate related information, tips or things users need to be aware of.