Netmaker makes networks with WireGuard. Netmaker automates fast, secure, and distributed virtual networks.
Find a file
Vishal Dalwadi 614cf77b5a
NET-1991: Add IDP sync functionality. (#3428)
* feat: api access tokens

* revoke all user tokens

* redefine access token api routes, add auto egress option to enrollment keys

* add server settings apis, add db table for settigs

* handle server settings updates

* switch to using settings from DB

* fix sever settings migration

* revet force migration for settings

* fix server settings database write

* fix revoked tokens to be unauthorized

* remove unused functions

* convert access token to sql schema

* switch access token to sql schema

* fix merge conflicts

* fix server settings types

* bypass basic auth setting for super admin

* add TODO comment

* feat(go): add types for idp package;

* feat(go): import azure sdk;

* feat(go): add stub for google workspace client;

* feat(go): implement azure ad client;

* feat(go): sync users and groups using idp client;

* publish peer update on settings update

* feat(go): read creds from env vars;

* feat(go): add api endpoint to trigger idp sync;

* fix(go): sync member changes;

* fix(go): handle error;

* fix(go): set correct response type;

* feat(go): support disabling user accounts;

1. Add api endpoints to enable and disable user accounts.
2. Add checks in authenticators to prevent disabled users from logging in.
3. Add checks in middleware to prevent api usage by disabled users.

* feat(go): use string slice for group members;

* feat(go): sync user account status from idp;

* feat(go): import google admin sdk;

* feat(go): add support for google workspace idp;

* feat(go): initialize idp client on sync;

* feat(go): sync from idp periodically;

* feat(go): improvements for google idp;

1. Use the impersonate package to authenticate.
2. Use Pages method to get all data.

* chore(go): import style changes from migration branch;

1. Singular file names for table schema.
2. No table name method.
3. Use .Model instead of .Table.
4. No unnecessary tagging.

* remove nat check on egress gateway request

* Revert "remove nat check on egress gateway request"

This reverts commit 0aff12a189.

* feat(go): add db middleware;

* feat(go): restore method;

* feat(go): add user access token schema;

* fix user auth api:

* re initalise oauth and email config

* feat(go): fetch idp creds from server settings;

* feat(go): add filters for users and groups;

* feat(go): skip sync from idp if disabled;

* feat(go): add endpoint to remove idp integration;

* feat(go): import all users if no filters;

* feat(go): assign service-user role on sync;

* feat(go): remove microsoft-go-sdk;

* feat(go): add display name field for user;

* fix(go): set account disabled correctly;

* fix(go): update user if display name changes;

* fix(go): remove auth provider when removing idp integration;

* fix(go): ignore display name if empty;

* feat(go): add idp sync interval setting;

* fix(go): error on invalid auth provider;

* fix(go): no error if no user on group delete;

* fix(go): check superadmin using platform role id;

* feat(go): add display name and account disabled to return user as well;

* feat(go): tidy go mod after merge;

* feat(go): reinitialize auth provider and idp sync hook;

* fix(go): merge error;

* fix(go): merge error;

* feat(go): use id as the external provider id;

* fix(go): comments;

* feat(go): add function to return pending users;

* feat(go): prevent external id erasure;

* fix(go): user and group sync errors;

* chore(go): cleanup;

* fix(go): delete only oauth users;

* feat(go): use uuid group id;

* export ipd id to in rest api

* feat(go): don't use uuid for default groups;

* feat(go): migrate group only if id not uuid;

* chore(go): go mod tidy;

---------

Co-authored-by: abhishek9686 <abhi281342@gmail.com>
Co-authored-by: Abhishek K <abhishek@netmaker.io>
Co-authored-by: the_aceix <aceixsmartx@gmail.com>
2025-05-21 13:48:15 +05:30
.github Bump dawidd6/action-download-artifact from 8 to 9 (#3355) 2025-04-30 02:39:00 +04:00
auth NET-1932: Merge egress and internet gateways (#3436) 2025-05-21 12:50:21 +05:30
cli Merge pull request #3441 from gravitl/nmctl-access-token 2025-05-20 09:16:24 +05:30
compose update release versions (#3387) 2025-03-25 11:08:54 +04:00
config NET-1950: Persist Server Settings in the DB (#3419) 2025-04-30 02:34:10 +04:00
controllers NET-1991: Add IDP sync functionality. (#3428) 2025-05-21 13:48:15 +05:30
database NET-1991: Add IDP sync functionality. (#3428) 2025-05-21 13:48:15 +05:30
db NET-2014: Audit Logging (#3455) 2025-05-21 13:13:20 +05:30
docker Simplify and unify apk usage in Dockerfiles (#3407) 2025-04-30 02:55:34 +04:00
docs fix: update documentation links to new docs (#3156) 2024-10-17 14:35:36 +04:00
functions NET-1227: User Mgmt V2 (#3055) 2024-08-20 17:08:56 +05:30
k8s update release versions (#3387) 2025-03-25 11:08:54 +04:00
logger ee license check 2023-04-12 10:45:06 -04:00
logic NET-1991: Add IDP sync functionality. (#3428) 2025-05-21 13:48:15 +05:30
migrate NET-1991: Add IDP sync functionality. (#3428) 2025-05-21 13:48:15 +05:30
models NET-1991: Add IDP sync functionality. (#3428) 2025-05-21 13:48:15 +05:30
mq NET-1950: Persist Server Settings in the DB (#3419) 2025-04-30 02:34:10 +04:00
netclient/ncutils load all nodes into cache 2024-11-27 14:56:24 +04:00
nginx
pro NET-1991: Add IDP sync functionality. (#3428) 2025-05-21 13:48:15 +05:30
schema NET-2014: Audit Logging (#3455) 2025-05-21 13:13:20 +05:30
scripts udpate ip service 2025-04-01 10:04:57 +04:00
servercfg NET-1950: Persist Server Settings in the DB (#3419) 2025-04-30 02:34:10 +04:00
serverctl NET-1933: option to force destroy network (#3311) 2025-02-03 15:19:44 +04:00
test remove agentbackend 2023-02-20 02:22:48 -07:00
tls
utils feat: send gateway dns and private address (#3378) 2025-03-18 13:26:29 +04:00
validation
.dockerignore NET-163: Return 403 instead of 401 (#2326) 2023-05-25 09:40:39 -04:00
.fpm
.gitignore docs(NET-953): update docs spec, gitignore (#2880) 2024-04-09 11:52:00 +05:30
.goreleaser.prerelease.yaml Net 792 remove freebsd (#2735) 2024-01-16 20:19:08 +05:30
.goreleaser.update.yaml cleanup 2023-02-25 08:03:16 -05:00
.goreleaser.yaml Net 792 remove freebsd (#2735) 2024-01-16 20:19:08 +05:30
.swaggo add format int64 for swagger doc (#3247) 2024-12-12 09:52:52 +04:00
CONTRIBUTING.md
dev.yaml remove grpc parameters 2023-02-20 09:09:26 -07:00
Dockerfile Simplify and unify apk usage in Dockerfiles (#3407) 2025-04-30 02:55:34 +04:00
Dockerfile-quick Simplify and unify apk usage in Dockerfiles (#3407) 2025-04-30 02:55:34 +04:00
go.mod NET-1991: Add IDP sync functionality. (#3428) 2025-05-21 13:48:15 +05:30
go.sum NET-1991: Add IDP sync functionality. (#3428) 2025-05-21 13:48:15 +05:30
LICENSE.md Change License To Apache (#2597) 2023-09-21 08:26:11 -04:00
main.go NET-2000: Api access tokens (#3418) 2025-04-23 20:21:42 +04:00
main_ee.go NET-1778: scale test code changes (#3203) 2024-12-10 10:15:31 +04:00
README.md update release versions (#3387) 2025-03-25 11:08:54 +04:00
release.md update release versions (#3387) 2025-03-25 11:08:54 +04:00
SECURITY.md Update SECURITY.md 2022-11-02 09:10:50 -04:00
swagger.yaml Update documentation 2025-04-02 15:19:06 2025-04-02 15:19:07 +00:00

ROSS Index - Fastest Growing Open-Source Startups | Runa Capital Y-Combinator

WireGuard® automation from homelab to enterprise

Create Manage Automate
✔️ WireGuard Networks ✔️ Admin UI ✔️ Linux
✔️ Remote Access Gateways ✔️ OAuth ✔️ Docker
✔️ Mesh VPNs ✔️ Private DNS ✔️ Mac
✔️ Site-to-Site ✔️ Access Control Lists ✔️ Windows

Try Netmaker SaaS

If you're looking for a managed service, you can get started with just a few clicks, visit netmaker.io to create your netmaker server.

Self-Hosted Open Source Quick Start

These are the instructions for deploying a Netmaker server on your cloud VM as quickly as possible. For more detailed instructions, visit the Install Docs.

  1. Get a cloud VM with Ubuntu 24.04 and a static public IP.
  2. Allow inbound traffic on port 443,51821 TCP and UDP to the VM firewall in cloud security settings, and for simplicity, allow outbound on All TCP and All UDP.
  3. (recommended) Prepare DNS - Set a wildcard subdomain in your DNS settings for Netmaker, e.g. *.netmaker.example.com, which points to your VM's public IP.
  4. Run the script to setup open source version of Netmaker:

sudo wget -qO /root/nm-quick.sh https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/nm-quick.sh && sudo chmod +x /root/nm-quick.sh && sudo /root/nm-quick.sh

To Install Self-Hosted PRO Version - https://docs.netmaker.io/docs/server-installation/netmaker-professional-setup

After installing Netmaker, check out the Walkthrough and Getting Started guides to learn more about configuring networks. Or, check out some of our other Tutorials for different use cases, including Kubernetes.

Get Support

Why Netmaker + WireGuard?

  • Netmaker automates virtual networks between data centres, clouds, and edge devices, so you don't have to.

  • Kernel WireGuard offers maximum speed, performance, and security.

  • Netmaker is built to scale from small businesses to enterprises.

  • Netmaker with WireGuard can be highly customized for peer-to-peer, site-to-site, Kubernetes, and more.

Community Projects

Disclaimer

WireGuard is a registered trademark of Jason A. Donenfeld.

License

Netmaker's source code and all artifacts in this repository are freely available. All content that resides under the "pro/" directory of this repository, if that directory exists, is licensed under the license defined in "pro/LICENSE". All third party components incorporated into the Netmaker 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 Version 2.0" license as defined below. All details for the licenses used can be found here: LICENSE.md.