Also known as “XIVAuth has garbage design”, “which idiot made this API?”, “why did you think it was a good idea to put data in your authentication layer”, and similar appropriate titles.

It has been brought up a few times that XIVAuth is Not Quite OAuth2. This is correct. XIVAuth’s use of OAuth2 is an implementation detail to make the service feel more “usable” in a few cases (at least, in the developer’s opinion). It is far better to think of XIVAuth as being UMA-lite, OpenID-lite, or even more appropriately as “Discord-Flavored SSO.”

While the use of a UMA-lite/Discord-like authentication process may seem cumbersome at best and a significant design flaw at worst, it was chosen for a few reasons:

I do not expect the decision to use a non-standard system to be popular, and I’m certain it has flaws. These flaws will be addressed when they come up to the best of my ability, and I very much do want to provide full OpenID support in the future, but that will not be a thing in the initial release of XIVAuth (whenever that is meant to happen).

Despite these paradigms and shortcomings, I expect that XIVAuth will feel natural and relatively easy to integrate into existing (or new) codebases. My goal for designing the authentication service this way (and the API this way) is that a developer will still find it easy to set up and use, even if it’s not to the letter of the relevant standards.

And because FAQs are fun:

Prior Art