Skip to content

Commit 0d631ad

Browse files
committed
add 2fa description to security docs
1 parent c4ce82a commit 0d631ad

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

docs/security.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,32 @@ The Epic Stack has several security measures in place to protect your users and
44
yourself. This (incomplete) document, explains some of the security measures
55
that are in place and how to use them.
66

7+
## TOTP and Two-Factor Authentication
8+
9+
Two factor authentication is built-into the Epic Stack. It's managed using a
10+
custom built TOTP (Time-based One Time Passwords) utility that's been fully
11+
tested with Google Authenticator and 1Password and is based loosely on existing
12+
(but outdated) libraries.
13+
14+
You can read more about the decision to use TOTP in
15+
[the totp decision document](./decisions/014-totp.md). The secret and other
16+
pertinent information is stored in a `verification` model (check the Prisma
17+
schema). This verification model is used as the basis for all TOTP secrets. This
18+
is used for non-expiring Two-Factor Authentication secrets as well as temporary
19+
TOTP codes which are emailed to verify a user's ownership of an email/account.
20+
So it's used for onboarding, forgot password, and change email flows.
21+
22+
When a user has 2FA enabled on their account, they also are required to enter
23+
their 2FA code within 2 hours of performing destructive actions like changing
24+
their email or disabling 2FA. This time is controlled by the
25+
`shouldRequestTwoFA` utility in the `login` full stack component in the resource
26+
routes.
27+
28+
In some cases, entering a TOTP happens in the `/verify` route. This is the
29+
approach taken for email ownership verification. However, in other cases,
30+
verification happens inline to reduce disorienting the user. This is the
31+
approach taken for performing destructive actions.
32+
733
## Content Security Policy
834

935
The Epic Stack uses a strict

0 commit comments

Comments
 (0)