Skip to main content

Authentication overview


When building an application that enables users to have profiles or buy and sell assets, you must implement an authentication method. An authentication method allows users to log into an application by providing some form of credential or verification of identity. Authentication methods vary in levels of security and data privacy.

To implement authentication in your dapp, your application frontend must provide a user interface component that triggers an authentication workflow. Then, the backend logic must implement code to handle the authentication and return a response to the frontend service.

A simple example of this workflow is a basic 'Who am I?' application that uses Internet Identity for authentication. View the integrating with Internet Identity documentation for more information.

Authentication methods

Authentication methods available on ICP include:

  • Internet Identity: ICP's native identity service that uses a cryptographic public/private key pair for authentication.

  • Email and password: Authentication with an email and password.

  • NFID: A digital form of identity that allows users to use an email and password or their Google account.

  • ic-auth: A modular tool to integrate wallet providers into ICP apps. Supports Stoic, Plug, Internet Identity, and NFID.

  • Plug wallet: An in-browser wallet for managing all ICP assets such as cycles, ICP, tokens, and NFTs.

The following tools enable authenticating with ICP dapps using wallet addresses from other chains and ecosystems:

  • Sign in with Ethereum: An authentication standard that enables Ethereum wallet-based authentication for ICP applications.

  • Sign in with Solana: An authentication standard that enables Solana wallet-based authentication for ICP applications.

  • MSQ library: A client library for dapps to enable user interaction with ICP solely via their existing MetaMask wallet using the Metamask Snaps feature.