Use OAuth 2.0 and OpenID Connect As Protocols for Authentication and Authorization
Status: accepted
Date: 2020-06-02
Context and Problem Statement
What protocol(s) shall we use as the new standard for authentication and authorization. It would be supported by our new centralized authority server and should be implemented in all new clients and resource systems needing authentication or authorization. A requirement might be made that the authority service need to support other protocols for legacy systems but all new systems should be encourage to use the same protocol.
Decision Drivers
Secure
Well defined and well reviewed standard
Easy to implement by client and resource systems
Support for non web client systems i.e. mobile devices
Considered Options
OAuth 2.0 + OpenID Connect
SAML 2.0
Decision Outcome
Chosen option: "OAuth 2.0 + OpenID Connect", because it is secure and well examined and and has support libraries for our tech stack.
Pros and Cons of the Options
OAuth 2.0 + OpenID Connect
Good, because the authentication protocal is designed specifically to work with the authorization protocol.
Good, because it supports non web clients i.e. native apps.
Good, because it has certified, open source libraries for relying parties for OpenID authentication that match our
tech stack (javascript with typescript defenitions).
Bad, because it could require large tokens for authorization for multiple services, or split up tokens complicating
the process.
SAML 2.0
Good, because it is the currently used standard for legacy systems.
Bad, because it doesn't have good support for non web clients.
Bad, because main focus is on enterprise SSO, not centralized authorization.
Last updated