Push Protocol – Challenge/Response & Registration Redux

Author:

David Luna

Created at:

Oct 2019

Updated at:

Jul 2022

Overview

Push authentication depends on the secure verification of information sent from the server to the client, and from the client to the server. This lets the server verify that the notification was received by the original device, and for the device to verify that only the server sent the original request.
This approach is achieved by a combination of communication channels:

  • QR Code over HTTPS: Required for setup of the account on the user’s device. This allows an out-of-band setup of the device, and is of a sufficient security level for the goal of push authentication

  • Amazon Simple Notification Service: Used for delivering push messages to clients, which will trigger the authentication flow.

The high-level flow of operations is best summarized with the following diagram:

image

Registration

Registration is the process of registering the user’s phone with their account, so they can use it for push authentication-based login.

The flows described below assume an inline registration is being performed; that is, the user completes authentication using a conventional authentication chain, and within that, starts the registration process for the phone:

https://backstage-community-prod.storage.googleapis.com/original/1X/c190481b6083705aa848dc8f652ca907cf661791

Authentication

The authentication flow assumes that both server and client have been preconfigured with the secret, and that the communication link between the server and the client has been established:

https://backstage-community-prod.storage.googleapis.com/original/1X/92b20701b15f12fb610b146412f5792542befc78

Data Contents

REG0 : Message sent from server to device via QR code

Format: URL-encoded within QR code
Scheme: pushauth://push.forgerock: _ _/? params

Where <username> is defined as:

The name of the account to display to the user on the phone’s app, usually the user-facing username of the account.

Where params are defined as:

https://backstage-community-prod.storage.googleapis.com/original/1X/802809de243af41047a565c618fbd63d33301e4e

Where loadbalancer is defined as:

Base64Url(loadbalancerName + “=” + loadbalancerValue)
The client should Base64Url-decode the string value as its cookie.

REG1 : Message sent from device to server in response to REG0

Format: JSON data payload , sent over HTTPS POST to the endpoint defined as the registration endpoint taken from REG0.

Where payload is defined as:

https://backstage-community-prod.storage.googleapis.com/original/1X/cab69af32bc7f4ae347a860d106cec2f86a89da0

Where claims are defined as:

https://backstage-community-prod.storage.googleapis.com/original/1X/f97f2a1bff5ed28d9f61265d3e3385a63c8a86ac

AUTH0 : Message sent from server to device via push

Format: Json data payload

Where payload is defined as below:

https://backstage-community-prod.storage.googleapis.com/original/1X/832f45ce6449f73184d7f0781c02ae25c73329cf

Signed JWT, with claims :

https://backstage-community-prod.storage.googleapis.com/original/1X/ad6a03365a6d71f8304131b392fd21adcbddd834

Where loadbalancer is defined as:
Base64(loadbalancerName + “=” + loadbalancerValue)

The client should first Base64-decode the string, and finally, use the value presented.

AUTH1 : Message sent from device to server in response to AUTH0

Format: JSON data payload , sent over HTTPS POST to the endpoint defined as the authentication endpoint taken from REG0.

Where payload is defined as:

https://backstage-community-prod.storage.googleapis.com/original/1X/24114c1cf74f88cc5ff66882f9f4672ff1382d78

Signed JWT, with claims :

https://backstage-community-prod.storage.googleapis.com/original/1X/3ff7fd6ed2f0c7c454a2022a3d651f53ca407911

Further steps towards passwordless adoption. The latest front in the war on passwords was opened recently via a multi-pronged attack by the FIDO Alliance, Apple, Google, and Microsoft. The announcement by the FIDO Alliance on the introduction of “passkeys” (or “multi-device credentials”) has been met with excitement by the Identity and Access Management community. At ForgeRock, we have been passionate about helping reduce the burden of passwords, and fully support these moves. The announcement …

This glossary gives a (very) quick overview of the significant actors, roles, and components of a fully-realized Self-Sovereign Identity (SSI) solution. For more formal definitions, please see https://www.w3.org/TR/vc-data-model/#terminology Components Verifiable Credential (VC) A credential which has been generated about a given individual entity (Subject) by an Issuer. A credential is formed as a collection of attributes (or ‘claims’) that describe qualities of the subject. A Verifiable Cre…

Self-Sovereign Identity (SSI)—in the pure form that its most ardent supporters promote—envisions a situation where every user controls their own digital wallets containing verifiable credentials (VCs). The contents of these VCs are stored in immutable public blockchains and are shared to service providers through zero-knowledge proofs (ZKPs). Unfortunately, the real world is not ready for SSI. For a quick primer on the technologies, actors, and roles involved in SSI and how they interact, ref…

https://community.forgerock.com/user_avatar/community.forgerock.com/david.luna/48/253_2 define web3 [.badge-category[.badge-category__name]CTO Lounge#]

#define web3 The journey that we’re on… As we saw the emergence of Web2.0 (“web two point oh”) around 2003-2004 it changed the way users interacted with the world-wide web. No longer were static pages of information akin to an offline directory suitable for the modern web; it was time for dynamic content, and user participation. No longer were discussions between users hidden away in forums; it was time for comment sections and sites with built-in chat functionality. No longer was a user require…

By David Luna A quick video tutorial on how to configure the SAML2 Authentication module for auto-federation in AM This demonstration walks through configuring the module from first principles, showing how to configure a service provider (SP), an identity provider (IdP), and then the Authentication module as part of a login chain. NOTE This video demonstration uses OpenAM 13.0; although the appearance has changed between AM and OpenAM 13.x, the same principles and processes still apply. In A…