Single Page Application Authentication

Advanced

Ado Kukic

Evangelism Lead

Auth0

@kukicado

http://bit.ly/spa-security

Traditional Auth

{ username / password }

{ sid 123 }

http://bit.ly/spa-security

Traditional Auth

{ sid 123 }

{ html }

http://bit.ly/spa-security

Traditional Auth

Single Page App
 Authentication

http://bit.ly/spa-security

Scenario 1

{ json }

http://bit.ly/spa-security

https://myapp.com/api/

https://myapp.com/

Same Domain

Scenario 2

{ json }

http://bit.ly/spa-security

https://api.myapp.com/

https://app.myapp.com/

Sub-Domain

Scenario 3

{ json }

http://bit.ly/spa-security

https://api.epicapp.com/

https://myapp.com/

Different Domain

OAuth 2.0

An open standard for access delegation, commonly used as a way for Internet users to grant websites or applications access to their information on other websites but without giving them the passwords.

An open standard for access delegation.

http://bit.ly/spa-security

OpenID Connect

An authentication layer built on top of OAuth 2.0, allowing clients to verify the identity of an end-user based on the authentication performed by an authorization server.

An authentication layer built on top of OAuth 2.0

http://bit.ly/spa-security

OAuth 2.0 Roles

Resource Owner

The entity that can grant access to a protected resource. Typically this is the end-user.

Resource Server

The server hosting the protected resources. This is the API you want to access.

Client

The app requesting access to a protected resource on behalf of the Resource Owner.

Authorization Server

The server that authenticates the Resource Owner, and issues tokens.

Codes and Tokens

 

Authorization Code

An opaque string, meant to be exchanged with an Access Token at the token endpoint.

Access Token

An opaque string or JWT that denotes who has authorized which permissions (scopes) to which application.

Refresh Token

A special kind of token containing the information required to obtain a new Access Token or ID Token.

Id Token

A JWT that contains user profile information (name, email, etc.), represented in the form of claims.

http://bit.ly/spa-security

OAuth 2.0 Scopes

http://bit.ly/spa-security

Scopes only come into play in delegation scenarios, and limit what an app can do on behalf of a user.

OAuth 2.0 Flows

Authorization Code

Authorization Code with Proof Key for Code Exchange (PKCE)

Implicit

Client Credentials

http://bit.ly/spa-security

 

Single Page Application

Implicit Grant Flow

http://bit.ly/spa-security

Baseline

{ json }

http://bit.ly/spa-security

Authentication

http://bit.ly/spa-security

Authenticated

{ json }

{ json }

http://bit.ly/spa-security

Silent Authentication

{ json }

{ json }

http://bit.ly/spa-security

Silent Authentication

{ json }

{ json }

iframe

http://bit.ly/spa-security

 

Single Page Application

Authorization Code with PKCE Grant Flow

http://bit.ly/spa-security

Baseline

{ json }

http://bit.ly/spa-security

Authentication

{ code_challenge }

code={123}

http://bit.ly/spa-security

Authentication

{ code={123} code_verifier }

http://bit.ly/spa-security

Authenticated

{ json }

{ json }

http://bit.ly/spa-security

 

Summary

 

Modern authentication is complex

Two ways to approach SPA authentication

Auth Code with PKCE is the BCP

http://bit.ly/spa-security

Your architecture will guide your needs

 

Resources

 

On The Nature of OAuth 2 Scopes

http://bit.ly/oauth-scopes

 

Angular Authentication Tutorial

http://bit.ly/ng-auth-quick

 

React Authentication Tutorial

http://bit.ly/react-auth-quick

http://bit.ly/spa-security

 

Thank You!

@kukicado

 

http://bit.ly/spa-security

Advanced Single Page Application Security

By Ado Kukic

Advanced Single Page Application Security

  • 868