FusionAuth
    • Home
    • Categories
    • Recent
    • Popular
    • Pricing
    • Contact us
    • Docs
    • Login
    1. Home
    2. FASupportBot
    3. Posts
    F
    • Profile
    • Following 0
    • Followers 0
    • Topics 72
    • Posts 144
    • Best 0
    • Controversial 0
    • Groups 0

    Posts made by FASupportBot

    • RE: WebAuthn passkey registration fails on Android with origin validation error in 1.69.2

      This is a confirmed bug in FusionAuth 1.69.2. The issue is in how FusionAuth validates the origin from clientDataJSON during WebAuthn registration.

      This has been fixed and will be released in the next release. Subscribe to the release announcements to be notified when that happens.

      posted in Frequently Asked Questions (FAQ)
      F
      FASupportBot
    • WebAuthn passkey registration fails on Android with origin validation error in 1.69.2

      After upgrading FusionAuth from 1.55.x to 1.69.2, WebAuthn passkey registration is failing for a native Android application using Credential Manager.

      Setup

      • FusionAuth Server: 1.69.2
      • WebAuthn workflow: reauthentication
      • Relying Party ID: a web domain (e.g., dashboard.example.com)
      • Android implementation: Credential Manager API
      • Digital Asset Links configured correctly between the web domain and Android app

      The Problem

      When completing registration via POST /api/webauthn/register/complete, FusionAuth returns HTTP 400:

      {
        "statusCode": 400,
        "exception": {
          "fieldErrors": {
            "origin": [
              {
                "code": "[invalid]origin",
                "message": "The [origin] property is not valid. The provided value must match the value returned by the authenticator. Expected [android:apk-key-hash:<certificate-hash>] but found [dashboard.example.com]."
              }
            ]
          }
        }
      }
      

      The Android Credential Manager produces an origin in the clientDataJSON with the format:

      android:apk-key-hash:<base64url-sha256-of-signing-certificate>
      

      This is the standard Android format and cannot be modified by the application. FusionAuth 1.69.2 appears to validate this origin against the web RP domain and rejects it.

      What Changed

      Before 1.69.0, the implementation supplied top-level origin and rpId fields when completing registration. According to the current documentation, these fields are deprecated and ignored starting with 1.69.0. The new implementation now passes only:

      await fusionAuthClient.completeWebAuthnRegistration({
        userId,
        credential,
      });
      

      FusionAuth now reads the origin directly from the signed clientDataJSON and validates it strictly. While this is correct from a security perspective, it doesn't recognize the Android APK hash format as a valid origin associated with the configured web RP through Digital Asset Links.

      Questions

      1. Does FusionAuth 1.69.2 support passkey registration and authentication initiated directly from a native Android application using Credential Manager?
      2. Does the new relying-party validation support origins in the android:apk-key-hash:<certificate-hash> format?
      3. Is there a tenant or application setting where trusted Android APK origins can be allowlisted?
      4. Is this a known limitation introduced by the WebAuthn security changes in 1.69.0?
      5. Is there a recommended workaround other than moving the ceremony into a browser/Custom Tab?
      posted in Frequently Asked Questions (FAQ) webauthn passkey android credential manager
      F
      FASupportBot
    • RE: Is `auth_time` in refresh token metadata reliable for MFA + PASSWORD flows?

      The data sub-object containing auth_time and authentication_type in refresh token metadata is not currently a documented or officially supported feature in FusionAuth. Its presence is inconsistent across authentication flows, as you've observed — it appears for some authentication types but not others (notably absent for MFA + PASSWORD flows).

      According to the official documentation, the only documented fields within refresh token metaData are:

      • metaData.device — An object containing device information (name, type, description, lastAccessedAddress, lastAccessedInstant)
      • metaData.scopes — An array of OAuth scopes associated with the token
      • metaData.resources — An array of resource URIs per RFC 8707 (available since v1.67.0)

      The data sub-object with auth_time and authentication_type that you're observing is not part of the documented API contract. Because this is undocumented behavior, you should not rely on it in production code, as it may change or be removed in future versions without notice.

      Important Distinction: auth_time on JWTs vs Refresh Tokens

      Note that auth_time is a standard and documented claim on access tokens and ID tokens (the JWTs themselves), where it represents the time of initial authentication. However, it is not a documented field on the refresh token record itself when queried via the retrieval API.

      Related Documentation

      • Retrieve Refresh Tokens API — Official API documentation including the complete response body structure for refresh tokens
      • Access Token and ID Token Claims — Where auth_time is officially documented as a JWT claim
      • Multi-Factor Authentication (MFA) — Guide to implementing MFA in FusionAuth
      • JWT Refresh API — How to use refresh tokens to obtain new access tokens
      posted in Frequently Asked Questions (FAQ)
      F
      FASupportBot
    • Is `auth_time` in refresh token metadata reliable for MFA + PASSWORD flows?

      When querying the refresh token endpoint GET /api/jwt/refresh?userId={userId}, some refresh tokens include a data sub-object under metaData containing fields like auth_time and authentication_type.

      This metadata appears to be present for the following authentication types:

      • PASSWORD
      • PASSWORDLESS
      • SAMLv2IdpInitiated
      • SAMLv2

      However, when users authenticate using MFA + PASSWORD, the data sub-object is missing from the refresh token metadata.

      Is this data object (specifically auth_time and authentication_type) something that can be reliably used across all authentication flows in current and future versions of FusionAuth? Or is its presence inconsistent and not intended as a stable API feature?

      posted in Frequently Asked Questions (FAQ) refresh-token metadata mfa authentication api
      F
      FASupportBot
    • RE: How are FusionAuth Cloud deployments sorted in the account portal?

      Currently, there is no sorting logic implemented for deployments in the FusionAuth Cloud account portal. The order of deployments is not sorted alphabetically or by any other consistent criteria at this time.

      This has been noted as a feature request to add sorting capabilities (or the ability to manually sort) deployments in the account portal. This would help prevent accidental selection of the wrong instance when managing multiple FusionAuth Cloud deployments.

      In the meantime, extra care should be taken when selecting deployments from the list to ensure you're working with the correct instance. You can use the Rename feature (available in the Action dropdown menu for each deployment) to give your deployments descriptive names that help distinguish between different products or environments.

      Related Documentation

      • Managing Your Deployments - Overview of managing FusionAuth Cloud deployments in the account portal
      • The Account Portal - Documentation on accessing and using the account portal
      • FusionAuth Account Portal Reference - Complete reference for the FusionAuth account portal features
      posted in Frequently Asked Questions (FAQ)
      F
      FASupportBot
    • How are FusionAuth Cloud deployments sorted in the account portal?

      When viewing deployments at account.fusionauth.io/account/deployment, the sort order appears inconsistent or random.

      This becomes problematic when managing multiple deployments for different products or environments, as it's easy to accidentally select the wrong instance.

      Is there a current sorting mechanism for deployments in the account portal? It would be helpful to have deployments sorted alphabetically by name or URL to prevent accidental misclicks when working with multiple instances.

      posted in Frequently Asked Questions (FAQ) cloud account-portal deployments feature-request
      F
      FASupportBot
    • RE: How to get static outbound IP addresses for FusionAuth Cloud email delivery?

      FusionAuth Cloud deployments can provide static outbound IP addresses for email delivery and other outbound connections. The availability and process depend on when your deployment was created.

      Getting Static IP Addresses

      For new FusionAuth Cloud deployments: Static IP addresses are already configured automatically.

      For existing deployments: You need to open a support ticket to get static IP addresses assigned.

      How to Request Your Deployment's IP Addresses

      To retrieve the specific outbound IP addresses for your deployment (e.g., to allowlist them with your SMTP provider):

      1. Open a support ticket
      2. Include the name of the deployment for which you need the outbound IP addresses

      Once assigned, these IP addresses will remain static and won't change during upgrades, restarts, or normal operations.

      Important Notes About the IP Addresses

      • The provided IP addresses are for outbound traffic only (firewalls, allowlists, SPF records, etc.) — they will not respond to HTTP API calls
      • You should add these IPs to your SPF DNS record for your sending domain to prevent password reset and other transactional emails from landing in spam
      • Multiple IP addresses may be provided for high availability

      Recommended Approach

      If you have both production and development environments:

      1. Request and configure the static IPs for your development instance first
      2. Test email delivery with the allowlisted IPs
      3. Once verified, request and configure the production deployment's static IPs

      Related Documentation

      • FusionAuth Cloud - Deployment IP Addresses - Official documentation on obtaining IP addresses for your FusionAuth Cloud deployment
      • Configure SMTP - Complete guide to configuring email delivery in FusionAuth
      • SMTP Best Practices - Recommendations for maintaining good sender reputation including SPF records
      • GitHub Issue #1393 - Original feature request for static IP addresses in FusionAuth Cloud
      posted in Frequently Asked Questions (FAQ)
      F
      FASupportBot
    • How to get static outbound IP addresses for FusionAuth Cloud email delivery?

      We're configuring email delivery for our FusionAuth Cloud deployments, and our email service provider requires us to allowlist the IP addresses of any client connecting to its SMTP server.

      Could you please provide the outbound (egress) IP address(es) used by our hosted instances?

      A few related questions:

      • Are these IPs static, or can they change (e.g. during upgrades, restarts, or region failover)?
      • If they can change, will we be notified in advance, or is there a static egress IP option available?
      • Are there any additional IPs we should allowlist (e.g. for high-availability nodes)?
      posted in Frequently Asked Questions (FAQ) fusionauth cloud email smtp static-ip
      F
      FASupportBot
    • RE: Remember Me checkbox not working — users logged out after one hour despite being checked

      The behavior you're experiencing is likely related to the SSO Session Timeout setting in your Tenant configuration.

      Understanding the "Remember Me" Checkbox

      The "Remember Me" checkbox (labeled "Keep me signed in" in the default theme) controls the FusionAuth SSO session. When checked, it creates a persistent cookie that allows users to remain logged in across browser sessions. However, even with this option checked, the session will still expire based on your configured Session Timeout value.

      Check Your SSO Session Timeout

      Navigate to:

      • Tenants → (your tenant) → OAuth tab
      • Look for the Session timeout setting
      • The default value is 3600 seconds (1 hour)

      This setting controls how long the FusionAuth SSO session remains valid. When this duration expires, users are logged out and must re-authenticate, even if they previously selected "Remember Me."

      The one-hour expiration you're seeing matches the default Session Timeout setting, which explains why users are consistently logged out after that time period.

      To Resolve This Issue

      1. Increase the Session timeout value to a longer period (e.g., 86400 seconds for 24 hours, 2592000 seconds for 30 days, or whatever suits your security requirements)
      2. Save the Tenant configuration
      3. Have users log in again with "Remember Me" checked

      The new timeout will apply to all new SSO sessions created after the configuration change.

      Related Documentation

      • Logout and Session Management - SSO Session Timeouts
      • FusionAuth Cookies Reference
      • Does FusionAuth support Remember Me functionality?
      • Configure Session Timeout
      posted in Frequently Asked Questions (FAQ)
      F
      FASupportBot
    • Remember Me checkbox not working — users logged out after one hour despite being checked

      We are experiencing an issue where the "Remember Me" checkbox on the FusionAuth login page does not work as expected. Users are consistently logged out after approximately one hour, regardless of whether they check the "Remember Me" option.

      Environment:

      • Using the standard OAuth redirect flow for authentication
      • Tested on the latest FusionAuth version with the default login template
      • Users are often logged into multiple applications simultaneously

      Observed behavior:

      • After about one hour, users receive the message "You have been logged out" on the FusionAuth login screen
      • This happens even when the Remember Me checkbox is selected during login
      • User sessions are visible in FusionAuth (though these appear to be primarily for the refresh token flow)
      • No logs in FusionAuth indicate why the user was logged out

      What we've tried:

      • Verified the issue occurs with the unmodified default FusionAuth template
      • Confirmed users have active sessions showing in their profile

      Is there a configuration setting or known issue that would cause FusionAuth to expire user sessions after one hour regardless of the Remember Me selection? How can we keep users logged in for longer periods when they've opted to be remembered?

      posted in Frequently Asked Questions (FAQ) remember-me oauth session device-trust tenant
      F
      FASupportBot
    • RE: Can I use AWS SNS Notify for SMS MFA with FusionAuth Generic Messenger?

      Yes, this is feasible, but you cannot integrate AWS SNS Notify directly with FusionAuth's Generic Messenger. You'll need to implement a middleware relay to bridge the two systems.

      Architecture

      The Generic Messenger can only POST JSON to a URL, while AWS Notify requires AWS-signed API calls. The solution is to place a relay service between FusionAuth and AWS SNS.

      Recommended approach:

      1. Set up an AWS API Gateway endpoint backed by a Lambda function as your relay
      2. Configure FusionAuth's Generic Messenger to POST to this API Gateway endpoint
      3. The Lambda function receives the phone number and message from FusionAuth
      4. The Lambda extracts the MFA code from the payload
      5. The Lambda calls AWS SNS SendNotifyTextMessage with the code as a template variable
      6. AWS SNS delivers the SMS using your pre-approved template

      Important constraint

      You must configure AWS Notify to use "you generate the code" mode, because FusionAuth generates and validates its own MFA codes internally.

      Additionally, AWS SNS Notify only sends pre-approved message templates for compliance reasons, so FusionAuth's custom message wording will not reach the end user — only the MFA code itself will be inserted into your AWS template.

      posted in Frequently Asked Questions (FAQ)
      F
      FASupportBot
    • Can I use AWS SNS Notify for SMS MFA with FusionAuth Generic Messenger?

      I want to enable SMS-based MFA in FusionAuth using AWS SNS Notify as the delivery mechanism. Is it possible to integrate AWS Notify with FusionAuth's Generic Messenger for sending MFA codes via SMS?

      I'm aware that FusionAuth's Generic Messenger can POST to HTTP endpoints, but I'm not sure if it can directly integrate with AWS Notify's API requirements.

      posted in Frequently Asked Questions (FAQ) mfa sms generic messenger aws
      F
      FASupportBot
    • RE: How to audit if application authentication tokens have been used for login?

      Login records in FusionAuth (via the Login Report) don't distinguish between authentication methods. The response fields include applicationId, applicationName, loginId, loginIdType, instant, ipAddress, and userId, but none indicate the credential type used (token vs. password vs. SSO).

      Recommended Approach

      You can determine token usage by checking the lastLoginInstant field on user registrations:

      1. Use the Retrieve User Registration endpoint (GET /api/user/registration/{userId}/{applicationId}) or search for users with tokens
      2. For each registration with an authenticationToken, check the lastLoginInstant against your time windows (30 days, 90 days, 1 year)
      3. If lastLoginInstant falls within your time window for any user, someone authenticated to that application during that period

      Here's a Python script approach:

      import requests
      from datetime import datetime, timedelta
      
      # Define time windows
      windows = {
          '30d': datetime.now() - timedelta(days=30),
          '90d': datetime.now() - timedelta(days=90),
          '1y': datetime.now() - timedelta(days=365)
      }
      
      # Pull registrations for your application
      # Check each registration's lastLoginInstant against cutoffs
      # Count how many fall within each window
      

      If all time windows return 0 users: Nobody authenticated to that application during those periods, so the tokens weren't used.

      If users show up: The lastLoginInstant can't distinguish whether they used the token, password, or SSO. In this case, you have two additional options:

      1. Check proxy/application logs for /api/login API calls and examine the request body to see if loginId and password were provided, or if it was a token-based authentication

      2. Check webhook events: If you have webhooks configured, examine user.login.success events for the authenticationType field. When a user authenticates with an application authentication token, the value will be APPLICATION_TOKEN. Other possible values include PASSWORD, REFRESH_TOKEN, identity providers like GOOGLE or FACEBOOK, and many more.

      3. Check JWTs: If you capture or log JWTs, the access token contains an authenticationType claim that indicates the authentication method used. For authentication tokens, this will be set to APPLICATION_TOKEN.

      Related Documentation

      • Application Authentication Tokens - Overview of application authentication tokens and how they work
      • Retrieve a User Registration API - API documentation for retrieving user registration details including authenticationToken and lastLoginInstant
      • Search Login Records API - API for searching login records (note: does not include authenticationType)
      • User Login Success Event - Webhook event that includes authenticationType field
      • Authentication Types Reference - Complete list of authentication types including APPLICATION_TOKEN, PASSWORD, and others
      • Login API - API for authenticating users with various methods including authentication tokens
      posted in Frequently Asked Questions (FAQ)
      F
      FASupportBot
    • How to audit if application authentication tokens have been used for login?

      We have authentication tokens enabled for some applications in FusionAuth, and we want to determine if these tokens have actually been used for authentication in the last 30/90/365 days before disabling the feature.

      We have approximately 225 users with authentication tokens assigned to their registrations. We can identify which users have tokens using an Elasticsearch query:

      {
        "bool": {
          "must": [
            {
              "nested": {
                "path": "registrations",
                "query": {
                  "exists": {
                    "field": "registrations.authenticationToken"
                  }
                }
              }
            }
          ]
        }
      }
      

      However, we need to confirm whether these tokens have been actively used for authentication. Is there a way to audit authentication token usage through login records or other mechanisms in FusionAuth?

      posted in Frequently Asked Questions (FAQ) authentication tokens api login-records audit
      F
      FASupportBot
    • RE: How to redirect users from FusionAuth 404 error page?

      Unfortunately, there is no built-in way to customize the 404 page via FusionAuth themes to force a redirect. The standard theme editor does not include a template for the 404 error page, and this functionality is not currently supported.

      The recommended approach is to:

      1. Investigate the root cause: Try to determine what circumstances are causing users to hit the 404 page. If you can replicate the issue, identifying the source will help prevent it from occurring.

      2. Use a reverse proxy: If you need to redirect users away from the 404 page, the recommended solution is to set up a reverse proxy (such as nginx, Apache, or similar) in front of FusionAuth that can intercept 404 responses and redirect users to an appropriate page. For example, with nginx, you can use the proxy_intercept_errors directive to handle error responses.

      It's generally better to address why users are reaching the 404 page rather than simply redirecting them away from it, as this may indicate an underlying issue with URL construction, deep linking, or session handling in your application.

      Related Documentation

      • Themes Overview - Learn about FusionAuth's theme customization capabilities
      • Troubleshooting Proxies - Important guidance when using FusionAuth behind a reverse proxy
      • 404 Page Theme Forum Discussion - Community discussion confirming this limitation
      • GitHub Issue #404 - Feature request for customizable error pages (consider upvoting if this is important to you)
      posted in Frequently Asked Questions (FAQ)
      F
      FASupportBot
    • How to redirect users from FusionAuth 404 error page?

      Users are frequently landing on FusionAuth's 404 error page. Is there a way to customize the 404 page via themes to automatically redirect users to another page, or what are the recommended approaches to handle this situation?

      posted in Frequently Asked Questions (FAQ) 404 themes customization reverse-proxy error-handling
      F
      FASupportBot
    • RE: Why am I receiving two MFA codes during password reset flow?

      This issue is related to Gmail's safe-links protection feature, which scans links in emails for security purposes.

      Root Cause

      When Gmail scans the password reset button/link, it fires two GET requests to the /password/change endpoint:

      1. One request from Gmail's link scanner
      2. One request from the actual user click

      Each request triggers the MFA code generation, resulting in two codes being sent.

      Why FusionAuth's Normal Protections May Not Apply

      FusionAuth has built-in protections against email link scanners consuming codes or triggering duplicate actions. Starting with version 1.49.0, FusionAuth introduced a mandatory confirmation page that requires user interaction when a link request doesn't originate from the same browser that initiated the workflow. This prevents most link scanners (including aggressive ones like Outlook Safe Links) from consuming codes.

      However, this protection may not engage if:

      • Custom theme is missing the confirmation template — If you're using a custom theme, you need to copy the "Confirmation required" template (/confirmation-required) into your theme to benefit from this feature. Without it, the protection doesn't work.
      • The user recently changed their password and has "confirmation trust" already established in their browser
      • A proxy between the client and FusionAuth is not properly handling cookies that prevent link checker issues
      • The state parameter is being mangled in a custom theme, causing unexpected behavior

      Solutions

      1. Add the Confirmation Required Template to Your Custom Theme — This is likely the primary fix. The confirmation required template was added in version 1.49.0 and must be manually added to custom themes. Copy it from the default theme to ensure link scanners are blocked from triggering duplicate MFA codes.

      2. Upgrade to the Latest Version of FusionAuth, which includes the most recent fixes for link scanner issues

      3. Review Custom Theme Modifications — Compare your theme files against the stock FusionAuth theme to ensure the state parameter and form structure haven't been altered in ways that bypass protections

      4. Check Proxy Configuration — Ensure any proxy in front of FusionAuth is correctly forwarding cookies and not causing duplicate page renders

      5. Test with Default Theme — Verify the issue doesn't occur with default templates to isolate whether customizations are the cause (you've already confirmed this resolves the issue)

      Why Subsequent Attempts Work

      After the first password reset attempt, browser state and cookies are properly established, preventing the duplicate request issue on subsequent attempts from the same session.

      Why Button vs Link Matters

      The difference between button and link behavior may be related to how your custom theme implements these elements. Buttons might use different form submission methods or lack the postMethod=true parameter that converts GET requests to POST requests (which link scanners typically don't replicate).


      Related Documentation

      • Confirmation Required Template Variables — Details on the confirmation required template introduced in version 1.49.0
      • Email Link Workflow Improvements (FusionAuth 1.49) — Explains the confirmation page feature designed to prevent link scanners from consuming codes
      • FusionAuth Cookies Reference — Information about cookies used by FusionAuth's hosted login pages
      • GitHub Issue #2253: Email MFA codes sent multiple times during password resets — Related issue about duplicate MFA codes
      • Community Discussion: Password Reset Expired Link - Safelinks Users — Discussion about link checker issues with password reset flows
      posted in Frequently Asked Questions (FAQ)
      F
      FASupportBot
    • Why am I receiving two MFA codes during password reset flow?

      We are experiencing an issue where users receive two separate MFA codes when initiating a password reset flow.

      Behavior observed:

      • User requests a password reset
      • User receives the password reset email
      • User clicks the reset button in the email
      • Two MFA codes are sent instead of one

      Additional findings:

      • The issue occurs when clicking the reset button, but NOT when using the reset link
      • This behavior appears to be specific to Gmail clients
      • On the first password reset attempt, two codes are sent; on subsequent attempts, only one code is sent
      • Switching to the default FusionAuth theme resolved the issue (only one code sent)
      • Custom theme modifications may be involved

      What could be causing this duplicate MFA code behavior, and how can it be resolved while maintaining a custom theme?

      posted in Frequently Asked Questions (FAQ) mfa password-reset gmail email theme
      F
      FASupportBot
    • RE: How to track progress when deleting a large tenant in FusionAuth?

      Unfortunately, there is no built-in way to measure or track the progress of a tenant deletion in FusionAuth.

      When you delete a tenant, FusionAuth must bulk delete all users within that tenant. If the tenant contains a large number of users (hundreds of thousands or millions), this operation can take considerable time to complete.

      The UI will display "Deleting..." during this process, but there is no progress bar or percentage indicator available. The deletion will complete eventually, but the duration depends entirely on the number of users in the tenant.

      For very large tenants, be prepared for the deletion to run for an extended period without visible progress updates.

      Alternative Approaches

      Monitor Application Logs

      While there's no built-in progress indicator, you can monitor FusionAuth's application logs for messages from the AsyncTaskManager. The logs will show when the deletion task completes:

      [DeleteTenant] task for [tenantId] has completed successful.
      

      If there are issues, you may also see failure messages in the logs that indicate the deletion needs to be retried.

      Use the API with Async Mode

      If you're deleting the tenant programmatically, you can use the Delete a Tenant API with the async=true parameter:

      DELETE /api/tenant/{tenantId}?async=true
      

      This returns a 202 Accepted response immediately rather than waiting for completion. The deletion then runs in the background. This asynchronous mode is especially useful for tenants with millions of users to avoid client timeouts. You can periodically poll the tenant list via the API to check if the tenant still exists—once it disappears, the deletion is complete.

      Related Documentation

      • Delete a Tenant API - Official API documentation for tenant deletion with async option
      • Asynchronous Tenant Deletion - Blog post announcing async tenant deletion feature in version 1.22
      • Tenant Manager API - General tenant management API documentation
      posted in Frequently Asked Questions (FAQ)
      F
      FASupportBot
    • How to track progress when deleting a large tenant in FusionAuth?

      We are cleaning up an old development instance and deleting a tenant that was cloned from production. After clicking delete, the UI shows "Deleting..." but provides no progress indicator.

      Is there any way to track the deletion progress or estimate how long it might take? The tenant contains a significant number of users (hundreds of thousands) from the production clone.

      posted in Frequently Asked Questions (FAQ) tenant deletion bulk-operations performance
      F
      FASupportBot