HNHacker News
TopNewBestAskShowJobs

brokenwren

324 karma · joined March 25, 2015

This is my jam: https://fusionauth.io
submissionscomments
brokenwren··on Ask HN: Is SVG Dying?
Gzip isn't going to compress as well as a binary format would. SVG is XML and while it has text components that can be compressed, it will reach limits. Plus, if you compress the binary, it could be reduced even further.

Using a byte encoding for element types and numeric values over strings would likely dramatically reduce sizes. For example:

<z:rect x="0" y="0" width="10" height="10"/>

Could be binary encoded as something like:

00 00000000 00000000 00000110 00000110

(shape, x, y, width, height)

Total size of compress XML is probably 30-40 bytes. Final binary size is 16-18 bytes.

brokenwren··on Ask HN: Is SVG Dying?
Why would it be dying? If anything, most companies are using it more. I'd like to see a binary format for SVG to make them smaller but keep the scalability.
brokenwren··on Save a CPU – Ditch BCrypt, Use SHA2 Instead
Please present an argument and data to back this up.
brokenwren··on Google Launches '.dev' Domain in (Expensive) Early Access Program
Is anyone going to actually pay $11,500 for a domain name this week?
brokenwren··on Cyber Security People are Praying Together on LinkedIn
Not very many of them apparently.
brokenwren··on Revoking JWTs (JSON Web Tokens)
Yeah, we work on this issue all the time as well and see all of these solutions (and others). I agree that (A) definitely feels like sessions. However, I disagree that (C) is error prone. Here are answers to your questions on (C) plus how FusionAuth does it:

> what if your webhook doesn't get processed quickly enough?

I'm assuming you mean at the edges. This is possible, but if you are on the same backplane, highly unlikely since our solution is simply inserting an int into a Hash. Even if it isn't backplane, then you still can retry. Think of session caches as the same situation, so really no difference if you have a distributed cache for (A). Also, FusionAuth provides configurable timeouts and transactions for Webhooks. This covers most failure cases.

> What if your client breaks and stops being able to accept webhooks?

I'm assuming you mean "service" rather than "client" since we want the services to know a JWT has been revoked. I'd say this should hopefully mean that the service is also not accepting API requests. If it is, then you will have issues. However, this is a failure case no matter what. Similarly, the client breaks and stops validating the JWT in (A), you are in the same situation. Plus, FusionAuth provides transactional Webhooks, so you can retry and protect against failures.

> What if the webhook server stops firing or gets overloaded?

Since FusionAuth is the Webhook event generator and the IdP, if it stops, you got bigger issues. :)

In terms of overloading, we protect against event backlogs and failures pretty well. We can also shut the entire node down if needed to prevent any API calls. This is a bit brute force, but if you are in #3 for security, turning everything off is better than a breach.

brokenwren··on Revoking JWTs (JSON Web Tokens)
Exactly. JWTs can't be extended since the signature is part of the JWT and signs the JSON body, where the expiration is.
brokenwren··on Revoking JWTs (JSON Web Tokens)
Randall Degges has a blog post on this. It's pretty good actually: https://developer.okta.com/blog/2017/08/17/why-jwts-suck-as-...
brokenwren··on Revoking JWTs (JSON Web Tokens)
I'll add on to what @robotdan mentioned. A distributed cache is basically a Webhook approach to pushing cached values around. If your Webhooks (or whatever you want to call them really) are transactional, then the state sync is handled and guaranteed by the nature of events and the server generating them.
brokenwren··on Revoking JWTs (JSON Web Tokens)
These are strategies I've seen. Here are some issues with each:

1. The shorter the lifetime, the more JWTs and refreshes are needed. This includes the signing and verification, both of which can be heavy operations depending on key length.

2. Token introspection is a coupling hub and spoke. If every service needs to introspect every JWT, it will be coupled to the introspect API. While that isn't horrible in some cases, it can be a nightmare in others. Additionally, new services need to always remember to use this pattern. You can get around this with an API gateway though. In either case, the introspection API either needs to store all the JWTs (in memory or a database) to determine if they have been revoked, or use some other mechanism to determine revocation. If you have large numbers of JWTs valid at any time, this doesn't scale well.

3. This is basically the same as my approach. It sounds like you are using a distributed cache. I'm using Webhooks and multiple local caches. Basically the same thing if your Webhooks are written properly.

brokenwren··on Developers guide to GDPR
Thanks for the heads up. We'll get that information incorporated into the piece.
brokenwren··on Nobody Cares About OAuth or OpenID Connect
Matt, you guys should switch JHipster to FusionAuth! Less IBM-ness you know. ;)
brokenwren··on Nobody Cares About OAuth or OpenID Connect
Try asking for an SLA or any feature development or 24/7 support. You'll see why people think Okta and Auth0 are expensive. ;)
brokenwren··on Nobody Cares About OAuth or OpenID Connect
Haha. I try to be upfront that I work for FusionAuth. I mentioned it in my other comments in the thread but forgot to mention it here. Thanks for keeping me honest. ;)
brokenwren··on Nobody Cares About OAuth or OpenID Connect
FusionAuth is free. Less pain, more awesome! ;)

And it integrates with AAD and ADFS.

