Skip to content

[Proposal] Authentication Plugin SystemΒ #1433

Open
@KazWolfe

Description

@KazWolfe

We've received a number of requests/PRs for various interesting authentication methods (e.g. #1378, #1432, #738, and more), and this is more or less a repost of something posted on one of those Issues.

XIVLauncher may benefit from supporting plugins designed to allow integration with authentication providers. These plugins would provide an API surface for users to add support for their own custom authentication integrations however they see fit.

The primary intent of the authentication plugin system would be to provide a deep connection between XIVLauncher and any given password manager or provider. The API surface should include functionality for:

  • Providing a list of saved accounts from the backend store
  • Providing the credentials (username + password + optionally OTP) from any given backend
  • Retrieving an OTP code from a backend, allowing devs to write their own OTP providers

This would open a number of use cases, such as:

  • Allowing XIVLauncher to grab all Square Enix accounts from 1Password, allowing the user to choose the saved password to use, and logging in with it.
  • Allowing developers to store their (encrypted) credentials backed by a U2F security key rather than the Windows Credential Store.
  • Allowing porting the OTP server feature to its own plugin.

The Authentication Plugin feature should be documented and open for developers to use, although the project can officially support certain "known-good" integrations (e.g. those for 1Password, Bitwarden, and others). A type of "plugin store" should be out of scope for this feature - support is provided only for official integrations, others are supported only provisionally.

This system does have a slight impact to XIVLauncher's security, but I would consider these changes to be a non-issue to a benefit. Password managers feel more secure than the local Windows Credential Store. Developers may choose to implement bad ideas such as plugins with hardcoded OTP secrets, but this is no worse than existing integrations with the currently-existing webserver.

This system would be preferred over the webserver as it's overall simpler and can provide a better experience by removing the need for launch scripts and similar. It would also arguably be more secure, is simpler, and doesn't require firewall management.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions