<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Topics tagged with login]]></title><description><![CDATA[A list of topics that have been tagged with login]]></description><link>https://fusionauth.io/community/forum/tags/login</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 19:50:53 GMT</lastBuildDate><atom:link href="https://fusionauth.io/community/forum/tags/login.rss" rel="self" type="application/rss+xml"/><pubDate>Invalid Date</pubDate><ttl>60</ttl><item><title><![CDATA[Disable login to an application without deleting it]]></title><description><![CDATA[<p dir="auto">You have a couple of options.</p>

If you use the hosted login pages/authorization code grant, disabling all grants in the application settings page will prevent people from logging in.
If you use the login API and have customer-based API keys, you could turn on the 'require API key for login API' and then disable the customer's API key.
If you have the Enterprise plan, you could set up an <a href="https://fusionauth.io/docs/operate/secure/advanced-threat-detection#ip-access-control-lists" rel="nofollow ugc">IP ACL</a> for a unroutable IP range.

<p dir="auto">However, the easiest way to make sure an application cannot be logged into is to deactivate the application.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/3135/disable-login-to-an-application-without-deleting-it</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/3135/disable-login-to-an-application-without-deleting-it</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Collect additional attributes at login after a user has been created and registered]]></title><description><![CDATA[<p dir="auto">Beginning in version 1.65.0, FusionAuth offers Complete Registration. <a href="https://fusionauth.io/docs/lifecycle/register-users/complete-registration" rel="nofollow ugc">Full docs here</a>.</p>
<p dir="auto">How this would work:</p>

enable a registration form for the application your users are logging into
select certain attributes as required. If you are using a basic form, you could select 'birth date'. If you are using an advanced form, you can select whatever profile attributes you need
set the Registration mode to Complete registration. This setting means that users cannot self-register, but can complete missing information from an existing registration.
save the application

<p dir="auto">Now, your admin user can create a user with a minimal amount of data (perhaps just an email address).</p>
<p dir="auto">The user will, at first login, be prompted to fill out their profile data, including all fields you've marked required.</p>
<p dir="auto">This is not full progressive registration, but can be useful in certain circumstances.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/3130/collect-additional-attributes-at-login-after-a-user-has-been-created-and-registered</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/3130/collect-additional-attributes-at-login-after-a-user-has-been-created-and-registered</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Application is blank on the login records]]></title><description><![CDATA[<p dir="auto">There are a couple different scenarios where a login record could have a blank application Id. Usually it is #1 or #2. It occurs in scenarios where the user can have a JWT/access token that does not have the application Id in it.</p>

If a user is not registered for the Application they are logging into
FusionAuth makes a login record when a user is created since FA makes a JWT upon user creation
If you use the Login API, you can log in without an App ID because you don't have to provide an application on the API call.

]]></description><link>https://fusionauth.io/community/forum/topic/3104/application-is-blank-on-the-login-records</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/3104/application-is-blank-on-the-login-records</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[How to Authenticate API Clients and End Users in the Same FusionAuth Tenant Using Entities]]></title><description><![CDATA[<p dir="auto">Yes, you can mix API clients and end-user logins within the same tenant. Tenant-level controls such as MFA do not prevent this when the authentication flows are properly separated.</p>
<p dir="auto"><strong>Recommended Approach: Use Entities for API Clients</strong></p>
<p dir="auto">The most common and recommended pattern is to use Entities for API authentication:</p>

End users authenticate using the Authorization Code grant, which can enforce MFA and other user-facing security requirements.
API clients authenticate using the Client Credentials grant via Entities.
Because these are different OAuth grants and flows, tenant-level requirements like MFA apply to users but do not apply to API clients using client credentials.

<p dir="auto">This allows both authentication types to coexist cleanly within the same tenant while maintaining appropriate security boundaries.</p>
<p dir="auto"><strong>Cost and Licensing</strong></p>
<p dir="auto">There are no additional licensing or cost implications for using this approach:</p>

Entities and the Client Credentials flow are included in FusionAuth plans.
API clients authenticated via Entities do not count as end users for MAU-based billing.

<p dir="auto"><strong>Additional Resources</strong></p>
<p dir="auto">These resources provide detailed guidance and examples:</p>

<a href="https://fusionauth.io/docs/extend/examples/api-gateways/api-authorization" rel="nofollow ugc">API Authorization with FusionAuth</a>
<a href="https://fusionauth.io/docs/get-started/core-concepts/entity-management" rel="nofollow ugc">Entity Management Concepts</a>
<a href="https://youtu.be/pJIzYLSTrMM?feature=shared" rel="nofollow ugc">Using Entities for API Authorization (Video)</a>

<p dir="auto">This setup is widely used and should cover your use case well.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/3080/how-to-authenticate-api-clients-and-end-users-in-the-same-fusionauth-tenant-using-entities</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/3080/how-to-authenticate-api-clients-and-end-users-in-the-same-fusionauth-tenant-using-entities</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Can I offer &quot;login with yahoo&quot; using FusionAuth?]]></title><description><![CDATA[<p dir="auto">Yes. You can use FusionAuth's <a href="https://fusionauth.io/docs/lifecycle/authenticate-users/identity-providers/overview-oidc" rel="nofollow ugc">OpenID Connect Identity Provider</a>.</p>
<p dir="auto">I did this a few weeks ago, so am writing these instructions from memory.</p>
<p dir="auto">Prerequisites:</p>

A yahoo account
A running FusionAuth instance (localhost is fine)

<p dir="auto">Steps:</p>

Go to the <a href="https://developer.yahoo.com/sign-in-with-yahoo/#step-one" rel="nofollow ugc">Yahoo! developer network and create an app</a>.
The redirect URI for Yahoo is https://&lt;your instance&gt;/oauth2/callback
Save off the provided Client ID (Consumer Key) and Client Secret (Consumer Secret).
Then go to FusionAuth and create an OpenID Connect Identity Provider: &lt;your instance&gt;/admin/identity-provider/add/OpenIDConnect
Put the Client ID (Consumer Key) and Client Secret (Consumer Secret) into the Client Id and Client secret fields, respectively.
Uncheck Discover Endpoints. Manually configure the endpoints:

Set the Authorization Endpoint to https://api.login.yahoo.com/oauth2/request_auth
Set the Token Endpoint to https://api.login.yahoo.com/oauth2/get_token
Set the Userinfo Endpoint to  https://api.login.yahoo.com/openid/v1/userinfo


Set the Scope to openid email profile and any other scopes you might need. (I was unable to find an authoritative list, but <a href="https://stackoverflow.com/questions/59587534/how-to-enable-mail-r-scope-for-yahoo-developer-account" rel="nofollow ugc">here's info about the mail scopes</a>.)
Update the Button text and Button image as needed.
Enable it for applications as needed.
Save the Identity Provider.

]]></description><link>https://fusionauth.io/community/forum/topic/3013/can-i-offer-login-with-yahoo-using-fusionauth</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/3013/can-i-offer-login-with-yahoo-using-fusionauth</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Best Practices for Securing Partner APIs with FusionAuth]]></title><description><![CDATA[<p dir="auto">Yes—using FusionAuth access tokens to secure partner-facing APIs is a solid approach. The key is ensuring the tokens contain the right claims to enforce proper authorization for your endpoints.</p>
<p dir="auto">Separating partners into a different tenant or application can improve security and simplify management. Different tenants fully isolate users and tokens, but would require duplicating application configs. Alternatively, you could keep partners in the same tenant and distinguish them via roles, claims, or separate applications.</p>
<p dir="auto">If partners are accessing APIs server-to-server, the client credentials grant (Entities in FusionAuth) is the correct choice. Be sure to carefully scope each partner’s access to avoid over-permissioning.</p>
<p dir="auto">More on these topics:</p>

<a href="https://fusionauth.io/docs/extend/examples/api-gateways/api-authorization" rel="nofollow ugc">API Authorization with FusionAuth</a>
<a href="https://fusionauth.io/docs/get-started/core-concepts/tenants" rel="nofollow ugc">Tenants Overview</a>
<a href="https://fusionauth.io/articles/tokens/jwt-components-explained" rel="nofollow ugc">JWT Anatomy</a>
<a href="https://fusionauth.io/articles/identity-basics/authorization-models" rel="nofollow ugc">Authorization Models</a>

]]></description><link>https://fusionauth.io/community/forum/topic/3008/best-practices-for-securing-partner-apis-with-fusionauth</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/3008/best-practices-for-securing-partner-apis-with-fusionauth</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Maintaining OAuth&#x2F;PKCE Flow During Email Verification in FusionAuth Mobile Apps]]></title><description><![CDATA[<p dir="auto">Good question—it’s a common challenge.</p>
<p dir="auto">By default, the email verification flow breaks the OAuth/PKCE context because the user leaves the registration page to check their email and clicks a verification link. FusionAuth can’t continue the OAuth flow automatically from that email link, which is why your hard-coded redirect URI fails without the required OAuth code.</p>
<p dir="auto">A better solution is to switch your email verification strategy from <strong>Clickable Link</strong> to <strong>Form Field</strong> (under Tenant → Email → Email Verification → Verification Strategy). With this approach, users stay on the original registration page, enter the verification code from their email, and the OAuth/PKCE flow remains intact—including the authorization code. This enables seamless redirecting back into your app after verification.</p>
<p dir="auto">If you’re creating and registering users for an application at the same time, remember to also check the app-level registration verification settings under:<br />
<strong>FusionAuth Admin UI → Applications → Edit Application → Registration tab</strong>.</p>
<p dir="auto">More details are in the docs: <a href="https://fusionauth.io/docs/lifecycle/manage-users/verification/registration-email-verification" rel="nofollow ugc">Registration Email Verification</a></p>
]]></description><link>https://fusionauth.io/community/forum/topic/3003/maintaining-oauth-pkce-flow-during-email-verification-in-fusionauth-mobile-apps</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/3003/maintaining-oauth-pkce-flow-during-email-verification-in-fusionauth-mobile-apps</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Implementing Passwordless Registration with Magic Links in FusionAuth: Limitations and Workarounds]]></title><description><![CDATA[<p dir="auto">Your understanding is correct: in FusionAuth, a user account <strong>must have a password</strong> to exist, and the platform requires a password when creating a user. This means there’s currently <strong>no way to completely eliminate the password field</strong> from a registration form using Custom Registration Forms, nor is there a supported method to bypass the password requirement entirely.</p>
<p dir="auto">However, there’s a <strong>workaround</strong> if you’d like to simulate a passwordless experience. Using the <strong>Advanced Theme Editor</strong>, you can hide and automatically populate the password field on the registration page via JavaScript. This way, users won’t see or interact with the password field, but FusionAuth still receives a valid (though randomly generated) password value behind the scenes. To users, the experience feels passwordless, even though a hidden dummy password exists for each account.</p>
<p dir="auto">More details about customizing the registration page can be found here:<br />
<a href="https://fusionauth.io/docs/customize/look-and-feel/advanced-theme-editor" rel="nofollow ugc">Advanced Theme Editor Documentation</a></p>
]]></description><link>https://fusionauth.io/community/forum/topic/2986/implementing-passwordless-registration-with-magic-links-in-fusionauth-limitations-and-workarounds</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2986/implementing-passwordless-registration-with-magic-links-in-fusionauth-limitations-and-workarounds</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Managing User Synchronization and ID Consistency with FusionAuth Generic Connectors]]></title><description><![CDATA[<p dir="auto">There isn’t a way to stop FusionAuth from <strong>synchronizing the user object</strong> when using a generic connector. Even when a third-party system is the “system of record,” FusionAuth still requires a <strong>local user record</strong> to support its internal workflows and features. If you choose <strong>not to migrate users</strong> into FusionAuth, your external system must also provide <strong>application registrations</strong> on the returned user object to ensure proper integration.</p>
<p dir="auto">Regarding your first question, there’s no way to prevent an error if the <strong><a href="http://user.id" rel="nofollow ugc">user.id</a> changes</strong> between logins. The <strong>id field</strong> in the user object should remain consistent across logins. Changing it will inherently cause issues with how FusionAuth matches and manages user records.</p>
<p dir="auto">For more detail, see the documentation here:<br />
<a href="https://fusionauth.io/docs/lifecycle/migrate-users/connectors/generic-connector#using-the-generic-connector-as-the-system-of-record" rel="nofollow ugc">Using the Generic Connector as the System of Record</a></p>
]]></description><link>https://fusionauth.io/community/forum/topic/2981/managing-user-synchronization-and-id-consistency-with-fusionauth-generic-connectors</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2981/managing-user-synchronization-and-id-consistency-with-fusionauth-generic-connectors</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Customizing Error Messages for FusionAuth Hosted Login Pages with Generic Connectors]]></title><description><![CDATA[<p dir="auto">At this time, the <strong>generic connector</strong> in FusionAuth only supports a <strong>single error response type</strong>:</p>

The connector returns a <strong>404 Not Found</strong> in any failure scenario, whether:

The user does not exist in the external system, or
The user exists but provides <strong>invalid credentials</strong>.



<p dir="auto">This design is intentional and exists to <strong>prevent user enumeration attacks</strong> by not revealing which part of the login process failed.</p>
<p dir="auto">Because of this <strong>security restriction</strong>:</p>

You <strong>cannot display different error messages</strong> on the hosted login page for different connector failure scenarios.
There’s no way to <strong>pass additional custom data</strong> or error context from the generic connector to the hosted templates for display purposes.

<p dir="auto">You can read more details here:<br />
<a href="https://fusionauth.io/docs/lifecycle/migrate-users/connectors/generic-connector#response" rel="nofollow ugc">Generic Connector - Response</a></p>
]]></description><link>https://fusionauth.io/community/forum/topic/2980/customizing-error-messages-for-fusionauth-hosted-login-pages-with-generic-connectors</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2980/customizing-error-messages-for-fusionauth-hosted-login-pages-with-generic-connectors</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[How to Restrict FusionAuth Admin Panel Access by IP Address]]></title><description><![CDATA[<p dir="auto">Here’s how you can approach securing access to your FusionAuth instance:</p>

<strong>IP Access Control Lists (ACL)</strong>:<br />
You can define IP Access Control Lists in FusionAuth by navigating to <strong>Settings &gt; IP Access Control</strong> in the Admin UI.

