Giter VIP home page Giter VIP logo

zitadel's Introduction

Zitadel Logo Zitadel Logo

GitHub Workflow Status (with event) Dynamic YAML Badge GitHub contributors

Are you searching for a user management tool that is quickly set up like Auth0 and open source like Keycloak?

Do you have a project that requires multi-tenant user management with self-service for your customers?

Look no further — ZITADEL is the identity infrastructure, simplified for you.

We provide you with a wide range of out-of-the-box features to accelerate your project, including:

✅ Multi-tenancy with team management
✅ Secure login
✅ Self-service
✅ OpenID Connect
✅ OAuth2.x
✅ SAML2
✅ LDAP
✅ Passkeys / FIDO2
✅ OTP
and an unlimited audit trail is there for you, ready to use.

With ZITADEL, you are assured of a robust and customizable turnkey solution for all your authentication and authorization needs.


🏡 Website 💬 Chat 📋 Docs 🧑‍💻 Blog 📞 Contact

Get started

👉 Quick Start Guide

Deploy ZITADEL (Self-Hosted)

Deploying ZITADEL locally takes less than 3 minutes. Go ahead and give it a try!

See all guides here

If you are interested to get professional support for your self-hosted ZITADEL please reach out to us!

Setup ZITADEL Cloud (SaaS)

If you want to experience a hands-free ZITADEL, you should use ZITADEL Cloud.

ZITADEL Cloud comes with a free tier, providing you with all the same features as the open-source version. Learn more about the pay-as-you-go pricing.

Example applications

Clone one of our example applications or deploy them directly to Vercel.

SDKs

Use our SDKs for your favorite language and framework.

Why choose ZITADEL

We built ZITADEL with a complex multi-tenancy architecture in mind and provide the best solution to handle B2B customers and partners. Yet it offers everything you need for a customer identity (CIAM) use case.

Features

Authentication

Multi-Tenancy

Integration

Self-Service

Deployment

Track upcoming features on our roadmap.

How To Contribute

Find details about how you can contribute in our Contribution Guide

Contributors

Made with contrib.rocks.

Showcase

Quick Start Guide

Secure a React Application using OpenID Connect Authorization Code with PKCE

Quick Start Guide

Login with Passkeys

Use our login widget to allow easy and secure access to your applications and enjoy all the benefits of Passkeys (FIDO 2 / WebAuthN):

Passkeys

Admin Console

Use Console or our APIs to setup organizations, projects and applications.

Console Showcase

Security

You can find our security policy here.

Technical Advisories are published regarding major issues with the ZITADEL platform that could potentially impact security or stability in production environments.

License

here are our exact licensing terms.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See our license for detailed information governing permissions and limitations on use.

zitadel's People

Contributors

adlerhurst avatar bitfactory-sem-denbroeder avatar buehler avatar cmiksche avatar cyb3rd0g1 avatar dakshitha avatar dependabot-preview[bot] avatar dependabot[bot] avatar doncicuto avatar dsiscout avatar eliobischof avatar fabius avatar fforootd avatar flowck avatar hifabienne avatar jessebot avatar juergrinaldi avatar livio-a avatar mffap avatar michaelulrichwaeger avatar muhlemmer avatar peintnermax avatar petrmifek avatar pr0gr8mm3r avatar some-user123 avatar stebenz avatar tafaust avatar thesephirot avatar vigneshsankariyer1234567890 avatar yordis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zitadel's Issues

Refactor Pipeline

Relates to #30

  • Create debug-image
  • Abstract Short-SHA
  • Test NPM Build
  • Configure SEMREL to upload release artifacts
  • Maybe Generate Pre-Release Uploads from feature branches

Outbound Webhook Support

ZITADEL should provide a way to register web hooks for certain events.

For example if a developer wants to receive all user.create events he should be able to define a rule which invokes a endpoint.

OpenID Connect RP Support

We should Provide inbound Federation for OIDC

It would also be great to fix define a list of preconfigured providers which just need a Client-ID Client-Secret
IMHO these should be:

  • Google
  • AzureAD
  • Github
  • Gitlab
  • OIDC Generic

Polices: TBD on which resource these can be applied

Login

use auth command side directly (must not use grpc)

  • Register
  • Check Username
  • Check Password
  • Check OTP
  • Setup OTP
  • Initial PW
  • Init Verify
  • Resend Init Code
  • Email Verify
  • Resend Email Code

Dependabot can't resolve your Go dependency files

Dependabot can't resolve your Go dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

go: github.com/envoyproxy/[email protected]: reading github.com/envoyproxy/protoc-gen-validate/go.mod at revision v0.3.0: unknown revision v0.3.0

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

Policy

How to handle default policies, settings?

Dependabot can't resolve your Go dependency files

Dependabot can't resolve your Go dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

go: github.com/envoyproxy/[email protected]: reading github.com/envoyproxy/protoc-gen-validate/go.mod at revision v0.3.0: unknown revision v0.3.0

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

Domain Verification Feature

Use Case

As customer I want to verify my own domain.

  • Root domain verification e.g caos.ch
  • Sub domain verification e.g sub.caos.ch

Implementation

Polices

Additional Impacts

  • We need to have some kind of migration process available to users already created in the global org. see here -> #7

Refactoring Citadel

