Awesome
Configure your Firebase function to generate Virgil JWT
This repository contains a backend's function that connects your Virgil and Firebase accounts for implementing end-to-end encryption.
Prerequisites
- Node version from 10 to 13
You can use one of node version managers to switch the version: n or nvm
Configure Your Firebase Project
We assume that you already have a Firebase Project. If you don't, please create one now at your Firebase Console.
Configure User Authentication
If you haven't already, set up Sign-in method in your Firebase Project by enabling any of the Sign-in providers. For the purposes of this tutorial it doesn't matter which sign-in provider you choose.
To set up your Sign-in method, go to your Firebase Console and navigate to Authentication, under Develop. Go to the Sign-in method tab and set up your preferred sing-in method(s).
Deploy the Firebase function
This Firebase function will connect Firebase's and Virgil's authentication via JWT tokens.
- Clone this repository
git clone https://github.com/VirgilSecurity/virgil-e3kit-firebase-func.git cd virgil-e3kit-firebase-func
Set up Firebase project
-
Install Firebase CLI if you haven't already:
npm install -g firebase-tools
-
Start up the Firebase CLI:
firebase login
-
Navigate to this repository and connect it to your Firebase project:
firebase use --add
-
Select your Firebase project from the list and press ENTER.
-
Type an alias for your project and press ENTER again.
Set up Virgil Application
-
Get your Virgil Credentials:
- Navigate to the Virgil Dashboard -> Your Application -> E3Kit Section.
- Generate
.env
in the .env file section.
- Download the generated file, paste it into the project root folder and rename it to
.env
.
Install dependencies
-
To install dependencies and configure Virgil Credentials, in cmd navigate to the repository folder and run:
cd functions npm install npm run configure
In case you receive a message like
warning found n vulnerabilities
printed in the console after running thenpm install
, there is a potential security vulnerability in one of the demo's dependencies. Don't worry, this is a normal occurrence and in the majority of cases, is fixed by updating the packages. To install any updates, run the commandnpm audit fix
. If some of the vulnerabilities persist after the update, check the results of thenpm audit
to see a detailed report. The report includes instructions on how to act on this information. -
If
npm install
fails, make sure you have a compatible node version. See in Prerequisites.
-
Windows users only: In
firebase.json
rename$RESOURCE_DIR
to%RESOURCE_DIR%
- Optional: change the field used for identity to
email
,phone_number
or any unique value in functions/src/index.ts . Default isuid
(Firebase unique id)
Deploy function
:warning: Since August 17, 2020, Firebase has changed their billing plans. In order to deploy the function and run this demo, you will need to change your project billing plan to "Blaze" in project settings "Usage and Billing".
- Deploy the Firebase function:
npm run deploy
Now, in your at your Firebase Console in "Develop" -> "Functions" you'll be able to see the function deployed:
<img src="img/firebase_deployed.png" alt="Firebase function deployed">Troubleshooting
Error: Error parsing triggers: Cannot find module '../virgil_crypto_node.node'
Make sure you've followed the instructions in the README. If you did so, try running this command:
node node_modules/virgil-crypto/scripts/download-node-addon.js
TypeError: Cannot destructure property app_id
of 'undefined' or 'null'.
You most likely forgot to generate the .env
file or named it incorrectly. Make sure the file is named exactly .env
(no '.txt' at the end and no other extensions) and contains your keys in a similar format:
APP_ID=40afa3ea[...]520c1be
APP_KEY_ID=0e6f[...]fd3476c3cf
APP_KEY=MC4CAQt[...]7DprlzC7gG1
License
This library is released under the 3-clause BSD License.
Support
Our developer support team is here to help you. Find out more information on our Help Center.
You can find us on Twitter or send us email support@VirgilSecurity.com.
Also, get extra help from our support team on Slack.