Click the + icon to create a new ACL list.
Add entries for each IP address or range you want to allow or block.
Assign these ACLs to specific tenants or API keys as needed.


<strong>Important Note</strong>:<br />
IP ACLs restrict access to endpoints like <strong>/oauth2/</strong>, <strong>/account/</strong>, <strong>/email/</strong>, <strong>/password/</strong>, <strong>/registration/</strong>, and other user-accessible pages. However, <strong>they do not restrict access to the FusionAuth Admin UI</strong> unless the Admin UI is accessed via SSO.<br />
Documentation: <a href="https://fusionauth.io/docs/apis/ip-acl#overview" rel="nofollow ugc">IP ACL API Overview</a>
<strong>Secure the Admin UI</strong>:<br />
Since IP ACLs do not directly secure the Admin UI, consider the following options:

<strong>Use a Trusted Proxy</strong>:<br />
Place a trusted proxy at the edge of your network to filter incoming traffic before it reaches FusionAuth. The proxy can enforce IP-based restrictions or other security rules. In FusionAuth, configure your proxy under <strong>System &gt; Networking</strong>, where you can specify the proxy’s IP address. If a request doesn’t go through the trusted proxy, FusionAuth will deny access.<br />
Documentation: <a href="https://fusionauth.io/docs/operate/secure-and-monitor/networking" rel="nofollow ugc">FusionAuth Networking</a>
<strong>Login Lambda for Additional Validation</strong>:<br />
Implement a Login Lambda to validate login attempts further. This Lambda allows you to execute custom code during login, such as checking the origin IP or other request details to block unauthorized attempts.<br />
Documentation: <a href="https://fusionauth.io/docs/extend/code/lambdas/" rel="nofollow ugc">Login Lambdas</a>


<strong>Recommended Next Steps</strong>:

Configure IP ACLs for your tenants and API keys to secure application-level access.
Implement a trusted proxy to filter admin panel access based on source IP.
Use a Login Lambda for additional request-level security, if needed.



<p dir="auto">By combining these approaches, you can enhance the security of your FusionAuth deployment and mitigate unauthorized access.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/2974/how-to-restrict-fusionauth-admin-panel-access-by-ip-address</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2974/how-to-restrict-fusionauth-admin-panel-access-by-ip-address</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[How to Create a JWT Populate Lambda in FusionAuth]]></title><description><![CDATA[<p dir="auto">The 11 Lambdas you see are the default ones included with FusionAuth. To create a <strong>JWT Populate</strong> Lambda, follow these steps:</p>

Navigate to <strong>Settings &gt; Lambda</strong> in the FusionAuth Admin UI.
Click the green <strong>+</strong> button in the top right to create a new Lambda.
In the "Type" dropdown, select <strong>JWT Populate</strong>.
Configure your Lambda logic as needed.

<p dir="auto">For additional guidance, you can refer to the <a href="https://fusionauth.io/docs/extend/code/lambdas/jwt-populate" rel="nofollow ugc">JWT Populate Lambda documentation</a>, which includes a helpful video walkthrough of the process.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/2973/how-to-create-a-jwt-populate-lambda-in-fusionauth</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2973/how-to-create-a-jwt-populate-lambda-in-fusionauth</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[How to Integrate Google Tag Manager with FusionAuth for Account Verification Tracking]]></title><description><![CDATA[<p dir="auto">Yes, this can be achieved using FusionAuth’s Webhooks. You can trigger a Webhook when the <strong>user.registration.verified</strong> event occurs and send the necessary data to Google Tag Manager (GTM).</p>
<p dir="auto"><strong>Steps to Set Up:</strong></p>

<strong>Create a Webhook in FusionAuth</strong>:

Navigate to <strong>Settings &gt; Webhooks</strong> in the FusionAuth Admin UI.
Create a new Webhook and configure it to trigger on the <strong>user.registration.verified</strong> event.


<strong>Enable the Webhook for Your Tenant</strong>:

Go to <strong>Tenant &gt; Webhooks</strong> and enable the Webhook for the desired tenant.


<strong>Integrate with GTM</strong>:

While FusionAuth Webhooks send data to external systems, ensure that GTM can ingest Webhook data. From my research, GTM supports Webhook ingestion, but you may need to configure a custom setup within GTM to process the incoming data.



<p dir="auto"><strong>Resources for Reference</strong>:</p>

<a href="https://fusionauth.io/docs/extend/events-and-webhooks/" rel="nofollow ugc">FusionAuth Events and Webhooks</a>
<a href="https://fusionauth.io/docs/extend/events-and-webhooks/events/user-registration-verified" rel="nofollow ugc">User Registration Verified Event</a>

<p dir="auto">This approach allows you to track account verification events seamlessly.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/2970/how-to-integrate-google-tag-manager-with-fusionauth-for-account-verification-tracking</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2970/how-to-integrate-google-tag-manager-with-fusionauth-for-account-verification-tracking</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Customizing Setup Password Emails in FusionAuth: Handling Invitation Personalization]]></title><description><![CDATA[<p dir="auto">The <strong>sendSetPasswordEmail</strong> functionality currently has a limitation in that it doesn’t allow you to pass custom data for use in the email template through the API. However, you can still achieve personalization by configuring the email template directly in the FusionAuth Admin UI.</p>
<p dir="auto"><strong>Steps to Personalize the Setup Password Email</strong>:</p>

<strong>Edit the Email Template</strong>:

Navigate to <strong>Customizations &gt; Email Templates &gt; Setup Password</strong> in the Admin UI.
You can either edit the existing default template or duplicate it to create a new one. Use variables like <strong>${user.firstName!'Unknown User'}</strong> or any other user data fields to customize the message.


<strong>Assign the Template to Your Application</strong>:

Go to <strong>Applications</strong> in FusionAuth.
Edit your application and assign the appropriate template to the <strong>Setup Password</strong> field.


<strong>Consider Custom Message Content</strong>:

Include static or semi-dynamic content like "You were invited by ABC" in the email template. If you have multiple initiators, you might need to create separate templates for each scenario.



<p dir="auto"><strong>Documentation for Reference</strong>:</p>

<a href="https://fusionauth.io/docs/customize/email-and-messages/templates-replacement-variables" rel="nofollow ugc">Email Templates and Replacement Variables</a>
<a href="https://fusionauth.io/docs/customize/email-and-messages/email-templates" rel="nofollow ugc">FusionAuth Email Templates</a>

<p dir="auto">While the API does not allow for passing custom fields directly for <strong>sendSetPasswordEmail</strong>, configuring the templates in the Admin UI should allow you to achieve the desired level of personalization.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/2965/customizing-setup-password-emails-in-fusionauth-handling-invitation-personalization</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2965/customizing-setup-password-emails-in-fusionauth-handling-invitation-personalization</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Ensuring Replay-Resistant Authentication with FusionAuth]]></title><description><![CDATA[<p dir="auto">FusionAuth provides replay-resistant authentication mechanisms by adhering to industry standards for the technologies it implements. The level of replay resistance depends on the authentication workflow and specific standards followed.</p>
<p dir="auto"><strong>Key Standards</strong>:</p>

<strong>OAuth 2.0</strong>:

FusionAuth adheres to RFC 6749, RFC 8628, and OpenID Connect Core, which include mechanisms to mitigate replay attacks (e.g., nonce and state parameters).
Documentation: <a href="https://fusionauth.io/docs/lifecycle/authenticate-users/oauth/#example-authorization-code-grant" rel="nofollow ugc">OAuth 2.0 Authorization Code Grant Example</a>


<strong>Other Standards</strong>:<br />
FusionAuth follows established standards for other authentication protocols, such as:

<strong>WebAuthn</strong>: Provides strong, cryptographic-based authentication resistant to replay attacks.
<strong>SAMLv2</strong>: Uses unique assertions and timestamps to prevent replay.
<strong>OIDC (OpenID Connect)</strong>: Includes nonce and other mechanisms to mitigate replay.



<p dir="auto"><strong>Replay Resistance Considerations</strong>:</p>

Replay resistance is primarily ensured when these protocols are implemented as defined by their standards. FusionAuth provides the tools and configurations necessary to follow these standards.
However, deviations from these standards or implementation flaws outside of FusionAuth’s control (e.g., improper handling of state or nonce values) could introduce vulnerabilities.

]]></description><link>https://fusionauth.io/community/forum/topic/2962/ensuring-replay-resistant-authentication-with-fusionauth</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2962/ensuring-replay-resistant-authentication-with-fusionauth</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Does OAuth Token Refresh Count as a Login in FusionAuth Reports?]]></title><description><![CDATA[<p dir="auto">Yes, exchanging a refresh token for a new access token (<strong>JWT</strong>) <strong>does</strong> count as a login event in the <strong>Login</strong> report.</p>
<p dir="auto"><strong>Events That Count as a "Login"</strong>:</p>

A login is completed using any <strong>Login API</strong> (e.g., normal login, one-time login, passwordless login, Identity Provider login, or Connector-based login).
A user is created with a password (whether through self-service registration or the Registration API).
A refresh token is exchanged for a new JWT.
A user successfully completes a <strong>2FA login</strong>.

<p dir="auto">For more details, refer to:<br />
<a href="https://fusionauth.io/docs/get-started/core-concepts/users#what-makes-a-user-active" rel="nofollow ugc">What Makes a User Active?</a></p>
]]></description><link>https://fusionauth.io/community/forum/topic/2945/does-oauth-token-refresh-count-as-a-login-in-fusionauth-reports</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2945/does-oauth-token-refresh-count-as-a-login-in-fusionauth-reports</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Understanding JWT Revocation and Introspection in FusionAuth]]></title><description><![CDATA[
<strong>JWTs Cannot Be Revoked</strong>:

Once a JWT is issued, it remains valid until it expires. JWTs are <strong>decoupled authentication tokens</strong>, meaning they do not require continuous validation against a central authority.
While OAuth2 includes a token introspection endpoint, it is <strong>only useful for access tokens</strong> and does not support JWT revocation.


<strong>What the /oauth2/introspect Endpoint Does</strong>:

This endpoint verifies whether an access token is valid based on its <strong>signature, expiration time, and format</strong>.
It <strong>does not check whether a user’s account has been locked or disabled</strong>.


<strong>Impact of a Locked Account on JWTs</strong>:

If a user’s account is locked, they will <strong>not be able to obtain a new access token</strong>.
However, any previously issued JWTs will <strong>continue to be valid</strong> until they expire, unless you implement additional measures.


<strong>How to Handle JWT Revocation</strong>:<br />
Since OAuth2 does not include JWT revocation natively, you can implement one of the following approaches:

<strong>Use Short Token Lifetimes</strong>: Issue JWTs with short expiration times and rely on refresh tokens for continued access.
<strong>Leverage Webhooks for Denylisting</strong>: Use FusionAuth’s event system to notify services when a user is locked or a token should no longer be valid. Services can then maintain a blacklist of invalidated JWTs.



<p dir="auto">For more details, refer to:</p>