@adlerhurst already gathered lots of style guides, so please add missing topics

  • Enums (names and defaults) (Proto: USER_STATE_ACTIVE, Go: UserStateActive)
  • Proto in general (use validator, style guide: https://developers.google.com/protocol-buffers/docs/style)
  • new vs struct (new just for declaration)
  • linting in general
    • error ids (5Kürzel-5Zeichen 'REPO-Zhe73')
    • if / else / else if
  • EventTypes: added/changed 'user.added, user.email.changed'

Project Command Side

  • Project
  • Project Members
  • Project Roles
  • Applications
  • Project Grants
  • Project Grant Members

wrong username

if i try to log in with a wrong username i get a connection error

image

Auth API

  • Auth Command Side
  • Auth Query Side
  • User Commands (Profile, Mail, MFA, ...)
  • User Queries (Profile, Mail, MFA, ...)

IAM Metrics

Useful IAM Metrics

  • Per Read Model Operation Log difference

  • AuthN / Failed AuthN per time

  • OIDC Tokens signed per time

  • Active Sessions

  • In General we should provide a metric per "handler" in form of req/sec

relates to #14 as the operator should consume IAM and DB Metrics -> FYI @stebenz @eliobischof @thesephirot

Isolated Organisation

What is it for

I think there will be customers who like to have the whole user basis at their discretion.
Especially customer accounts this would conflict with the global org..

How to solve

We could use a specific authorize and issuer url parameters to fix route traffic only into this org.
I think we could call this feature isolated org this would only have uniq keys for user within this org.

Management API

  • Org Command Side
  • Org Query Side (#59)
  • Project Command Side
  • Project Query Side
  • User Command Side
  • User Query Side

Email Templates

  • customized email templates for domains
  • render email template
  • GUI

Org Query Side

  • Get Global Org by domain
  • Search Orgs
  • Search Org Members
  • Get Org Member Roles
  • generate domain on query side

restructure zitadel k8s environment generator

restructured generator for domainnames and subdomains.

VARIABLES need to be aligned, there are still citadel and zitadel

e.g:

test/kustomization.yaml:    - CITADEL_AUTHORIZE=https://accounts-test.zitadel.dev/oauth/v2
test/kustomization.yaml:    - CITADEL_CONSOLE=https://console-test.zitadel.dev
test/kustomization.yaml:    - TRACING_PROJECT_ID=caos-citadel-test
test/imageversion.yaml:  name: citadel
test/imageversion.yaml:        - name: citadel
test/imageversion.yaml:          image: docker.pkg.github.com/caos/citadel/citadel:v0.40.13
test/namespace.yaml:  name: test-citadel
test/mappings/auth-grpc-v1.yaml:  host: api-test.zitadel.dev
test/mappings/auth-grpc-v1.yaml:  prefix: /caos.citadel.auth.api.v1.AuthService/
test/mappings/auth-grpc-v1.yaml:  service: api-auth-v1.test-citadel:8080
test/mappings/auth-grpc-v1.yaml:    origins: http://localhost:4200,https://console-test.zitadel.dev
test/mappings/mgmt-grpc-v1.yaml:  host: api-test.zitadel.dev

Policy hosted_domain signup

We should create a policy on the hosted_domain which defines if signup with a corresponding email is still possible -> see caos/citadel#1 , or if it is denied.

Project Query Side

  • Search Projects
  • Search Project Roles
  • Search Project Members
  • Search Applications
  • Search Project Grants
  • Search Project Grant Members

Translation

We should somehow implement translation in backend

Zitadel Console

  • Move Console to Zitadel Project
  • Change some requests (Role)
  • Change some entities (enums, ...)
  • Reload lists if not current object (check sequence)

Changes

  • Project Changes
  • Application Changes
  • User Changes
  • Org Changes

Domain Name Concept

@stebenz @thesephirot @fforootd did discuss a possible DNS Structure and we came up with the following:

Development *.zitadel.app <- for internal testing, deploys the latest from master
-> in development we might use prefix and suffixes as well for feature branches
Preview *.zitadel.dev <- declares for external that it is in fact a test/dev system
Production *.zitadel.ch <- prod, what else

Any Inputs?

pipeline fails in job `release`

[4:47:48 AM] [semantic-release] [@semantic-release/github] › ℹ  Verify GitHub authentication
[4:47:48 AM] [semantic-release] › ✔  Completed step "verifyConditions" of plugin "@semantic-release/github"
[4:47:48 AM] [semantic-release] › ℹ  Start step "verifyConditions" of plugin "@semantic-release/exec"
[4:47:48 AM] [semantic-release] › ✔  Completed step "verifyConditions" of plugin "@semantic-release/exec"
[4:47:48 AM] [semantic-release] › ℹ  Start step "verifyConditions" of plugin "semantic-release-docker"
[4:47:48 AM] [semantic-release] › ✖  Failed step "verifyConditions" of plugin "semantic-release-docker"
[4:47:48 AM] [semantic-release] › ✖  An error occurred while running semantic-release: Error: Environment variable DOCKER_USERNAME is not set
    at module.exports (/usr/local/lib/node_modules/semantic-release-docker/lib/verify.js:6:13)
    at validator (/usr/local/lib/node_modules/semantic-release/lib/plugins/normalize.js:34:30)
    at /usr/local/lib/node_modules/semantic-release/lib/plugins/pipeline.js:37:40
    at next (/usr/local/lib/node_modules/semantic-release/node_modules/p-reduce/index.js:17:9)
    at processTicksAndRejections (internal/process/task_queues.js:97:5) {
  pluginName: 'semantic-release-docker'
}
AggregateError: 
    Error: Environment variable DOCKER_USERNAME is not set
        at module.exports (/usr/local/lib/node_modules/semantic-release-docker/lib/verify.js:6:13)
        at validator (/usr/local/lib/node_modules/semantic-release/lib/plugins/normalize.js:34:30)
        at /usr/local/lib/node_modules/semantic-release/lib/plugins/pipeline.js:37:40
        at next (/usr/local/lib/node_modules/semantic-release/node_modules/p-reduce/index.js:17:9)
    at /usr/local/lib/node_modules/semantic-release/lib/plugins/pipeline.js:54:11
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async Object.pluginsConf.<computed> [as verifyConditions] (/usr/local/lib/node_modules/semantic-release/lib/plugins/index.js:80:11)
    at async run (/usr/local/lib/node_modules/semantic-release/index.js:94:3)
    at async module.exports (/usr/local/lib/node_modules/semantic-release/index.js:259:22)
    at async module.exports (/usr/local/lib/node_modules/semantic-release/cli.js:55:5) {
  name: 'AggregateError'
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.