Description
Is your feature request related to a problem?
The main problem that the Dex repo contains a lot of different connectors with various features, purposes, original authors, tests coverage, etc.
It makes Dex maintainers support a lot of custom logic that they are unfamiliar with.
Describe the solution you'd like to see
The thing to start with is writing solid design documentation (an enhancement proposal, you may say).
Nowadays, the most popular solution to this kind of problem is to develop a GRPC API interface. Connectors will be distributed as programs that implement this interface (with the separate codebase, tests, maintainers, etc.)
Examples: terraform providers, Kubernetes CSI.
Describe alternatives you've considered
If we want to move Dex forward, there are not so many good alternatives. It is possible to limit the number of connectors in the core repo and stop merging PR with new connectors until stabilizing already accepted ones. However, this looks like something other than a prospective way.
Additional context
The initial idea and its benefits were previously described in a slack thread.
Proposed solutions
- Go plugins allow loading of connectors from .so files #1302
- GRPC connector grpc connector #1020
List of previously proposed connectors
- [Facebook] Facebook Connector #956 (Callback / Refresh)
- [Onelogin] connector: add Onelogin connector #1174 (Callback / Refresh)
- [SQL] SQL Connecor #1626 (Password / Refresh)
- [Vault] For review: Vault integration #2039 (Callback / Password / Refresh)
- [Apple] Add Apple connector #1905 (Callback / Refresh)
- [CloudFoundry] CloundFoundry connector #1624 (Callback)
- [SMTP] A connector for SMTP authentication #2601 (Password)
- [LDAP cluster] feat: ldap cluster connector #1904 (Password / Refresh)
- [Alibaba Dingtalk] feat(connector/dingtalk):Add Alibaba Dingtalk connector #2914 (Callback / Refresh)