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

Provide support for integrating with an external auth service. #432

Closed
larkinkevin opened this issue Jun 10, 2018 · 51 comments
Closed

Provide support for integrating with an external auth service. #432

larkinkevin opened this issue Jun 10, 2018 · 51 comments
Assignees
Labels
area/deployment Issues or PRs related to deployment tooling or infrastructure. area/httpproxy Issues or PRs related to the HTTPProxy API. kind/feature Categorizes issue or PR as related to a new feature. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. release-note Denotes a PR that will be considered when it comes time to generate release notes. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. ZD1330

Comments

@larkinkevin
Copy link

larkinkevin commented Jun 10, 2018

  • Ambassador supports authentication via the "AuthService" manifest (and a user-provided external auth service that satisfies a very simple API).
  • It appears that Envoy likes this approach, because they're planning to incorporate it: Fold Ambassador auth functionality into ext_authz envoyproxy/envoy#2828.
  • If/when Envoy provides this functionality, it would be great if Contour could expose it to users.
@ihrwein
Copy link

ihrwein commented Jun 11, 2018

I wanted to raise a similar issue then managed to convince myself that although this feature would be useful it's not aligned with this project's goals (note that I'm just somebody from the Internet who found this project some days ago.).

My reasoning is that different teams can have different authentication requirements. Contour is to have one Ingress that delegates the traffic to team-managed services. Those services can be simple services or API gateways that hides other services and those API gateways would be a better place for authentication. Just my two cents.

@larkinkevin
Copy link
Author

I can certainly see where you're coming from @ihrwein. I just opened this issue to track the feature request (I figured I should at least make the ask).

Will totally understand if the Contour folks decide this is not a feature they want to support (because it's not handled by the Ingress spec).

@rosskukulinski
Copy link
Contributor

Hi @ihrwein and @larkinkevin - thanks for opening this issue. I think this is an interesting feature request and something that could be a useful addition to the new IngressRoute CRD we're heads down on at the moment.

We haven't taken a close look at the APIs exposed via envoyproxy/envoy#2828, but once it lands in an Envoy release, we'll take another peak.

@rosskukulinski rosskukulinski added kind/feature Categorizes issue or PR as related to a new feature. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. labels Jul 24, 2018
@mattmoyer
Copy link

+1 for this feature. I'd love to have some Contour backends protected by the ext_authz filter in the style of an API gateway.

Envoy docs for the feature, since it doesn't look like those have been linked here yet:
https://www.envoyproxy.io/docs/envoy/latest/configuration/http_filters/ext_authz_filter.html

@pims
Copy link
Contributor

pims commented Dec 12, 2018

I’d be happy to contribute a PoC for ext_authz filter configuration if the contour team still believes it's a valuable feature to add.

Are you dead set on having this only available through the new IngressRoute custom CRD or should I also consider how to integrate it with the native ingress definition?

@rosskukulinski
Copy link
Contributor

I think this may also be related to adding similar functionality as to #68

@davecheney davecheney self-assigned this Feb 8, 2019
@davecheney davecheney added this to the 0.11.0 milestone Feb 8, 2019
@davecheney davecheney added priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. blocked/needs-design Categorizes the issue or PR as blocked because it needs a design document. and removed priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. labels Feb 8, 2019
@davecheney davecheney removed their assignment Feb 15, 2019
@davecheney davecheney removed this from the 0.11.0 milestone Mar 11, 2019
@davecheney
Copy link
Contributor

Removing the 0.11 milestone as external auth support is not available in a shipping envoy 1.9

@pims
Copy link
Contributor

pims commented Mar 11, 2019

@davecheney Envoy 1.9.0 released on Dec 20, 2018 has support for ext_authz.

https://github.com/envoyproxy/envoy/blob/v1.9.0/docs/root/configuration/http_filters/ext_authz_filter.rst

Am I missing something?

@shabx shabx added the ZD1330 label Mar 11, 2019
@davecheney
Copy link
Contributor

davecheney commented Mar 11, 2019 via email

@aslafy-z
Copy link

Any chance this goes back to 0.11.0 milestone @davecheney?

@davecheney
Copy link
Contributor

I've readded the 0.11 milestone, but no promises, as usual, we're resource constrained and once we decide on a release date for 0.11, there may not be time to implement it.

@davecheney davecheney added this to the 0.11.0 milestone Mar 12, 2019
@davecheney davecheney added priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. and removed priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. labels Mar 12, 2019
@shabx
Copy link

shabx commented Mar 27, 2019

Adding what customer shared in the ticket they have open for this issue.
They currently have teams using the NGINX External Authentication annotation that allows authentication against a pod running in GKP.
The documentation is at
https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md#external-authentication

@davecheney davecheney modified the milestones: 0.11.0, 0.12.0 Apr 8, 2019
@davecheney
Copy link
Contributor

Due to the need to ship Contour 0.11 to address a security issue in Envoy 1.9.0 this issus has been bumped to 0.12.

@shabx this issue has been reassigned to 0.12, however I feel that its likely that when we rationalise the backlog for 0.12 (there is far too much in there for our team) this feature will be removed from the milestone until there is a design document for it.

@jpeach jpeach moved this from Parking Lot 1 to In progress in Contour Project Board Jul 21, 2020
@jpeach jpeach removed this from the Backlog milestone Jul 21, 2020
@jpeach jpeach added area/deployment Issues or PRs related to deployment tooling or infrastructure. area/httpproxy Issues or PRs related to the HTTPProxy API. release-note Denotes a PR that will be considered when it comes time to generate release notes. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. and removed blocked/needs-design Categorizes the issue or PR as blocked because it needs a design document. labels Jul 21, 2020
@jpeach
Copy link
Contributor

jpeach commented Jul 22, 2020

Blocked by:

jpeach added a commit to jpeach/contour that referenced this issue Jul 22, 2020
This updates projectcontour#432.
This updates projectcontour#2459.
This updates projectcontour#2325.

Signed-off-by: James Peach <jpeach@vmware.com>
jpeach added a commit that referenced this issue Jul 22, 2020
This updates #432.
This updates #2459.
This updates #2325.

Signed-off-by: James Peach <jpeach@vmware.com>
@manast
Copy link

manast commented Sep 7, 2020

In terms of JWT authentication, Envoy directly supports verifying JWT tokens, without going to an external service. This is nice for performance, avoiding the overhead, on every HTTP request, of making another HTTP request to verify the auth. The nginx plus ingress controller also supports this method (direct JWT verification). Personally I'd like to see that as an option here, and not have to rely on a generic external auth endpoint through which all requests are routed.

That seems like a different feature, or if you like a refinement that can be implemented later. As for now, the external authorization even if not optimal in all cases would help in solving many use cases that are kind of impossible to achieve today.

@manast
Copy link

manast commented Sep 7, 2020

@jpeach Should I open a separate issue for implementing external_auth on TCP or would this one include it already? And close this one in such case #2855

https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/ext_authz_filter#config-network-filters-ext-authz

@jpeach
Copy link
Contributor

jpeach commented Sep 7, 2020

@jpeach Should I open a separate issue for implementing external_auth on TCP or would this one include it already?

@manast Yeh, could you please file a separate issue? This is scoped only to HTTP.

@manast
Copy link

manast commented Sep 7, 2020

@jpeach ok, done: #2888

@sunjayBhatia
Copy link
Member

Closing this issue as we have linked more granular issues open

Contour Project Board automation moved this from In progress to 1.13 Release Feb 4, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/deployment Issues or PRs related to deployment tooling or infrastructure. area/httpproxy Issues or PRs related to the HTTPProxy API. kind/feature Categorizes issue or PR as related to a new feature. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. release-note Denotes a PR that will be considered when it comes time to generate release notes. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. ZD1330
Projects
None yet
Development

No branches or pull requests