FusionAuth
    • Home
    • Categories
    • Recent
    • Popular
    • Pricing
    • Contact us
    • Docs
    • Login
    1. Home
    2. elliotdickison
    3. Posts
    E
    • Profile
    • Following 0
    • Followers 0
    • Topics 10
    • Posts 21
    • Best 2
    • Controversial 0
    • Groups 0

    Posts made by elliotdickison

    • RE: Changes to the magic links API between 1.48.3 and 1.55.1?

      @mark-robustelli No worries, we do have a working setup now after a slew of theme tweaks. That said there is still an outstanding question and a possible bug (both low priority).

      The question: What happened to the ability to complete an oauth authentication flow by POSTing a code to /oauth2/passwordless? That worked in 1.48.3 but not in 1.55.1.

      The potential bug: Why does a GET call to /oauth2/passwordless/<invalid code> redirect the user to the browser confirmation page (even when the request is from the same browser) instead of an invalid code page?

      posted in General Discussion
      E
      elliotdickison
    • RE: Changes to the magic links API between 1.48.3 and 1.55.1?

      @mark-robustelli Correct. I'm aware we're in uncharted territory and can't expect everything to work smoothly across upgrades, but TBH I don't think our solution is quite as bad as it sounds.

      The form is a single input that, when a code is entered, triggers the same request that would fire if the user clicked a magic link in an email. Conceptually we are very close to the built-in flow except that we categorically exclude all of the link verifier bugs and cross-browser complications of the built-in flow.

      Regarding the passwordless API, unfortunately that would mean we'd lose the FusionAuth SSO session (source) which is a key feature for us.

      posted in General Discussion
      E
      elliotdickison
    • RE: Handling webhook failures

      @mark-robustelli This is great, didn't know it existed. We were on an older version of FusionAuth that didn't support the log. Thanks!

      posted in Q&A
      E
      elliotdickison
    • Changes to the magic links API between 1.48.3 and 1.55.1?

      Hi all,

      We're currently on 1.48.3 and are attempting to upgrade to 1.55.1. The only sticking point for us seems to be a change to the magic links API.

      Background

      We use FusionAuth's built-in magic links flow with two exceptions:

      1. We have a custom passwordless email template that includes the code in large text for the user to read/copy instead of embedded in a link for them to click.
      2. We've updated the OAuth2 passwordless theme file to render a form where the user can enter the code manually. The form is shown after the user requests a passwordless email (in place of the "check your email" message rendered by default).

      When a user enters a code in the form we send a POST request to /oauth2/passwordless containing a "code" field set to the code, a "postMethod" field set to "true", and all the standard oauth fields via the "@oauthHiddenFields" helper.

      This worked perfectly in 1.48.3. A valid code would authenticate the user and redirect them back to our app. An invalid code would re-render the page with an error message.

      This provides users with a nice Slack-like OTP auth flow and sidesteps all the issues with one-time links taking users to the wrong browser or getting invalided by link verifiers.

      The problem

      This flow doesn't work in 1.55.1. Specifically our custom form that POSTs the code to /oauth2/passwordless results in the page just reloading without authenticating the user.

      In an attempt to fix the problem I updated the custom form to redirect the user to /oauth2/passwordless/<code> per this post. That does actually fix the sign in flow if the code is valid! However if the code is invalid then the user is redirected to the new confirmation page meant to protect against email client link verifiers*. When the user clicks the "Confirm" button they are redirected back to the app without an error message (and obviously without being signed in as the code was invalid).

      *My guess is that this feature is the reason that the behavior of the /oauth2/passwordless endpoint changed.

      We could potentially "fix" the invalid code flow by updating the theme file for the new confirmation page to redirect the user back to the passwordless page, probably with a query param indicating that an error message should be shown. Because we use manual code entry instead of links the user is forced to complete sign in where they started. The confirmation page should never be shown in this case, so updating it to redirect should be safe. This feels like a hack that we'll regret though.

      The question

      What changed with the /oauth2/passwordless API, and what is the best way to continue supporting Slack-like OTP sign in codes (without hacking our FusionAuth theme to bits if possible)?

      Thanks!

      posted in General Discussion
      E
      elliotdickison
    • Handling webhook failures

      We realized that a webhook of ours, listening to user.create.complete events, has been logging failures for some time. We can see errors in the System Event Log in the form "Webhook [<url>] returned response code [500] when sending [UserCreateComplete] event with Id [<uuid>]". The url is the endpoint listening to events and the uuid appears to be a random ID for the event.

      The problem we are facing is not that the original webhook failed (we think we may know what the issue was with our endpoint), but that we have no idea which users it failed for and can't rectify the situation. The error logs don't contain any actionable information and we can't find any webhook event history in the FusionAuth dashboard or the database.

      Is there any way to get the id of the user that triggered the webhook that failed? Or is there any way for us to replay a failed webhook after the 3 retries are up? Or can we configure more retries over a longer period?

      posted in Q&A
      E
      elliotdickison
    • RE: Specify default value for form field?

      @vatsal We did not

      posted in Q&A
      E
      elliotdickison
    • Can event logs be sent to stdout?

      We're self-hosting FusionAuth's Docker image on the Starter plan. We'd love to pipe event logs to stdout so that our log infrastructure picks them up and sends them to Grafana without the need for us to write a custom ingester. Is this possible? Or is there a reason we shouldn't do this?

      posted in General Discussion
      E
      elliotdickison
    • RE: Sporadic redirects to /maintenance-mode in production

      We've resolved this issue. Turns out our CDN had cached FusionAuth's redirects to /maintenance-mode-failed that were triggered during a previous db outage. We're investigating why our CDN cached these redirects as it's configured to respect the headers sent by FusionAuth.

      posted in Q&A
      E
      elliotdickison
    • Sporadic redirects to /maintenance-mode in production

      Hi all,

      We're seeing sporadic redirects to /maintenance-mode in production. Many users are able to sign in and register just fine and our admin dashboards are working, but many users are reporting an inability to login and are getting redirected to /maintenance-mode. The actual maintenance mode form is not returned (just the error text) as we are in production mode. To help us troubleshoot it would be helpful to know if redirects to /maintenance-mode can happen sporadically on a single node, or if that redirect is a game-over state that a node will return consistently until fixed.

      Thanks!

      posted in Q&A
      E
      elliotdickison
    • Pricing feedback

      A couple thoughts on pricing:

      • It would be helpful if the pricing page posted the cost-per-MAU formula for each plan. The MAU slider on the pricing page gives me the exact cost for a specific number of MAUs, but if I want a general formula I have to reverse engineer it. For example with the self-hosted Starter plan I can see that the MAU fee goes up by $75 for every 10k MAU at low volumes, but at high volumes that appears to drop down to $25 for every 10k MAU (cool! but also totally unclear). This gets particularly confusing when comparing plans. For example at first I assumed that the self-hosted Essentials plan ($825/mo) would be 6.8x more expensive than the Starter plan ($125/mo). After playing with the slider though that does not appear to be the case - it's still much more expensive but not 6.8x. It's very hard to tell what the actual difference in cost would be as we scale.
      • I would love to see basic security features (particularly passkeys) available in the Starter plan. The significant price jump to the Essentials plan currently puts those features out of our reach. I would expect to pay through the nose for enterprise-y things like LDAP, SAML, and priority support (and hope to be at that level someday!), but it's a bummer to lose out on what are becoming table-stakes auth features without significant price increases. It seems that there is a gap in the pricing model for the budget-conscious startup that doesn't need true enterprise features, is already self-hosting, is not putting a burden on support, and is contributing back via PRs, detailed bug reports, etc. Just a suggestion - we are happy FusionAuth customers and love the product!
      posted in Comments & Feedback
      E
      elliotdickison
    • RE: Deploying FusionAuth on fly.io

      We've been running FusionAuth on Fly for a couple years now. Great experience all around.

      posted in Blogs
      E
      elliotdickison
    • RE: Specify default value for form field?

      Thanks for the tips! I do love that customizing FusionAuth's theme templates allows you to accomplish pretty much anything. For our use-case - lots of custom forms for lots of tenants - I would prefer to be able to use the advanced registration form feature instead of polluting theme files with JS snippets. At that point I think I might as well hardcode the HTML for the fields instead of adding JS.

      posted in Q&A
      E
      elliotdickison
    • Specify default value for form field?

      Is there any way to specify the default value for a form field, either at the field level or the form level? I can't seem to find documentation regarding this, but it would be a helpful feature for advanced registration forms.

      posted in Q&A
      E
      elliotdickison
    • Reasonable connection limits?

      Hi,

      I'm setting up FusionAuth in a multi-node cluster and am trying to determine a good connection limit for each node. If I give each node the recommended 512MB ram, how many connections could FusionAuth handle? Or is the number of connections CPU-bound? The majority of traffic will likely be to POST /api/jwt/refresh to refresh access tokens.

      Thanks!

      posted in Q&A
      E
      elliotdickison
    • RE: Awkward OAuth logout in mobile app

      @maciej-wisniowski We ended up going with your solution and it's working alright, thanks for that!

      @robotdan One suggestion for you all: I found the naming of the "AllApplications" value for the application.oauthConfiguration.logoutBehavior setting a bit confusing. As far as I can tell all the "AllApplications" value it really means is "show the OAuth2 logout page". That page can be used to log out of all apps (that's the default template behavior), but it doesn't have to be used that way. Per the suggestion from @maciej-wisniowski we are using the page to log the user out of only one app and show a "successfully logged out" message. Maybe to avoid a breaking API change the value "OneApplication" could be added in addition to "AllApplications" and "RedirectOnly". That value could use the same OAuth 2 logout template but maybe set a variable that could be used to conditionally turn off the logout-of-all-apps behavior. Just a thought.

      posted in Q&A
      E
      elliotdickison
    • Awkward OAuth logout in mobile app

      Hi all,

      We're trying to figure out a nice logout experience for our mobile app users and we're struggling a bit.

      Where we're at

      We've got a mobile app setup to auth users with FusionAuth + OAuth + JWTs. When the users log in we pop open the /oauth/authorize URL in an in-app-browser which closes/redirects back to the app after login. So far so good.

      For logout we send a DELETE /api/jwt/refresh request to revoke the user's refresh token and clear tokens from the local keychain.

      The problem

      We also want to kill the user's FusionAuth SSO session on logout, but not all application sessions. The only way we've figured out how to do this is to set the app's OAuth "Logout behavior" to "Redirect only" and then open /oauth2/logout in our in-app-browser when the user logs out. The problem is that this results in the browser popping open and then immediately closing after the session is revoked. This will look unnecessary/confusing/broken to the user.

      Questions

      • Are we doing something really wrong, or is this a reasonable issue to be facing?
      • Is there a way to revoke the SSO session with an API call, or is the GET request essential for clearing cookies?
      • If the GET request is essential, is there a way we can get FusionAuth to show some sort of "Logout successful" message before redirecting so opening the browser doesn't feel pointless from a UX perspective?

      Thanks!

      posted in Q&A
      E
      elliotdickison
    • RE: What can I use connectors for?

      @joshua That actually helps very much, thanks!

      posted in Q&A
      E
      elliotdickison
    • RE: What can I use connectors for?

      We're considering upgrading for Connectors. One use-case we have is to allow our customers to maintain existing subscription/user stores while using our service, which seems like it falls squarely in the documented use-cases. Another use-case we have is a little less standard though: we'd like to allow users from one of our FusionAuth tenants to login to an application from another of our FusionAuth tenants. Would it be possible to use a connector to point FusionAuth back at itself in order to bridge tenants like this? Or is there some alternative for us to allow Company A's users to access Company B's app with their existing Company A logins (all stored in the same FusionAuth instance)?

      posted in Q&A
      E
      elliotdickison
    • Localization message file format

      TL;DR - What is the actual language/format for the message content that can be found under Themes / Messages?

      I'm creating a local file for the default messages in a custom theme that I plan to feed into kickstart. I'd like to tell my IDE what language the file is using so I can have syntax formatting (like FusionAuth's UI has), but I can't seem to figure out what it is. I poked around the markup of the CodeMirror instance in the FusionAuth UI looking for hints but came up short 😅

      Thanks!

      posted in Q&A
      E
      elliotdickison
    • RE: Http-Only Cookies w/ OAuth Authorization Grant

      Ok so it sounds like once the tokens have been sent to the client via the /oauth2/token response body they've technically been exposed - if malicious JS was on the page it could intercept them regardless of whether I store them in non-http-only cookies or local storage. So it seems like the only option is to do the code-for-token exchange on my backend server. Then I can send the http-only cookies down the pipe myself. Can anyone validate my thinking?

      posted in Q&A
      E
      elliotdickison