Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: external connectors #2361

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

nabokihms
Copy link
Member

Signed-off-by: m.nabokikh [email protected]

Overview

This is the very first naive gRPC-based implementation of external connectors support. Two connector types have been added: external password connector and external callback connector.

What this PR does / why we need it

With these changes, it becomes possible to write custom connectors utilizing gRPC API or the SDK for Golang (I have added examples for both types).

Closes #1907

Special notes for your reviewer

  • Dex communicates with external connectors only via localhost because of security concerns.

  • The external-gitlab example of the callback external connector is a copy-paste of the in-tree gitlab connector just to see how easy it will be to convert old connectors/write new ones. However, I'm highly concerned about merging it to master. It seems a lot better to develop some brand new connector in a separate repository.

Does this PR introduce a user-facing change?

Add external connectors support.

Signed-off-by: m.nabokikh <[email protected]>
@sagikazarmark
Copy link
Member

Thanks @nabokihms for working on this!

Without trying to be the bad guy here: I think we are still lacking clarity on a lot of the details that would be nice to understand before going down this road (or any roads).

I opened a separate issue that vaguely explains what my problem is in #2370

In short: I'd like us to write down everything we know (goals, non-goals, scope, etc) so we can make good decisions.

I'm already working on a document for the middleware thing. Do you think @nabokihms you could come up with something for this one?

Basically, I'd like to understand:

  • What functionality do we want to "externalize"?
  • How does the process look like?
  • Can we make it abstract enough so that the implementation doesn't matter? If not, what are the requirements towards the implementations?
  • What are the attack vectors that we might introduce into Dex this way?

It's pretty late here, so we might want to have a discussion at some point instead of me just trying to dump my thoughts in the evening. Hopefully it's somewhat clear what I'd like us to do.

@nabokihms nabokihms mentioned this pull request Aug 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

External connectors
2 participants