-
Couldn't load subscription status.
- Fork 141
Enhancement Proposal: ExternalAuthFilter #4156
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
base: main
Are you sure you want to change the base?
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4156 +/- ##
==========================================
+ Coverage 85.98% 86.00% +0.02%
==========================================
Files 131 131
Lines 14063 14063
Branches 35 35
==========================================
+ Hits 12092 12095 +3
+ Misses 1771 1769 -2
+ Partials 200 199 -1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
you haven't added the case when they can co-exist with filter option? |
| # Enhancement Proposal-4052: External AuthFilter | ||
|
|
||
| - Issue: https://github.com/nginx/nginx-gateway-fabric/issues/4052 | ||
| - Status: Provisional |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reminder: Provisional docs should only have the Goals and non-Goals, no design. This is described in the proposals README.
Once the goals are approved, then we add the design and update to Implementable.
| - As an Application Developer, I want to secure access to my APIs and Backend Applications. | ||
| - As an Application Developer, I want to enforce authenticaiton on specific routes and matches. | ||
|
|
||
| ### Understanding NGINX authentication methods |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These would not apply to the external auth filter, because they are native NGINX capabilities. For external auth, we would use the auth_request module to call out to an external auth server (specifically referring to basic and jwt)
|
NGINX native auth and external auth using the Gateway API are two separate features. Is the intention and requirements of the Auth epic to build both of these features, or just the former? I just want to make sure we're not adding scope that wasn't intended. |
Hey Saylor. To your comment on "NGINX native auth and external auth using the Gateway API are two separate features", this isn't necessarily true. In the case of In the case of |
Auth itself could be seen as a "single feature", but as you stated in the first sentence, the epic is only intending to support our custom Auth API for native auth. So if that's all that the requirements are, then why do we need a design right now for integrating with the Gateway API external auth? That is a different scope of work. |
|
|
||
| [GEP-1494](https://gateway-api.sigs.k8s.io/geps/gep-1494/) defines an API for HTTPRoute to standardize Authentication and Authorization within the Gateway API. | ||
|
|
||
| This proposal aim to provider users of the Gateway API with a native form of Authenticaiton through Gateway API's [HTTPExternalAuthFilter](https://gateway-api.sigs.k8s.io/reference/spec/#httpexternalauthfilter) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| This proposal aim to provider users of the Gateway API with a native form of Authenticaiton through Gateway API's [HTTPExternalAuthFilter](https://gateway-api.sigs.k8s.io/reference/spec/#httpexternalauthfilter) | |
| This proposal aim to provider users of the Gateway API with a native form of Authentication through Gateway API's [HTTPExternalAuthFilter](https://gateway-api.sigs.k8s.io/reference/spec/#httpexternalauthfilter) |
| - Ensure this capability is available only when users enable experimental features in NGF | ||
| - Support only [HTTPAuthConfig](https://gateway-api.sigs.k8s.io/reference/spec/#httpauthconfig) | ||
| - Provide users with a helm chart to deploy, manage and configure NGINX for Authentication use cases. i.e. the External Service | ||
| - Allow users to configure an exteranl IdP such as Keycloak or AzureAD |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - Allow users to configure an exteranl IdP such as Keycloak or AzureAD | |
| - Allow users to configure an external IdP such as Keycloak or AzureAD |
|
|
||
| [GEP-1494](https://gateway-api.sigs.k8s.io/geps/gep-1494/) defines an API for HTTPRoute to standardize Authentication and Authorization within the Gateway API. | ||
|
|
||
| This proposal aim to provider users of the Gateway API with a native form of Authenticaiton through Gateway API's [HTTPExternalAuthFilter](https://gateway-api.sigs.k8s.io/reference/spec/#httpexternalauthfilter) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| This proposal aim to provider users of the Gateway API with a native form of Authenticaiton through Gateway API's [HTTPExternalAuthFilter](https://gateway-api.sigs.k8s.io/reference/spec/#httpexternalauthfilter) | |
| This proposal aims to provide users of the Gateway API with a native form of Authenticaiton through Gateway API's [HTTPExternalAuthFilter](https://gateway-api.sigs.k8s.io/reference/spec/#httpexternalauthfilter) |
|
|
||
| ## Non-Goals | ||
|
|
||
| - Support for [GRPCAuthConfig](https://gateway-api.sigs.k8s.io/reference/spec/#grpcauthconfig) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
layer 4 routes are also out of scope here
Proposed changes
This document proposes a means to integrate with Gateway API GEP-1494.
This defines an standardized API for HTTP Authentication through communication with an External Auth Service.
This service can be an IdP such as Keycloak or AzureAD. It can also be our own deployable Auth Service based on NGINX.
Relates to #4052
Checklist
Before creating a PR, run through this checklist and mark each as complete.
Release notes
If this PR introduces a change that affects users and needs to be mentioned in the release notes,
please add a brief note that summarizes the change.