Additions and updates to the Userfront platform.
The new Tenant Details offers a clean, concise overview of your tenant's configuration and simplifies navigation through complex data like child tenants, end users with roles, and example JWTs. With its redesigned layout, you can easily create child tenants and focus on what's most important to you.
This new API endpoint accepts any JWT and returns the most recent session data, ideal for improved session synchronization and management. It provides valuable insights into user activity and authentication status, enabling more effective user management and troubleshooting. Developers can use this information to enhance security measures and improve overall user experience. Learn more about this new endpoint here.
Wildcard Live Domains now allow you to use a single domain for multiple subdomains or custom domains in your application. This feature simplifies the process of managing multiple environments or client-specific instances under one umbrella domain. With wildcard live domains, you can dynamically create and manage subdomains without the need for individual domain configurations, streamlining your development and deployment processes. Learn more about wildcard live domains in our docs.
As part of our ongoing effort to make our offerings more accessible, we've renamed the Toolkit to UI Toolkit. Our ready-to-use forms can be added to any website in seconds and customized for login, sign up, and password reset functions. Configure, style and install your toolkit in the Userfront Dashboard.
We're thrilled to announce exciting updates for our WordPress plugin! We've made the plugin settings more user-friendly with new, easy-to-understand descriptions. We've also introduced feature control, allowing you to enable or disable specific functions like login, signup, and password reset. The new Organization ID field now associates roles instead of the workspace. Additionally, you can enhance security by blocking access with the "Require a WordPress account" option. These improvements, along with many more, are included in our latest release. Check it out on GitHub!
WordPress admins no longer need to decide between dozens of sketchy or broken auth plugins. Userfront is now available for access and identity management with an all-new plugin. Version 1 is available on GitHub for WordPress v6.6 and later. Read the installation instructions for a step-by-step guide on using the plugin.
The Userfront integration is now live on the Vercel Marketplace! Deploy a Next.js web application with fully-fledged authentication on Vercel in seconds. Click the deploy button below to get started!
or learn more about the integration and template.
Our community asked and we understood the assignment! There are 2 new examples for Spring Boot and GoLang with the Gin web framework. All of our examples are publicly available on GitHub. Contributions are always welcome.
We’ve entirely redesigned the navigation and landing page of the Userfront Docs. The new reorganized layout is designed to make it easier to see all of our most important offerings, find exactly what you’re looking for and peruse through our plethora of content. We’ve also reorganized our API docs to improve the grouping and nesting of the categories, for an overall smoother developer experience.
We’ve made tenant types easier to understand:
Adding and removing team members has been simplified and the seat management process improved.
Rate limiting for sending emails has been updated as follows:
You can find complete guidance on rate limiting in the API docs
The Dashboard's Users page now includes:
Visit the Toolkit page in your Dashboard to customize the look & feel of your Toolkit forms
You can now delete a workspace directly from the Dashboard
Password reset email for new users now work as expected when email link is not configured as a first auth factor
The display of nested tenants has been improved to make tenant heierarchy clearer. Workspace UUIDs are also now displayed and searchable. See these updates now on the Tenants page.
The latest release of Toolkit resolves an issue where "oops, an unknown error occurred" was occasionally displayed. Read more in the complete release notes.
You can now create a JWT access token with a custom payload in Userfront's API. Learn more in the API docs.
Rate limiting for sending emails has been updated as follows:
A milestone new release of Userfront's Toolkit makes it easier to add multi-factor authentication (MFA) to your website or mobile application. Read more about this Toolkit release here on the blog, or follow along with a hands-on tutorial here.
Confirmation status on users is now more granular with the addition of two fields:
isEmailConfirmed
and isPhoneNumberConfirmed
isConfirmed
These fields are returned in every user record within your workspace or your workspace's tenants.
Added the GET /self
endpoint to allow a logged-in user to read detailed information about themself. See Read own user data.
You can now import existing users into your Userfront database in bulk via API.
Learn more about the new user import endpoints in the API reference.
Single Sign-On is now available for Okta on both web and mobile. You can configure Okta as an SSO provider directly in your Userfront dashboard.
GET /self
endpoint{
"mode": "live",
"userId": 5,
"tenantId": "demo1234",
"email": "user@example.com",
"name": "Jane Doe",
"locked": false,
"isConfirmed": true,
"isMfaRequired": false,
"data": {
"custom": "data"
},
...,
"tenant": {
"tenantId": "demo1234",
"name": "Demo Workspace"
},
"authentication": {
"firstFactors": [
{ "strategy": "password", "channel": "email" },
{ "strategy": "link", "channel": "email" }
],
"secondFactors": [{ "strategy": "totp", "channel": "authenticator" }]
},
"authorization": {
"demo1234": {
"roles": []
}
}
}
It is now possible to use your workspace API key or JWT access token to manage roles for your nested tenants.
This means you can have a structure like the following:
Each level can have its own roles, and each user can have roles at any level, or at multiple levels. For example, a user could be a viewer
at the global application level, an editor
in Organization A, an owner
in Organization B, a viewer
in Team B1, and so on.
You can manage roles for each user using the Roles API endpoints.
The new Userfront dashboard is live, with many new features.
The old dashboard will remain available at https://old.userfront.com through the end of 2022.
Now you can nest tenants an additional level, allowing you to create sub-organizations within your application.
See the create child tenant endpoint to create a nested tenant. Once you have created a child tenant, the other existing endpoints work the same as for the parent tenant.
Userfront now records all signup and login activities to help identify usage patterns and attempted unauthorized actions. These events and metrics will soon be available to view in the dashboard.
Userfront now aggregates user activity into daily and monthly summaries for your workspace. This includes:
This aggregate information will soon be available to view in the dashboard.
All nonce-based security methods now have enhanced security, with brute-force detection and blocking built in.
By default, each link can only be guessed 10 times before the link credentials will be marked as invalid. Userfront also records these attempts, and in the future will notify you when they occur.
This change adds additional brute force security and monitoring to the following:
authentication
object included in API responseFor user CRUD operations, Userfront now returns a list of authentication methods that are valid for the user:
{
"authentication": {
"firstFactors": [
{ "strategy": "password", "channel": "email" },
{ "strategy": "google", "channel": "email" }
],
"secondFactors": [{ "strategy": "totp", "channel": "authenticator" }]
}
}
It's now possible to login with 2 more approaches:
signup({ method: "verificationCode" })
and login({ method: "verificationCode" })
Accompanying the verification code approaches above, the signup() and login() methods for Core JS now support the verificationCode
method.
login({ method: "totp" })
Accompanying the TOTP authenticator code approach above, the login() method for Core JS now supports the totp
method.
sendVerificationCode()
Added the sendVerificationCode() method to Core JS. This method allows a user to request an email or SMS with a single-use verification code. The verification code can be used with login({ method: "verificationCode" })
mentioned above.
updatePassword()
method
Added the updatePassword() method to Core JS. This method supersedes the resetPassword()
method, which is now an alias, and allows for updating a user's password with their reset link credentials or while the user is logged in.
Single Sign-On is now available for Apple on both web and mobile. For mobile applications it satisfies Apple's requirement to include Apple as an SSO option whenever any other providers are included.
Users can now sign in via Oauth 2.0 using Azure with single tenant. Previously, this was only possible for multi-tenant Azure instances.
Added an API endpoint for Update own password that allows a user to update their own password when logged in. If the user does not have a password yet (e.g. if they signed in with SSO), this endpoint creates their password.
Added an API endpoint for Search tenants that allows searching for tenants by name
, custom data
attributes, and/or tenantId
.
Added an API endpoint for Verify a phone number that allows a user to send a 6-digit verification code by SMS to the given phone number and then enter that 6-digit verification code to verify the phone number. Once a phone number is verified, it can be used for login or multi-factor authentication.
Added the ability to log in by receiving a 6-digit verification code by email. Users can receive their code and submit it to the verification code login endpoint to log in.
Multi-factor authentication (MFA) via TOTP (Time-based One-Time Password) / authenticator app is now available in alpha. This allows for MFA flows that use Google Authenticator, Authy, and other TOTP code-generating applications.
This feature is in closed alpha and will be in beta shortly, followed by general release.
As with SMS MFA, we will release SDK methods and integrate MFA into the toolkit in the coming weeks.
You can now disable all emails from Userfront, ensuring that there are no triggers that will generate an automated email from Userfront to your users. This feature will be added to the dashboard soon, and in the meantime you can contact us to set up this feature.
x-origin
headerPreviously, when making client-to-server requests from a mobile application or backend server in live mode, the request could include the x-application-id
header in place of the origin
header (which the browser sends). Now the request can additionally include either the x-origin
header or the x-application-id
header.
The chosen header should correspond to a live mode domain in order for the request to be considered live mode. For example:
{
"headers": {
"x-origin": "https://livedomain.com"
}
}
noResetEmail
The default behavior on Userfront is that when a user attempts to log in with a password but does not yet have a password set, Userfront sends the user a password reset email. This can happen with users who have previously signed in with SSO, for example.
With the the included noResetEmail: true
flag, Userfront does not send the user a password reset email if they do not already have a password, and instead returns an error message.
Multi-factor authentication (MFA) is officially live through the use of security codes sent by SMS.
We will release SDK methods and integrate MFA into the toolkit as well in the coming weeks.
Authenticator MFA is next.
We improved our internal rate limiting infrastructure to further prevent unwanted access attempts and to harden the service overall.
Browser storage for JWT access tokens is now customizable. See the MDN docs for more information about cookie attributes.
SameSite
Lax
Strict
, Lax
, None
Path
/custom
)Domain
?false
false
, true
Domain
explicitly will allow subdomains to read cookies.These options will be available in the dashboard shortly. If you need to adjust them in the meantime, please contact us.
You can now disable new user registration and allow only the users you add manually to sign in. This feature will be added to the dashboard soon, but in the meantime you can contact us to set up this feature.
Multi-factor authentication (MFA) is in production for alpha testing, with security codes sent by SMS.
Added search options, fixed some minor display bugs, and improved the documentation for user search. Added examples of advanced filtering with various combinations of and
and or
search queries.
The Generate Link, Invite User and Invite User to a role endpoints all generate email links with a set expiration by default:
Now you can also specify custom durations for each type of link, up to 1 week and down to 10 seconds, using the options.duration
parameter.
{
options: {
duration: "5 minutes"
}
}
By default, invite emails contain a login link that will log the user in directly. However, this flow does not ask the user to set a password right away. Now it is possible to use a password reset link in place of a login link in the invite email by using the options.type
parameter.
{
options: {
type: "reset"
}
}
Programmatically create, invalidate, and delete API keys: admin
, readonly
, and webhook
key types are supported. Rotate keys as needed to secure your application.
test
, dev
, and password
as passwords in test modeNow in test mode you can use test
, dev
, and password
when registering a user or changing their password. This allows for faster testing.
Previously, user registration by SSO would fire a user created
webhook with the user unconfirmed, followed closely by a user updated
webhook with the user confirmed. Now only the user created
webhook is fired, with the user already confirmed.
Simplified the process for generating certificates for live domains, and removed a bug that affected some subdomains when "include subdomains" was checked.
3rd party login with SAML is stable and in limited-party testing in advance of a public release.
Adding Oauth 2.0 login with Twitter, which is based on the Twitter 2 API (in beta). We are waiting for Twitter to implement some features such as profile lookup before we can publish Oauth 2.0 compliant login via Twitter.
Adding "Sign in with Apple" functionality, which is loosely based on Oauth 2.0 standard. Awaiting some confirmation from Apple regarding their long-term timeline before finalizing this implementation for all platforms.
Whenever a user is locked or unlocked, the User Updated Webhook will be sent.
Use a server-to-server API endpoint to generate link credentials (uuid
and token
) for use in custom login, welcome, and account verification emails.
noSignupEmail
Works the same as standard signup, but with the the included noSignupEmail: true
flag, Userfront does not send the new user an email. Combined with "Link generation without email" above, this allows you to create fully custom signup flows.
Filter users by the roles they have in a given tenant.
Updated code examples for client-to-server docs.
Added documentation for "passwordless" flows to give a clearer picture of all the options for signup and login.
Users can now present a valid JWT access token, existing password, and the new password to update their password directly from the client.
Updated the response format for newer link generation endpoints to better match other API endpoints.
Old format (deprecated):
{
Message: 'OK',
To: 'basic-24942@example.com'
MessageID: '12ac72f3-355f-4266-8c7d-05d0acdab703',
SubmittedAt: 2021-09-12T17:21:48.046Z,
}
Updated format:
{
message: 'OK',
result: {
to: 'basic-24942@example.com',
messageId: '12ac72f3-355f-4266-8c7d-05d0acdab703',
submittedAt: 2021-09-12T17:21:48.046Z
}
}
Allow search by users' custom data attributes via the user search endpoint.
httpOnly
option for refresh tokensAdd system and endpoints for creating and using refresh tokens in httpOnly
mode. These tokens cannot be read by client-side JavaScript and are thus not susceptible to XSS attacks. Usage of httpOnly
tokens requires a custom domain.
Added the ability to generate custom JWT access token formats (e.g. compact
, verbose
, OIDC
) by manuallys setting a value for the tenant. We will eventually add the ability to configure this directly from the dashboard.
Added an API endpoint and webhook to delete tenants programmatically.
Changed the key pair signing configuration from pkcs1
to pkcs8
as the former has compatibility issues with certain PHP libraries. All future keys will use the new format, and existing keys can be rotated to use the new format if needed.
Included example projects for setting up Userfront with Vue.js (custom forms) and Node.js authentication + access control.