passbolt_api
Passbolt Community Edition (CE) API. The JSON API for the open source password manager for teams!
Top Related Projects
Bitwarden infrastructure/backend (API, database, Docker, etc).
Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs
Free cross-platform password manager compatible with KeePass
A modern, open source password manager for individuals and teams.
Quick Overview
Passbolt API is an open-source password manager for teams, designed for self-hosting. It provides a secure way to store, share, and manage passwords and other sensitive data within organizations. The API is built with CakePHP and offers extensive functionality for password management and user collaboration.
Pros
- Self-hosted solution, giving organizations full control over their data
- Strong encryption and security measures, including OpenPGP for end-to-end encryption
- Extensive API documentation and support for integration with other systems
- Active development and community support
Cons
- Requires technical expertise to set up and maintain
- May have a steeper learning curve compared to some commercial password managers
- Limited mobile support compared to some alternatives
- Self-hosting responsibility means organizations need to manage their own backups and security
Getting Started
To set up Passbolt API, follow these steps:
-
Clone the repository:
git clone https://github.com/passbolt/passbolt_api.git
-
Install dependencies:
cd passbolt_api composer install
-
Configure your environment:
- Copy
.env.default
to.env
- Edit
.env
to set your database and other configuration options
- Copy
-
Run database migrations:
bin/cake passbolt migrate
-
Generate GPG keys for the server:
bin/cake passbolt create_server_keys
-
Start the development server:
bin/cake server
For production deployment, additional steps are required, including setting up a web server, configuring SSL, and ensuring proper security measures are in place.
Competitor Comparisons
Bitwarden infrastructure/backend (API, database, Docker, etc).
Pros of Bitwarden server
- More active development with frequent updates and contributions
- Broader feature set, including support for organizations and sharing
- Larger community and ecosystem, with official mobile and desktop clients
Cons of Bitwarden server
- More complex codebase, potentially harder to self-host and maintain
- Higher resource requirements for hosting
- Less focus on API-first approach compared to Passbolt
Code comparison
Passbolt API (PHP):
public function isAuthenticated()
{
return $this->Auth->user() !== null;
}
Bitwarden server (C#):
public async Task<bool> IsAuthenticated(ClaimsPrincipal principal)
{
return principal?.Identity?.IsAuthenticated ?? false;
}
Both projects implement authentication checks, but Bitwarden's approach is asynchronous and uses .NET's ClaimsPrincipal, while Passbolt relies on a simpler synchronous method using its Auth component.
Passbolt focuses on a clean API-driven architecture, making it easier to integrate with existing systems. Bitwarden offers a more comprehensive password management solution with built-in clients and additional features like secure file sharing.
Bitwarden's larger community and more frequent updates may lead to faster bug fixes and feature additions, but it comes at the cost of a more complex self-hosting setup. Passbolt's simpler architecture might be preferable for organizations prioritizing customization and integration with existing workflows.
Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs
Pros of Vaultwarden
- Lightweight and efficient, requiring fewer system resources
- Compatible with official Bitwarden clients and browser extensions
- Supports self-hosting with easier setup and maintenance
Cons of Vaultwarden
- Fewer enterprise-level features compared to Passbolt API
- Limited official support as it's a third-party implementation
- May lack some advanced access control options
Code Comparison
Vaultwarden (Rust):
#[get("/sync")]
fn sync(conn: DbConn, nt: Headers, user: User) -> JsonResult {
let user_json = user.to_json(&conn)?;
Ok(Json(json!({
"Profile": user_json,
"Folders": folders::get_folders_json(&conn, &user.uuid),
"Ciphers": ciphers::get_ciphers_json(&conn, &user.uuid),
"Domains": domains::get_domains_json(&user.uuid, &conn),
})))
}
Passbolt API (PHP):
public function sync()
{
$user = $this->User->get($this->Auth->user('id'));
$folders = $this->Folder->findAllByUserId($user['User']['id']);
$resources = $this->Resource->findAllByUserId($user['User']['id']);
$domains = $this->Domain->findAllByUserId($user['User']['id']);
return $this->success([
'User' => $user,
'Folders' => $folders,
'Resources' => $resources,
'Domains' => $domains,
]);
}
This comparison highlights the different programming languages and approaches used in both projects, with Vaultwarden utilizing Rust for performance and Passbolt API using PHP for web development.
Free cross-platform password manager compatible with KeePass
Pros of KeeWeb
- Offline-capable and can be used as a standalone application
- Supports multiple password file formats, including KeePass
- Cross-platform compatibility (web, desktop, and mobile)
Cons of KeeWeb
- Lacks built-in sharing and collaboration features
- No server-side component for centralized management
- Limited enterprise-level features compared to Passbolt
Code Comparison
KeeWeb (JavaScript):
const kdbxweb = require('kdbxweb');
const db = kdbxweb.Kdbx.create(credentials, 'My Database');
const entry = db.createEntry(db.getDefaultGroup());
entry.fields.set('Title', 'My Entry');
entry.fields.set('Password', kdbxweb.ProtectedValue.fromString('secret'));
Passbolt API (PHP):
$user = $this->Users->newEntity();
$user->username = 'john@doe.com';
$user->role_id = $this->Roles->getIdByName('user');
$user->active = true;
$this->Users->save($user);
The code snippets demonstrate the different approaches: KeeWeb focuses on client-side password management, while Passbolt API handles server-side user and password management.
A modern, open source password manager for individuals and teams.
Pros of Padloc
- Cross-platform support with web, desktop, and mobile apps
- End-to-end encryption for enhanced security
- Open-source and self-hostable solution
Cons of Padloc
- Smaller community and less extensive documentation
- Fewer enterprise-focused features
- Less mature project compared to Passbolt
Code Comparison
Padloc (TypeScript):
export class Vault extends Serializable {
@field("items")
items: VaultItem[] = [];
@field("name")
name: string = "";
@field("description")
description: string = "";
}
Passbolt (PHP):
class ResourcesTable extends Table
{
public function initialize(array $config): void
{
parent::initialize($config);
$this->setTable('resources');
$this->setDisplayField('name');
$this->setPrimaryKey('id');
}
}
Both projects use object-oriented programming, but Padloc utilizes TypeScript with decorators for field definitions, while Passbolt employs PHP with a more traditional class structure for database table representation.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
The open source password manager for teams.
Table of Contents
Introducing Passbolt
Passbolt is a security-first, open source password manager for teams. It helps organizations centralize, organize and share passwords and secrets securely.
What makes passbolt different?
- Security: Passbolt security model features user-owned secret keys and end-to-end encryption. It is audited multiple times annually, and findings are made public.
- Collaboration: Securely share and audit credentials, with powerful and dependable policies for power users.
- Privacy: Passbolt is headquartered in the EU,:european_union: specifically in Luxembourg. Passbolt doesn't collect personal data or telemetry, and can be deployed in an air-gapped environment.
Get Started
Run it on your own server, natively
Available Clients And Apps
Browser Extensions
Mobile Apps
CLI
Install passbolt CLI tool: go-passbolt-CLI
Desktop App
Coming soon see the pre-alpha version here.
Contributing
Contributing to passbolt with code starts by reading Contributing.md. Join the community forum to join discussions about feature requests, translations, development, and more.
Reporting a security issue
If you've found a security-related issue with passbolt, please email security@passbolt.com. Submitting to GitHub makes the vulnerability public, making it easy to exploit. We'll do a public disclosure of the security issue once it's been fixed.
After receiving a report, passbolt will take the following steps:
- Confirmation that the issue has been received and that it's in the process of being addressed.
- Attempt to reproduce the problem and confirm the vulnerability.
- Prepare a patch/fix and associated automated tests.
- Release a new version of all the affected versions.
- Prominently announce the problem in the release notes.
- If requested, give credit to the reporter.
License
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License (AGPL) as published by the Free Software Foundation version 3.
The name "Passbolt" is a registered trademark of Passbolt SA, and Passbolt SA hereby declines to grant a trademark license to "Passbolt" pursuant to the GNU Affero General Public License version 3 Section 7(e), without a separate agreement with Passbolt SA.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see GNU Affero General Public License v3.
Top Related Projects
Bitwarden infrastructure/backend (API, database, Docker, etc).
Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs
Free cross-platform password manager compatible with KeePass
A modern, open source password manager for individuals and teams.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot