SAML 连接器已无人维护,可能存在认证绕过风险;不同 connector 对 refresh token 和 groups claim 的支持不一致,例如 SAML 不签发 refresh token;connector 分 stable/beta/alpha,alpha 可能未经核心维护者测试且会有不兼容变更

dex
dexidpApache-2.0活跃维护基于 Go 的 OpenID Connect 和 OAuth 2.0 身份提供者,通过可插拔连接器对接多种上游身份源,为 Kubernetes 等场景提供统一认证入口。
OpenID Connect (OIDC) identity and OAuth 2.0 provider with pluggable connectors
README 里没有找到可直接复制的安装命令,请到 README 或官方文档查看安装方式。
README 未说明
用 OpenID Connect 给应用统一做身份认证,并通过可插拔连接器对接 LDAP、SAML、GitHub 等上游身份源
基于 Go 的 OpenID Connect 和 OAuth 2.0 身份提供者,通过可插拔连接器对接多种上游身份源,为 Kubernetes 等场景提供统一认证入口。
核心能力
- 签发由 dex 签名的 JWT 格式 ID Token
- 用 connector 把认证委托给 LDAP、SAML、GitHub 等上游
- 客户端只需实现一次 OIDC 即可对接多种后端
- 可作为 Kubernetes API Server 的 OIDC 认证器
- 支持以 CRD 形式原生运行在 Kubernetes 上
容易踩的坑
- v2.46.1最新正式版2026-10-21 · 2026-10-21 14:33 UTC
What's Changed
Dependency Updates ⬆️
- Backport 5093: build: distrust compromised eMudhra intermediates in the image by @sagikazarmark in https://github.com/dexidp/dex/pull/5095
Full Changelog: https://github.com/dexidp/dex/compare/v2.46.0...v2.46.1
- v2.46.02026-10-07 · 2026-10-07 23:17 UTC
查看更新说明
What's Changed
Exciting New Features 🎉
- feat(oauth2): add client credentials flow with opt-in config flag by @matzegebbe in https://github.com/dexidp/dex/pull/4583
- feat(connector): connectors for grants by @nabokihms in https://github.com/dexidp/dex/pull/4619
- feat(client): add allowed connectors field to client configuration by @nabokihms in https://github.com/dexidp/dex/pull/4610
- feat(cel): implement CEL compiler with library by @nabokihms in https://github.com/dexidp/dex/pull/4607
- DEP: Auth Sessions - Introduce by @nabokihms in https://github.com/dexidp/dex/pull/4561
- Two-Factor authentication (TOTP) by @nabokihms in https://github.com/dexidp/dex/pull/3712
- feat: add WebAuthn support by @nabokihms in https://github.com/dexidp/dex/pull/4704
- feat: add SSO sharing policy by @nabokihms in https://github.com/dexidp/dex/pull/4705
- feat: Add Kerberos support by @Jabejixo in https://github.com/dexidp/dex/pull/4640
Enhancements 🚀
- fix: clean up in-memory connector before create by @loafoe in https://github.com/dexidp/dex/pull/4529
- feat: Disallow unknown config fields by @nabokihms in https://github.com/dexidp/dex/pull/4531
- feat: saml support refresh tokens by @Jabejixo in https://github.com/dexidp/dex/pull/4565
- feat(gitlab): implement TokenIdentity method by @nabokihms in https://github.com/dexidp/dex/pull/4606
- feat(tests): add MySQL 8 support in CI and tests by @nabokihms in https://github.com/dexidp/dex/pull/4617
- test: add concurrency tests for storage implementations by @nabokihms in https://github.com/dexidp/dex/pull/4631
- feat: update CSS for improved theming and button styles by @nabokihms in https://github.com/dexidp/dex/pull/4634
- feat: add PKCE configuration to OAuth2 settings by @nabokihms in https://github.com/dexidp/dex/pull/4638
- DEP: CEL integration by @nabokihms in https://github.com/dexidp/dex/pull/4601
- feat: add UserIdentity entity and CRUD operations by @nabokihms in https://github.com/dexidp/dex/pull/4643
- feat(logger): add excludeFields config for PII redaction by @mark-liu in https://github.com/dexidp/dex/pull/4621
- Pin GitHub API version in requests by @utafrali in https://github.com/dexidp/dex/pull/4647
- feat: implement user identity creation and persisting consent by @nabokihms in https://github.com/dexidp/dex/pull/4645
- feat: implement AuthSession CRUD operations by @nabokihms in https://github.com/dexidp/dex/pull/4646
- feat(ldap): allow specifying multiple attributes on username input by @yardenshoham in https://github.com/dexidp/dex/pull/4061
- feat: Create AuthSessions and set cookies by @nabokihms in https://github.com/dexidp/dex/pull/4650
- DEP for Identity Assertion JWT Authorization Grant (ID-JAG) / requested_token_type urn:ietf:params:oauth:token-type:id-jag by @kanywst in https://github.com/dexidp/dex/pull/4600
- feat: Add OIDC conformance testing scripts and configuration by @nabokihms in https://github.com/dexidp/dex/pull/4663
- feat: add auth_time, prompt, and max_age fields by @nabokihms in https://github.com/dexidp/dex/pull/4662
- feat: implement id_token_hint by @nabokihms in https://github.com/dexidp/dex/pull/4670
- feat: Add AuthSession GC by @nabokihms in https://github.com/dexidp/dex/pull/4667
- feat: use protobuf for session cookie by @nabokihms in https://github.com/dexidp/dex/pull/4675
- feat: support ES256 local signer by @space-arens in https://github.com/dexidp/dex/pull/4682
- feat: cookie encryption support by @nabokihms in https://github.com/dexidp/dex/pull/4676
- feat: prompt select_login by @nabokihms in https://github.com/dexidp/dex/pull/4678
- feat: add a jti per default by @bufferoverflow in https://github.com/dexidp/dex/pull/4695
- feat: add home page with user session info by @nabokihms in https://github.com/dexidp/dex/pull/4677
- feat: implement OIDC RP-Initiated logout by @nabokihms in https://github
- v2.45.12026-03-03 · 2026-03-03 13:43 UTC
查看更新说明
Bug Fixes 🐛
- Quote
groupsreserved word in query replacer to fix MySQL 8.0+ storage migration (#4580) - Update
authproxyandoauthto match CallbackConnector interface (#4589)
Full Changelog: https://github.com/dexidp/dex/compare/v2.45.0...v2.45.1
- Quote
- v2.45.02026-02-23 · 2026-02-23 15:08 UTC
查看更新说明
Know Before Upgrade
- The major version of
gomplatehas been bumped to v5.0.0, which includes breaking changes. Here is the full list. - There are two known CVEs in the
gomplatebinary -CVE-2025-68121andCVE-2026-25934.gomplateis only used for preprocessing configuration files and is optional. Once the CVEs are fixed upstream, the version of gomplate in the dex image will be updated accordingly. - The
ContinueOnConnectorFailurefeature flag is now enabled by default. To disable it, use the following environment variable:DEX_CONTINUE_ON_CONNECTOR_FAILURE=false. - Pre-release versions of dex now use pseudo-versioning for identifying releases. Unreleased versions will follow the pattern
v2.minor+1.0-yyyymmdd-commithash.
What's Changed
Exciting New Features 🎉
- Add support to PKCE in OIDC connector by @johnvan7 in https://github.com/dexidp/dex/pull/3777
- Add Vault signer for JWT by @nabokihms in https://github.com/dexidp/dex/pull/4512
- Support groups and preferred_username for static passwords by @Jabejixo in https://github.com/dexidp/dex/pull/4456
- Add name and email_verified fields for static passwords by @Jabejixo in https://github.com/dexidp/dex/pull/4526
Enhancements 🚀
- Example app pkce by @nabokihms in https://github.com/dexidp/dex/pull/4284
- Only wrap IPv6 addresses in brackets by @rene-dekker in https://github.com/dexidp/dex/pull/4388
- Update distroless base image to debian13 by @loosebazooka in https://github.com/dexidp/dex/pull/4453
- Hide internal server error details from users by @Jabejixo in https://github.com/dexidp/dex/pull/4457
- Gitlab support custom rootCAData by @Jabejixo in https://github.com/dexidp/dex/pull/4496
- Enable
ContinueOnConnectorFailurefeature flag by @manojVivek in https://github.com/dexidp/dex/pull/4495 - Extend example configs for idEnv and public by @cardoe in https://github.com/dexidp/dex/pull/4443
- Add unprivileged user setup in Dockerfile by @nabokihms in https://github.com/dexidp/dex/pull/4517
- Add conformance tests for Vault signer integration by @nabokihms in https://github.com/dexidp/dex/pull/4520
- Add CRD handling behavior and configuration options by @nabokihms in https://github.com/dexidp/dex/pull/4543
- Enhance git-version script to generate pseudo-versions by @nabokihms in https://github.com/dexidp/dex/pull/4553
- Validate redirect URIs and safely append parameters by @nabokihms in https://github.com/dexidp/dex/pull/4559
- Refactor example-app with a new config by @nabokihms in https://github.com/dexidp/dex/pull/4569
- Implement device code flow in example-app by @nabokihms in https://github.com/dexidp/dex/pull/4570
Bug Fixes 🐛
- Do not wrap Kubernetes Address in brackets by @nabokihms in https://github.com/dexidp/dex/pull/4363
- Device callback URL needs to handle a / by @cardoe in https://github.com/dexidp/dex/pull/4448
- Suppress deprecation warning for userAttr when not set by @nabokihms in https://github.com/dexidp/dex/pull/4539
- Use correct id value for label by @loganripplinger in https://github.com/dexidp/dex/pull/4541
- Respond with forbidden if failed to authenticate by @aljoshare in https://github.com/dexidp/dex/pull/4200
Dependency Updates ⬆️
- build(deps): bump github.com/dexidp/dex/api/v2 from 2.3.0 to 2.4.0 in /examples by @dependabot[bot] in https://github.com/dexidp/dex/pull/4299
- build(deps): bump actions/setup-go from 5.5.0 to 6.0.0 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4304
- build(deps): bump aquasecurity/trivy-action from 0.33.0 to 0.33.1 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4305
- build(deps): bump golang from 1.25.0-alpine3.22 to 1.25.1-alpine3.22 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4307
- build(deps): bump distroless/static-debian12 from `a9f88e0
- The major version of
- v2.44.02025-09-01 · 2025-09-01 13:23 UTC
查看更新说明
What's Changed
Enhancements 🚀
- Allow server startup with partial connector failures by @manojVivek in https://github.com/dexidp/dex/pull/4159
- Add recursive LDAP parent group search (AD-style hierarchy across all LDAPs) by @EthanDieterich in https://github.com/dexidp/dex/pull/4113
- feat: Add ModifyGroupNames claimMutation to oidc connector by @peschmae in https://github.com/dexidp/dex/pull/4144
- authproxy connector: add support for specifying group header separator by @a-buck in https://github.com/dexidp/dex/pull/3745
- fix: join issuer URL with discovery path without extra slash after issuer URL by @vizv in https://github.com/dexidp/dex/pull/4263
- feat: grpc api list clients by @daemonfire300 in https://github.com/dexidp/dex/pull/4202
Bug Fixes 🐛
- :bug: remove extra method="get" from device-code template by @tuminoid in https://github.com/dexidp/dex/pull/4145
- [oidc] pass httpClient to the TokenIdentity context by @marriva in https://github.com/dexidp/dex/pull/4223
- Resolve CVE by updating gomplate to 4.3.3 by @philBrown in https://github.com/dexidp/dex/pull/4224
- fix: device code should not require scope by @cardoe in https://github.com/dexidp/dex/pull/4203
- fix: device code pending HTTP response by @cardoe in https://github.com/dexidp/dex/pull/4204
- Allow compilation without CGO by @nabokihms in https://github.com/dexidp/dex/pull/4266
Dependency Updates ⬆️
- Resolve CVE by updating gomplate to 4.3.2 by @nathanlaceyraft in https://github.com/dexidp/dex/pull/4146
- build(deps): bump actions/attest-build-provenance from 2.3.0 to 2.4.0 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4180
- build(deps): bump golang.org/x/net from 0.40.0 to 0.41.0 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4171
- build(deps): bump google.golang.org/grpc from 1.72.1 to 1.73.0 in /examples by @dependabot[bot] in https://github.com/dexidp/dex/pull/4174
- build(deps): bump github/codeql-action from 3.28.18 to 3.29.0 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4179
- build(deps): bump aquasecurity/trivy-action from 0.30.0 to 0.31.0 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4167
- build(deps): bump ossf/scorecard-action from 2.4.1 to 2.4.2 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4162
- build(deps): bump docker/build-push-action from 6.17.0 to 6.18.0 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4155
- build(deps): bump distroless/static-debian12 from
188ddfbto627d6c5by @dependabot[bot] in https://github.com/dexidp/dex/pull/4181 - build(deps): bump sigstore/cosign-installer from 3.8.2 to 3.9.0 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4187
- build(deps): bump google.golang.org/api from 0.233.0 to 0.238.0 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4186
- build(deps): bump docker/setup-buildx-action from 3.10.0 to 3.11.0 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4185
- build(deps): bump anchore/sbom-action from 0.20.0 to 0.20.1 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4184
- build(deps): bump github.com/go-sql-driver/mysql from 1.9.2 to 1.9.3 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4183
- build(deps): bump the etcd group with 2 updates by @dependabot[bot] in https://github.com/dexidp/dex/pull/4175
- build(deps): bump alpine from 3.21.3 to 3.22.0 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4163
- build(deps): bump google.golang.org/grpc from 1.72.1 to 1.73.0 in /api/v2 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4170
- build(deps): bump docker/setup-buildx-action from 3.11.0 to 3.11.1 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4189
- build(deps): bump mheap/github-action-required-labels from 5.5.0 to 5.5.1 by @dependabot[bot] in https://github.com/dexidp/dex/pull/4190
- build(deps): bump googl
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
dex - A federated OpenID Connect provider

Dex is an identity service that uses OpenID Connect to drive authentication for other apps.
Dex acts as a portal to other identity providers through "connectors." This lets dex defer authentication to LDAP servers, SAML providers, or established identity providers like GitHub, Google, and Active Directory. Clients write their authentication logic once to talk to dex, then dex handles the protocols for a given backend.
ID Tokens
ID Tokens are an OAuth2 extension introduced by OpenID Connect and dex's primary feature. ID Tokens are JSON Web Tokens (JWTs) signed by dex and returned as part of the OAuth2 response that attests to the end user's identity. An example JWT might look like:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjlkNDQ3NDFmNzczYjkzOGNmNjVkZDMyNjY4NWI4NjE4MGMzMjRkOTkifQ.eyJpc3MiOiJodHRwOi8vMTI3LjAuMC4xOjU1NTYvZGV4Iiwic3ViIjoiQ2djeU16UXlOelE1RWdabmFYUm9kV0kiLCJhdWQiOiJleGFtcGxlLWFwcCIsImV4cCI6MTQ5Mjg4MjA0MiwiaWF0IjoxNDkyNzk1NjQyLCJhdF9oYXNoIjoiYmk5NmdPWFpTaHZsV1l0YWw5RXFpdyIsImVtYWlsIjoiZXJpYy5jaGlhbmdAY29yZW9zLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJncm91cHMiOlsiYWRtaW5zIiwiZGV2ZWxvcGVycyJdLCJuYW1lIjoiRXJpYyBDaGlhbmcifQ.OhROPq_0eP-zsQRjg87KZ4wGkjiQGnTi5QuG877AdJDb3R2ZCOk2Vkf5SdP8cPyb3VMqL32G4hLDayniiv8f1_ZXAde0sKrayfQ10XAXFgZl_P1yilkLdknxn6nbhDRVllpWcB12ki9vmAxklAr0B1C4kr5nI3-BZLrFcUR5sQbxwJj4oW1OuG6jJCNGHXGNTBTNEaM28eD-9nhfBeuBTzzO7BKwPsojjj4C9ogU4JQhGvm_l4yfVi0boSx8c0FX3JsiB0yLa1ZdJVWVl9m90XmbWRSD85pNDQHcWZP9hR6CMgbvGkZsgjG32qeRwUL_eNkNowSBNWLrGNPoON1gMg
ID Tokens contains standard claims assert which client app logged the user in, when the token expires, and the identity of the user.
{
"iss": "http://127.0.0.1:5556/dex",
"sub": "CgcyMzQyNzQ5EgZnaXRodWI",
"aud": "example-app",
"exp": 1492882042,
"iat": 1492795642,
"at_hash": "bi96gOXZShvlWYtal9Eqiw",
"email": "[email protected]",
"email_verified": true,
"groups": [
"admins",
"developers"
],
"name": "Jane Doe"
}
Because these tokens are signed by dex and contain standard-based claims other services can consume them as service-to-service credentials. Systems that can already consume OpenID Connect ID Tokens issued by dex include:
For details on how to request or validate an ID Token, see "Writing apps that use dex".
Kubernetes and Dex
Dex runs natively on top of any Kubernetes cluster using Custom Resource Definitions and can drive API server authentication through the OpenID Connect plugin. Clients, such as kubelogin and kubectl, can act on behalf of users who can login to the cluster through any identity provider dex supports.
- More docs for running dex as a Kubernetes authenticator can be found here.
- You can find more about companies and projects which use dex, here.
Connectors
When a user logs in through dex, the user's identity is usually stored in another user-management system: a LDAP directory, a GitHub org, etc. Dex acts as a shim between a client app and the upstream identity provider. The client only needs to understand OpenID Connect to query dex, while dex implements an array of protocols for querying other user-management systems.

A "connector" is a strategy used by dex for authenticating a user against another identity provider. Dex implements connectors that target specific platforms such as GitHub, LinkedIn, and Microsoft as well as established protocols like LDAP and SAML.
Depending on the connectors limitations in protocols can prevent dex from issuing refresh tokens or returning group membership claims. For example, because SAML doesn't provide a non-interactive way to refresh assertions, if a user logs in through the SAML connector dex won't issue a refresh token to its client. Refresh token support is required for clients that require offline access, such as kubectl.
Dex implements the following connectors:
| Name | supports refresh tokens | supports groups claim | supports preferred_username claim | status | notes |
|---|---|---|---|---|---|
| LDAP | yes | yes | yes | stable | |
| GitHub | yes | yes | yes | stable | |
| SAML 2.0 | no | yes | no | stable | WARNING: Unmaintained and likely vulnerable to auth bypasses (#1884) |
| GitLab | yes | yes | yes | beta | |
| OpenID Connect | yes | yes | yes | beta | Includes Salesforce, Azure, etc. |
| OAuth 2.0 | no | yes | yes | alpha | |
| yes | yes | yes | alpha | ||
| yes | no | no | beta | ||
| Microsoft | yes | yes | no | beta | |
| AuthProxy | no | yes | no | alpha | Authentication proxies such as Apache2 mod_auth, etc. |
| Bitbucket Cloud | yes | yes | no | alpha | |
| OpenShift | yes | yes | no | alpha | |
| Atlassian Crowd | yes | yes | yes * | beta | preferred_username claim must be configured through config |
| Gitea | yes | no | yes | beta | |
| OpenStack Keystone | yes | yes | no | alpha |
Stable, beta, and alpha are defined as:
- Stable: well tested, in active use, and will not change in backward incompatible ways.
- Beta: tested and unlikely to change in backward incompatible ways.
- Alpha: may be untested by core maintainers and is subject to change in backward incompatible ways.
All changes or deprecations of connector features will be announced in the release notes.
Documentation
See the official documentation for getting started, configuration, and usage guides.
Reporting a vulnerability
Please see our security policy for details about reporting vulnerabilities.
Getting help
- For feature requests and bugs, file an issue.
- For general discussion about both using and developing Dex:
- join the #dexidp on the CNCF Slack
- open a new discussion
Contributing
Please see CONTRIBUTING.md for development setup, guidelines, and how to submit pull requests.
License
The project is licensed under the Apache License, Version 2.0.