Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ import JwtLoginAuth0 from '../../sdk/react/advanced/_custom-authentication-snipp
import ImplicitLoginAuth0Google from '../../sdk/react/advanced/_custom-authentication-snippets/_implicit_login_auth0_google.mdx'
import ImplicitLoginAuth0Spa from '../../sdk/react/advanced/_custom-authentication-snippets/_implicit_login_auth0_spa.mdx'

[Auth0](https://auth0.com/docs/get-started/auth0-overview) is a powerful authentication and authorization platform that enables developers to securely manage user identities. Web3Auth offers native support for integrating Auth0 as a service provider, allowing projects to leverage Auth0s robust authentication mechanisms within the Web3Auth ecosystem.
[Auth0](https://auth0.com/docs/get-started/auth0-overview) is a powerful authentication and authorization platform that enables developers to securely manage user identities. Web3Auth offers native support for integrating Auth0 as a service provider, allowing projects to leverage Auth0's robust authentication mechanisms within the Web3Auth ecosystem.

Auth0 supports a [wide set of social logins](https://marketplace.auth0.com/categories/social-login).

## Create an Auth0 application

To begin, developers must first create an Auth0 application specific to their project. This initial setup is essential before configuring the connection with Web3Auth. Once the Auth0 application is created, developers can proceed to establish an Auth0 connection within the [dashboard](https://dashboard.web3auth.io).

This integration allows users to authenticate through Auth0, while still benefiting from Web3Auths key management and wallet abstraction features. For platform-specific implementation details or additional customization, developers are encouraged to refer to the [official Auth0 documentation](https://auth0.com/docs/quickstart/native#webapp).
This integration allows users to authenticate through Auth0, while still benefiting from Web3Auth's key management and wallet abstraction features. For platform-specific implementation details or additional customization, developers are encouraged to refer to the [official Auth0 documentation](https://auth0.com/docs/quickstart/native#webapp).

export const Auth0Setup = [
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import CustomConnectionOptions from '@site/static/img/embedded-wallets/w3a-dashb
import AWSConnection from '@site/static/img/embedded-wallets/w3a-dashboard/aws-cognito-connection.png'
import ImplicitLoginCognito from '../../sdk/react/advanced/_custom-authentication-snippets/_implicit_login_aws_cognito.mdx'

[AWS Cognito](https://aws.amazon.com/cognito/) is a scalable authentication service provided by Amazon Web Services that enables developers to securely manage user sign-up, sign-in, and access control. Embedded Wallets supports AWS Cognito as a service provider, allowing seamless integration between AWS Cognitos authentication capabilities and Embedded Walletss decentralized key management infrastructure.
[AWS Cognito](https://aws.amazon.com/cognito/) is a scalable authentication service provided by Amazon Web Services that enables developers to securely manage user sign-up, sign-in, and access control. Embedded Wallets supports AWS Cognito as a service provider, allowing seamless integration between AWS Cognito's authentication capabilities and Embedded Wallets's decentralized key management infrastructure.

AWS Cognito [supports a wide set of social logins](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-social-idp.html).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import CustomConnectionOptions from '@site/static/img/embedded-wallets/w3a-dashb
import CustomJWTConnection from '@site/static/img/embedded-wallets/w3a-dashboard/custom-connection.png'
import JwtLoginCustom from '../../sdk/react/advanced/_custom-authentication-snippets/_jwt_login_custom.mdx'

Embedded Wallets supports integration with custom login providers through [JWT-based](https://www.jwt.io/introduction#what-is-json-web-token) authentication schemes, allowing developers to maintain their existing authentication infrastructure while leveraging Web3Auths wallet and key management capabilities. Custom authentication can be implemented using industry-standard cryptographic algorithms such as RSA or ECDSA signatures.
Embedded Wallets supports integration with custom login providers through [JWT-based](https://www.jwt.io/introduction#what-is-json-web-token) authentication schemes, allowing developers to maintain their existing authentication infrastructure while leveraging Web3Auth's wallet and key management capabilities. Custom authentication can be implemented using industry-standard cryptographic algorithms such as RSA or ECDSA signatures.

To use this feature, developers must ensure that their JWTs adhere to the [JWT specification](https://datatracker.ietf.org/doc/html/rfc7519). Each JWT must be signed using a private key, and its corresponding public key must be accessible via a [JWKS (JSON Web Key Set)](https://datatracker.ietf.org/doc/html/rfc7517) endpoint. Web3Auth will use this endpoint to verify the integrity and authenticity of incoming tokens during login.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Firebase [supports a wide set of social logins](https://firebase.google.com/docs

To get started, developers must first create a Firebase project in the Firebase Console. This is a required step before integrating Firebase with Web3Auth. Once the Firebase project is set up, developers can proceed to configure a Firebase connection in the dashboard.

Web3Auths Firebase integration enables the use of Firebase-issued ID tokens to authenticate users, combining Firebases authentication flexibility with Web3Auths decentralized key infrastructure.
Web3Auth's Firebase integration enables the use of Firebase-issued ID tokens to authenticate users, combining Firebase's authentication flexibility with Web3Auth's decentralized key infrastructure.

:::tip

Expand Down
2 changes: 1 addition & 1 deletion embedded-wallets/authentication/social-logins/google.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ To integrate Google Sign-In with Embedded Wallets, developers must first configu

## Step 1: Create a Google app

1. Follow Googles instructions to [set up an OAuth 2.0 app.](https://support.google.com/cloud/answer/6158849?hl=en)
1. Follow Google's instructions to [set up an OAuth 2.0 app.](https://support.google.com/cloud/answer/6158849?hl=en)
2. Paste the following URI as a redirect URI into the "Authorized redirect URIs" field.
- `https://auth.web3auth.io/auth`

Expand Down
2 changes: 1 addition & 1 deletion embedded-wallets/connect-blockchain/evm/tron/web.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ console.log(user)

## Get account and Balance

Once logged in, we can use `tronRpc.ts` to fetch the users account and balance.
Once logged in, we can use `tronRpc.ts` to fetch the user's account and balance.

```typescript
// tronRpc.ts should be implemented as per previous example
Expand Down
4 changes: 2 additions & 2 deletions embedded-wallets/connect-blockchain/other/immutablex.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import InitializeWeb3Auth from '../_initialize-web3auth-other-pnp.mdx'
import TabItem from '@theme/TabItem'
import Tabs from '@theme/Tabs'

While using the Embedded Wallets Web SDK (formerly Web3Auth), you get an [`EIP-1193`](https://eips.ethereum.org/EIPS/eip-1193) provider, similar to the MetaMask provider. This provider can be used with libraries like [`web3.js`](https://web3js.readthedocs.io/en/v1.2.8/getting-started.html), [`ethers.js`](https://docs.ethers.io/v5/getting-started/) etc. to make [ImmutableX](https://www.avalabs.org) blockchain calls. However, since this chain is not fully EVM-compatible, there are a few extra setup requirements. Weve highlighted a few methods here to get you started.
While using the Embedded Wallets Web SDK (formerly Web3Auth), you get an [`EIP-1193`](https://eips.ethereum.org/EIPS/eip-1193) provider, similar to the MetaMask provider. This provider can be used with libraries like [`web3.js`](https://web3js.readthedocs.io/en/v1.2.8/getting-started.html), [`ethers.js`](https://docs.ethers.io/v5/getting-started/) etc. to make [ImmutableX](https://www.avalabs.org) blockchain calls. However, since this chain is not fully EVM-compatible, there are a few extra setup requirements. We've highlighted a few methods here to get you started.

:::note

Expand Down Expand Up @@ -67,7 +67,7 @@ npm install --save @imtbl/core-sdk

## Creating Layer 1 and Layer 2 signers

Once a user logs in, the Embedded Wallets SDK returns a provider. ImmutableX is a layer 2 solution for Ethereum, so well create an ETH signer using the provider (via ethers). Then we use the helper function `createStarkSigner` from `@imtbl/core-sdk` to create a Stark signer from the private key.
Once a user logs in, the Embedded Wallets SDK returns a provider. ImmutableX is a layer 2 solution for Ethereum, so we'll create an ETH signer using the provider (via ethers). Then we use the helper function `createStarkSigner` from `@imtbl/core-sdk` to create a Stark signer from the private key.

```tsx
import { IProvider } from '@web3auth/base'
Expand Down
2 changes: 1 addition & 1 deletion embedded-wallets/connect-blockchain/solana/android.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ description: 'Integrate Embedded Wallets with the Solana Blockchain in Android |
import TabItem from '@theme/TabItem'
import Tabs from '@theme/Tabs'

While using the Embedded Wallets Android SDK (formerly Web3Auth), you can retrieve the Ed25519 private key upon successful authentication. This private key can be used to derive the user's public address and interact with the [Solana](https://solana.org/) chain. Weve highlighted a few methods here to get you started quickly.
While using the Embedded Wallets Android SDK (formerly Web3Auth), you can retrieve the Ed25519 private key upon successful authentication. This private key can be used to derive the user's public address and interact with the [Solana](https://solana.org/) chain. We've highlighted a few methods here to get you started quickly.

::::note

Expand Down
2 changes: 1 addition & 1 deletion embedded-wallets/connect-blockchain/solana/flutter.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ description: 'Integrate Embedded Wallets with the Solana Blockchain in Flutter |

While using the Embedded Wallets Flutter SDK (formerly Web3Auth), you can retrieve the Ed25519
private key upon successful authentication. This private key can be used to derive the user's public
address and interact with the [Solana](https://solana.org/) chain. Weve highlighted a few methods
address and interact with the [Solana](https://solana.org/) chain. We've highlighted a few methods
here to get you started quickly.

:::note
Expand Down
2 changes: 1 addition & 1 deletion embedded-wallets/connect-blockchain/solana/ios.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ description: 'Integrate Embedded Wallets with the Solana Blockchain in iOS | Emb
import TabItem from '@theme/TabItem'
import Tabs from '@theme/Tabs'

While using the Embedded Wallets iOS SDK (formerly Web3Auth), you can retrieve the Ed25519 private key upon successful authentication. This private key can be used to derive the user's public address and interact with the [Solana](https://solana.org/) chain. Weve highlighted a few methods here to get you started quickly.
While using the Embedded Wallets iOS SDK (formerly Web3Auth), you can retrieve the Ed25519 private key upon successful authentication. This private key can be used to derive the user's public address and interact with the [Solana](https://solana.org/) chain. We've highlighted a few methods here to get you started quickly.

:::note

Expand Down
2 changes: 1 addition & 1 deletion embedded-wallets/dashboard/authentication.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ Custom connections are ideal for enterprises or apps with an existing authentica

## Group connections

Group connections enable multiple login methods to be linked to the same on-chain user identity. They are especially useful in scenarios where users may switch or alternate between login methods, allowing for continuous access to the same digital identity without fragmentation. This means that users logging in with different authentication providers (such as **_Google and Email Passwordless_**) can still access the same wallet address—ensuring a unified user experience.
Group connections enable multiple login methods to be linked to the same onchain user identity. They are especially useful in scenarios where users may switch or alternate between login methods, allowing for continuous access to the same digital identity without fragmentation. This means that users logging in with different authentication providers (such as **_Google and Email Passwordless_**) can still access the same wallet address—ensuring a unified user experience.

Before setting up a group connection, developers must first configure individual login connections that are eligible to be grouped. Once eligible connections are established, they can be grouped together under a single group connection.

Expand Down
2 changes: 1 addition & 1 deletion embedded-wallets/features/mpc.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ MetaMask Embedded Wallets utilizes threshold cryptography, a principle of MPC, t

### 2-of-3 setup

1. **Authentication share:** Derived from the users chosen login method (for example, social login such as Google).
1. **Authentication share:** Derived from the user's chosen login method (for example, social login such as Google).
2. **Device share:** Stored on-device, protected by OS security/biometrics.
3. **Backup/2FA share:** User-controlled recovery using a high-entropy secret.

Expand Down
4 changes: 2 additions & 2 deletions embedded-wallets/features/user-account-dashboard.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Users can:
Users can see which apps are connected to their account and stay in control of access:

- View all apps authorized to use the account.
- Revoke an apps access instantly.
- Revoke an app's access instantly.
- Sign out of active sessions as needed.

### Device overview
Expand All @@ -55,7 +55,7 @@ Users access the dashboard after authenticating with any app that uses MetaMask

:::tip

For a smoother experience, add a "Manage account" or "Security" link to [account.web3auth.io](https://account.web3auth.io) in your apps settings/profile.
For a smoother experience, add a "Manage account" or "Security" link to [account.web3auth.io](https://account.web3auth.io) in your app's settings/profile.

:::

Expand Down
2 changes: 1 addition & 1 deletion embedded-wallets/infrastructure/README.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ The 2/3 share threshold feature safeguards against censorship by nodes. Even if

We take a conservative approach to data collection. The only required stored data is a relationship of an anonymized identifier from the OAuth or JWT that is pegged up into the infrastructure.

<!-- per nodes-and-dkg, is the stored value an anonymized representation of (verifier, verifier_id), derived from authentication tokens (OAuth/JWT or otherwise)? "From this token, the SDK derives the users `verifier_id` (or retrieves it from the authentication providers user profile) and uses the (`verifier`, `verifier_id`) pair to identify or assign the users key."
<!-- per nodes-and-dkg, is the stored value an anonymized representation of (verifier, verifier_id), derived from authentication tokens (OAuth/JWT or otherwise)? "From this token, the SDK derives the user's `verifier_id` (or retrieves it from the authentication provider's user profile) and uses the (`verifier`, `verifier_id`) pair to identify or assign the user's key."
-->

This is often the required `sub` field on the JWT RFC, which applications have the option of storing outright or storing a hashed value of `sub`. This relationship is first created on initial key generation/assignment and later utilized to authenticate the specific public key and session token to the user's end device.
Expand Down
10 changes: 5 additions & 5 deletions embedded-wallets/infrastructure/glossary.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ description: "Important Terms and Definitions - Embedded Wallets' Cryptographic

### Shamir Secret Sharing

[Shamirs Secret Sharing](https://en.wikipedia.org/wiki/Shamir%27s_secret_sharing) (SSS) scheme is a polynomial
[Shamir's Secret Sharing](https://en.wikipedia.org/wiki/Shamir%27s_secret_sharing) (SSS) scheme is a polynomial
threshold $(t,n)$ secret sharing scheme where the secret holder divides a secret into n multiple shares and each participant is given a share by evaluating a
polynomial of order $t$ . To reconstruct the secret, $t + 1$ shares are required.

SSS is often applied in MPC cryptography and is fundamental to Embedded Wallets infrastructure.
SSS is often applied in MPC cryptography and is fundamental to Embedded Wallet's infrastructure.

### Verifiable Secret Sharing

Verifiable secret sharing (VSS) refers to a class of secret-sharing schemes—often built on top of Shamirs Secret Sharing—that ensure a well-defined secret can be reconstructed, even if the party distributing the shares behaves maliciously.
Verifiable secret sharing (VSS) refers to a class of secret-sharing schemes—often built on top of Shamir's Secret Sharing—that ensure a well-defined secret can be reconstructed, even if the party distributing the shares behaves maliciously.

### Threshold Signature Schemes

Expand Down Expand Up @@ -66,10 +66,10 @@ varient of [Async Verifiable Secret Sharing](https://eprint.iacr.org/2002/134.pd

### Proactive Secret Sharing

Proactive Secret Sharing (PSS) allows participants to refresh shares, so that all participants receive
Proactive Secret Sharing (PSS) allows participants to "refresh" shares, so that all participants receive
new shares, while the secret remains unchanged. This allows the secret sharing to be secure against
mobile adversaries who may be able to compromise all participants over the lifetime of the secret
(for example, an adversary hacks a random participants server every month).
(for example, an adversary hacks a random participant's server every month).

Simply copying shares across epochs is a bad idea, since a single node operator operating in two
separate epochs would get access to two shares, and it also makes it impossible to increase or
Expand Down
8 changes: 4 additions & 4 deletions embedded-wallets/infrastructure/mpc-architecture.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ User metadata is strictly supplementary and only helps to facilitate and govern
does not leak information about the shares of the private key being used to sign transactions.

Metadata uses an encrypted storage layer that serves as a persistent data store for storing encrypted information
about the users keys (for example, public key, preferences, device information, and thresholds). This information is stored in a replicated fashion across the set of nodes that are involved in facilitating the user login.
about the user's keys (for example, public key, preferences, device information, and thresholds). This information is stored in a replicated fashion across the set of nodes that are involved in facilitating the user login.

During operation, when the user achieves threshold shares, they can read and write to metadata. Writing to metadata requires encrypting the data and signing it with the shares / private key.

Expand All @@ -124,9 +124,9 @@ use in key recovery / share refresh if the user loses his/her device or shares.

Key handling begins in response to a user-triggered action, such as logging in. At this stage, the system attempts to retrieve any existing encrypted metadata associated with the user.

If metadata is found, the user is an existing user. The metadata is decrypted using the nodes $encKey$ , and the stored information is used to validate the user and load the existing secret-sharing parameters. No new key material is generated in this path.
If metadata is found, the user is an existing user. The metadata is decrypted using the nodes' $encKey$ , and the stored information is used to validate the user and load the existing secret-sharing parameters. No new key material is generated in this path.

If no metadata is found, the user is treated as a new user, and a new key is initialized. In this case, a 2-of-3 Shamirs Secret Sharing (SSS) polynomial is generated, producing a private key and its corresponding shares.
If no metadata is found, the user is treated as a new user, and a new key is initialized. In this case, a 2-of-3 Shamir's Secret Sharing (SSS) polynomial is generated, producing a private key and its corresponding shares.

We select a polynomial $f(z)$ over $Z_q$ where: $$f(z) = a_1z + \sigma$$

Expand All @@ -143,7 +143,7 @@ We select a polynomial $f(z)$ over $Z_q$ where: $$f(z) = a_1z + \sigma$$
### Key usage, access, and signing

For returning users, key access is established by retrieving ShareB via a session token handshake and combining it
with the locally stored ShareA on the users device to produce threshold signatures.
with the locally stored ShareA on the user's device to produce threshold signatures.

<img
alt="Key Usage Flow"
Expand Down
Loading
Loading