---
title: OATH Device Storage node
description: The OATH Device Storage node stores devices in the user profile after an OATH Registration node records them in the shared state.
component: auth-node-ref
version: latest
page_id: auth-node-ref::oath-device-storage
canonical_url: https://docs.pingidentity.com/auth-node-ref/latest/oath-device-storage.html
keywords: ["Nodes &amp; Trees", "Journeys", "Authentication", "OAuth 2.0"]
page_aliases: ["auth-node-oath-device-storage.adoc"]
superseded_by: https://docs.pingidentity.com/auth-node-ref/latest/oath-device-storage.html
section_ids:
  example: Example
  availability: Availability
  authenticators: Authenticators
  inputs: Inputs
  dependencies: Dependencies
  configuration: Configuration
  outputs: Outputs
  outcomes: Outcomes
  errors: Errors
---

# OATH Device Storage node

The OATH Device Storage node stores devices in the user profile after an [OATH Registration node](oath-registration.html) records them in the shared state.

## Example

The following journey includes both username-password and one-time passcode authentication:

![OATH journey with device registration](_images/oath-journey.png)

* The [Page node](page.html) with the [Platform Username node](platform-username.html) and the [Platform Password node](platform-password.html) prompts for the user credentials.

* The [Data Store Decision node](data-store-decision.html) confirms the username-password credentials.

* The first [OATH Token Verifier node](oath-token-verifier.html) prompts for a one-time passcode with an option to use a recovery code.

* The [OATH Registration node](oath-registration.html) prompts the user to register a device and includes its profile in the shared state.

* The [Recovery Code Display node](recovery-code-display.html) shows the recovery codes and prompts the user to keep them safe.

* The second [OATH Token Verifier node](oath-token-verifier.html) prompts for a one-time passcode using the newly registered device.

* The [OATH Device Storage node](oath-device-storage.html) writes the device profile to the user's account.

* The [Recovery Code Collector Decision node](recovery-code-collector-decision.html) prompts for a recovery code.

* The [Retry Limit Decision node](retry-limit-decision.html) lets the user retry another code if they enter one incorrectly.

## Availability

| Product                               | Available? |
| ------------------------------------- | ---------- |
| PingOne Advanced Identity Cloud       | Yes        |
| PingAM (self-managed)                 | Yes        |
| Ping Identity Platform (self-managed) | Yes        |

### Authenticators

The OATH-related nodes can integrate with the following authenticator apps:

* [PingID mobile app](https://docs.pingidentity.com/pingid-user-guide/pid_mobile_app/ug_pid_mobile_app_for_ios_and_android.html)

* [ForgeRock Authenticator](https://docs.pingidentity.com/sdks/latest/authenticator/index.html) app

* Third-party authenticator apps that support the following open standards:

  * [RFC 4226](https://tools.ietf.org/html/rfc4226): HMAC-Based One-Time Password (HOTP)

  * [RFC 6238](https://tools.ietf.org/html/rfc6238): Time-Based One-Time Password (TOTP)

## Inputs

This node reads the device profile as the value of the shared state attribute `oathDeviceProfile`.

## Dependencies

Precede this node in the flow with an [OATH Registration node](oath-registration.html) with its Store device data in shared state setting enabled.

## Configuration

This node has no configurable properties.

## Outputs

This node doesn't change the shared state.

## Outcomes

* `Success`

  The node wrote the device profile to the user's account.

* `Failure`

  Any other case.

## Errors

This node logs a `No device profile found on shared state` error message if it can't get the device profile from the `oathDeviceProfile` shared state attribute.
