-
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
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4156 +/- ##
==========================================
- Coverage 85.99% 85.97% -0.03%
==========================================
Files 131 131
Lines 14063 14063
Branches 35 35
==========================================
- Hits 12093 12090 -3
- Misses 1770 1772 +2
- Partials 200 201 +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
Sorry, you are right. I could have clarified that better. The reason for making this proposal was so that we could have a conversation around weather or not we wanted to go forward with ExternalAuth over our own AuthenticationFilter. There were several conversations around the idea that we should use the Gateway API's implementation over making our own CRDs. I don't personally have a preference either way. I just want to make sure we're having a healthy discussion. Looking back, I realize I could have presented that differently to make that more obvious. Sorry about that 😅 |
|
Closing this for now. |
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.