Roopesh Chander d6a3d06b0c apple: Use the tunnel configuration for data persistence (#2113)
Fixes #2048.
Fixes #2023.

Previously:
  - accountId was stored in UserDefaults
- token and actorName were stored as two separate items of data in the
keychain (only one token+actorName can be in storage at any point in
time)

With this PR:
- accountId is stored in the tunnel configuration, along with the
authBaseURL
- token is stored in the keychain, along with the authURL and actorName
as attributes on the same keychain item
- a persistent reference to the token is stored in the tunnel
configuration (only the app and the tunnel can dereference it to access
the token without user intervention)
- once stored, the app never reads the token; the tunnel reads the token
directly from the keychain
- token is stored per authURL; so two tokens for two different authURLs
can be in storage at the same time
- when the accountId is changed in app settings, the app searches for
the new authURL in the keychain, and if it finds an item, considers the
app to be logged in with that user (a proper UI for switching accounts
shall come in later)
2023-09-22 11:26:28 +00:00
2023-09-21 14:32:02 -06:00
2023-08-10 12:40:46 -05:00

Note: 🚧 The main branch is undergoing major restructuring in preparation for the 1.0 release 🚧.

See the legacy branch for the branch tracking the latest 0.7 release.

firezone logo

firezone Discourse firezone Coverage Status GitHub commit activity GitHub closed issues Cloudsmith follow on Twitter

Firezone is a self-hosted VPN server and Linux firewall

Firezone Architecture

Get Started

Follow our deploy guide to install your self-hosted instance of Firezone.

Or, if you're on a supported platform, try our auto-install script.

Using Firezone in production at your organization? Contact us to learn about our Enterprise Plan.

Features

firezone-usage

  • Fast: Uses WireGuard® to be 3-4 times faster than OpenVPN.
  • SSO Integration: Authenticate using any identity provider with an OpenID Connect (OIDC) connector.
  • Containerized: All dependencies are bundled via Docker.
  • Simple: Takes minutes to set up. Manage via a simple CLI.
  • Secure: Runs unprivileged. HTTPS enforced. Encrypted cookies.
  • Firewall included: Uses Linux nftables to block unwanted egress traffic.

Anti-features

Firezone is not:

  • An inbound firewall
  • A tool for creating mesh networks
  • A full-featured router
  • An IPSec or OpenVPN server

Documentation

Additional documentation on general usage, troubleshooting, and configuration can be found at https://docs.firezone.dev.

Get Help

If you're looking for help installing, configuring, or using Firezone, check our community support options:

  1. Discussion Forums: Ask questions, report bugs, and suggest features.
  2. Public Slack Group: Join live discussions, meet other users, and get to know the contributors.
  3. Open a PR: Contribute a bugfix or make a contribution to Firezone.

If you need help deploying or maintaining Firezone for your business, consider contacting us about our paid support plan.

Star History

Star History Chart

Package Repository

Hosted By: Cloudsmith

Package repository hosting is graciously provided by Cloudsmith. Cloudsmith is the only fully hosted, cloud-native, universal package management solution, that enables your organization to create, store and share packages in any format, to any place, with total confidence.

Developing and Contributing

See CONTRIBUTING.md.

Security

See SECURITY.md.

License

Portions of this software are licensed as follows:

  • All content residing under the "elixir/" directory of this repository, if that directory exists, is licensed under the "Elastic License 2.0" license defined in "elixir/LICENSE".
  • All third party components incorporated into the Firezone Software are licensed under the original license provided by the owner of the applicable component.
  • Content outside of the above mentioned directories or restrictions above is available under the "Apache 2.0 License" license as defined in "LICENSE".

WireGuard® is a registered trademark of Jason A. Donenfeld.

Description
No description provided
Readme Apache-2.0 169 MiB
Languages
Elixir 57.1%
Rust 29.2%
TypeScript 5.9%
Swift 3.3%
Kotlin 1.8%
Other 2.5%