GuidesAuthenticating Accounts

What is an Account?

An Account is a principal/subaccount pair, better known as an ICRC1 account. Other decentralized networks (i.e. EVM, SOL) started with accounts as the primary identifier and required users to approve every transaction. For better or worse ICP started with the “delegation”, which is effectively an Account that’s been pre-approved to make calls on behalf of the user (read more about delegations).

The following guide teaches you how to use Accounts instead of Delegations so that every authenticated transaction will display a wallet prompt for explicit user approval.

Steps

1. Set ACCOUNTS authType

const App = () => {
  return (
    <IdentityKitProvider authType={IdentityKitAuthType.ACCOUNTS}>
      <YourApp />
    </IdentityKitProvider>
  )
}

2. Execute calls

Follow the same steps for executing canister calls with the understanding that every authenticated call will result in an approval prompt.

Note on wallet support

Currently known support for the icrc27_accounts standard:

Signericrc27_accounts support
NFID WalletYes
PlugYes
OisyYes
Internet IdentityNo
StoicNo