<a href="https://fusionauth.io/articles/tokens/revoking-jwts" rel="nofollow ugc">Revoking JWTs in FusionAuth</a>

]]></description><link>https://fusionauth.io/community/forum/topic/2944/understanding-jwt-revocation-and-introspection-in-fusionauth</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2944/understanding-jwt-revocation-and-introspection-in-fusionauth</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Can You Create Read-Only Roles in FusionAuth?]]></title><description><![CDATA[
<strong>Existing Role Limitations in FusionAuth</strong>


FusionAuth provides predefined <strong>Admin UI roles</strong>, which are <strong>not modifiable</strong>.
You can review the available roles here:<br />
<a href="https://fusionauth.io/docs/get-started/core-concepts/roles#fusionauth-admin-ui-roles" rel="nofollow ugc">FusionAuth Admin UI Roles</a>
The <strong>default FusionAuth application roles cannot be changed</strong>, which means <strong>read-only roles are not currently available</strong>.


<strong>Requesting Read-Only Roles as a Feature</strong>


FusionAuth does not currently support <strong>read-only access roles</strong> for applications or tenants.
The likely reason for this is that users who need to <strong>view</strong> application/tenant properties often also need to <strong>update</strong> them.
However, you can <strong>submit a feature request</strong> to suggest adding read-only roles:<br />
<a href="https://github.com/FusionAuth/fusionauth-issues/issues/new/choose" rel="nofollow ugc">Submit a Feature Request</a>


<strong>Workaround: Implement a Custom Read-Only View</strong>

<p dir="auto">If immediate read-only access is required, consider:</p>

Using the <strong>FusionAuth APIs</strong> to create a <strong>custom dashboard</strong> where users can <strong>view</strong> but <strong>not edit</strong> data.
Relevant APIs for this purpose:

<a href="https://fusionauth.io/docs/apis/applications" rel="nofollow ugc">Application API</a>
<a href="https://fusionauth.io/docs/apis/tenants" rel="nofollow ugc">Tenant API</a>



<p dir="auto">Summary</p>

<strong>No built-in read-only roles</strong> exist for applications or tenants.
<strong>FusionAuth Admin UI roles are not modifiable</strong>.
<strong>You can request read-only roles as a feature</strong> via GitHub.
<strong>A workaround is to build a custom, API-based read-only view</strong>.

]]></description><link>https://fusionauth.io/community/forum/topic/2935/can-you-create-read-only-roles-in-fusionauth</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2935/can-you-create-read-only-roles-in-fusionauth</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Can You Create Read-Only Roles in FusionAuth?]]></title><description><![CDATA[
<strong>Existing Role Limitations in FusionAuth</strong>