brokenwren··on Nobody Cares About OAuth or OpenID Connect
Elastic provides a much more scalable and fast search for freeform user attributes. Using the databases search works in some cases but when you have freeform data (for example favoriteColor), it breaks down quickly.

While Elastic can be a bit cumbersome, we have made bundles that make it simpler to deploy and manage. We have also worked hard to secure it.

brokenwren··on Nobody Cares About OAuth or OpenID Connect
I've heard that Cognito is very limited in terms of features and can be a headache to get working properly.

I haven't used Cognito, but I work for FusionAuth (https://fusionauth.io) and we have a number of developers that have switched from Cognito to FusionAuth because we cover more of their use cases outside of plain authentication.

Not sure if you have had similar experience with Cognito being limited.

brokenwren··on Nobody Cares About OAuth or OpenID Connect
> Authentication is just too important to completely outsource without recourse

I agree 100%. You need to own your users and all of their data. Along those same lines, I wouldn't want my user data going into a multi-tenant, cloud-hosted solution like Okta. I'd much prefer to store everything on my own servers or use an on-premise solution like FusionAuth or KeyCloak.

brokenwren··on Nobody Cares About OAuth or OpenID Connect
I'm surprised no one has mentioned FusionAuth (https://fusionauth.io). It's free, has a Python library, and the features that most apps need. There are a couple of people using Python with FusionAuth right now.

The community for FusionAuth is growing quickly and it has an open issue tracker (https://github.com/FusionAuth/fusionauth-issues), good docs (https://fusionauth.io/docs/v1/tech/), and many open source projects as well (https://github.com/FusionAuth).

I'm one of the developers of FusionAuth, so you should give it a try and lot us know what you think.

brokenwren··on Akamai purchases Janrain in all cash deal
Feels like the cloud providers are staying safely in the "do the minimal feature set to make it work" category with Firebase and Cognito. I don't even consider those really anything more than authentication APIs.
brokenwren··on Akamai purchases Janrain in all cash deal
I wonder if this could be another purchase like Stormpath. Could Akamai eventually kill the Janrain APIs because they aren't profitable enough?

Anyone using Janrain and concerned about this acquisition?

brokenwren··on The Rise of Microsoft Visual Studio Code
VS Code solves different problems then IntelliJ, PyCharm and Atom. I'm not sure this is a fair comparison. For example, I wouldn't ever code a full Java stack in VS Code. I'd go straight to IntelliJ.
brokenwren··on You Already Own a Self-Driving Car
Is this just click bait?
brokenwren··on Guide to User Data Security (updated)
That is something I didn't get a chance to add to the guide this time. I'm going to be adding more information to the guide later this year or next.

Passwordless login is an interesting topic and it seems like other companies are pushing it hard. When it is done via an app on your phone, it appears to be more secure than via SMS. Similarly, email based login is only as secure as someone's email. Both of these methods of authentication rely on third-parties to implement the security well, which is not always the case.

As for MFA, both SMS and code based MFA are good solutions. SMS is a little less secure because phones can be cloned. The new Webauthn specification looks interesting and hopefully that will improve web based authentication considerably. Finally, the best solution currently still seems to be MFA devices like USB sticks.

The main issue with MFA is that it can be cumbersome for users to setup. The simplest version is SMS, which requires very little knowledge to setup correctly. However, this is also the least secure.

Always tradeoffs with security unfortunately.

brokenwren··on Securing your users' authentication
Similar to Auth0, except you can run it anywhere (dev-box, bare-metal, VPS, Docker, etc). It has all the features that most applications need. Plus, it's free for unlimited users.
brokenwren··on Guide to User Data Security (updated)
I'm the author of the guide (and did this recent update to it), so feel free to ask me any questions you might have. Comments or corrections also welcome.
brokenwren··on Securing your users' authentication
I don't think this is correct for most uses of SMS currently. 2FA (MFA) is on top of password authentication, not to the side of it. If you forget your password, 2FA does nothing to help you out.

I think what you are talking about is "SMS password reset", which is a different beast. And it also sounds like you are talking about SMS based identity verification for customer service representatives. If you are only using SMS for identity verification in your CSR workflow, that is a broken workflow.

In FusionAuth (https://fusionauth.io), we implemented SMS MFA that only works after the user has successfully put in their password. Therefore, the attacker would need their password and a clone of their phone. While this is still possible, the threat surface is quite small.

brokenwren··on Download Counts from Google Cloud Storage
Haha Dan beat me to it. I was just about to post this blog post.
brokenwren··on CTO Lunches
Let's be clear - CTO stands for Chief Technology Officer. If you break the title into sections you'll have a clear picture of what that means.

Chief -> Top, big cheese, main dude (or dudette)

Technology -> Like computers and stuff

Officer -> Simple definition: "Officers are responsible for the management and day-to-day operations of the corporation." You know, like making decisions and helping the company be successful.

If you fit into that description, even if you don't have that specific title, you are acting as a CTO. Lots of VPs of Engineering fit into that title. So do lots of CEOs of software companies.

brokenwren··on Interactive Git Cheatsheet
Ahhhh. I had no idea this thing was interactive. That's not intuitive at all. The only that that indicates that is the "Interaction" in the title and I skipped over that part and just start reading the commands.
← PreviousPage 2 of 4Next →