FusionAuth provides predefined <strong>Admin UI roles</strong>, which are <strong>not modifiable</strong>.
You can review the available roles here:<br />
<a href="https://fusionauth.io/docs/get-started/core-concepts/roles#fusionauth-admin-ui-roles" rel="nofollow ugc">FusionAuth Admin UI Roles</a>
The <strong>default FusionAuth application roles cannot be changed</strong>, which means <strong>read-only roles are not currently available</strong>.


<strong>Requesting Read-Only Roles as a Feature</strong>


FusionAuth does not currently support <strong>read-only access roles</strong> for applications or tenants.
The likely reason for this is that users who need to <strong>view</strong> application/tenant properties often also need to <strong>update</strong> them.
However, you can <strong>submit a feature request</strong> to suggest adding read-only roles:<br />
<a href="https://github.com/FusionAuth/fusionauth-issues/issues/new/choose" rel="nofollow ugc">Submit a Feature Request</a>


<strong>Workaround: Implement a Custom Read-Only View</strong>

<p dir="auto">If immediate read-only access is required, consider:</p>

Using the <strong>FusionAuth APIs</strong> to create a <strong>custom dashboard</strong> where users can <strong>view</strong> but <strong>not edit</strong> data.
Relevant APIs for this purpose:

<a href="https://fusionauth.io/docs/apis/applications" rel="nofollow ugc">Application API</a>
<a href="https://fusionauth.io/docs/apis/tenants" rel="nofollow ugc">Tenant API</a>



<p dir="auto">Summary</p>

<strong>No built-in read-only roles</strong> exist for applications or tenants.
<strong>FusionAuth Admin UI roles are not modifiable</strong>.
<strong>You can request read-only roles as a feature</strong> via GitHub.
<strong>A workaround is to build a custom, API-based read-only view</strong>.

]]></description><link>https://fusionauth.io/community/forum/topic/2919/can-you-create-read-only-roles-in-fusionauth</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2919/can-you-create-read-only-roles-in-fusionauth</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Getting custom information from the hosted login pages into the JWT]]></title><description><![CDATA[<p dir="auto">This is not available today without some glue code.</p>
<p dir="auto">Currently our suggestion is to use Javascript on the Login page to jam the claim into a meta field that is shown on a Webhook payload, like jamming stuff into event.info.deviceDescription .</p>
<p dir="auto">Then you create user.login.success webhook, making sure it is transactional. On login, the event is fired that off to your system and then you extract the claim off the event.info.deviceDescription field and make a PATCH call to FusionAuth. In that PATCH call, you add this to a field on user.data.x.</p>
<p dir="auto">Then once that PATCH is successful, the 200 response back to the user.login.success event which completes the login and triggers the JWT populate lambda. That lambda extracts the claim off the user.data.x field and puts it into the JWT.</p>
<p dir="auto">It's not pretty but it is the only way to have this work for now. (For self-service registration you can use a custom hidden field, much easier.)</p>
<p dir="auto">Relevant docs:</p>

<a href="https://fusionauth.io/docs/extend/code/lambdas/jwt-populate" rel="nofollow ugc">https://fusionauth.io/docs/extend/code/lambdas/jwt-populate</a>
<a href="https://fusionauth.io/docs/extend/events-and-webhooks/events/user-login-success" rel="nofollow ugc">https://fusionauth.io/docs/extend/events-and-webhooks/events/user-login-success</a>
<a href="https://fusionauth.io/docs/apis/users#update-a-user" rel="nofollow ugc">https://fusionauth.io/docs/apis/users#update-a-user</a>

]]></description><link>https://fusionauth.io/community/forum/topic/2917/getting-custom-information-from-the-hosted-login-pages-into-the-jwt</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2917/getting-custom-information-from-the-hosted-login-pages-into-the-jwt</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item></channel></rss>