You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/proposals/authentication-filter.md
+13-19Lines changed: 13 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,15 +25,15 @@ This new filter should eventually expose all forms of authentication available t
25
25
26
26
## Introduction
27
27
28
-
This document focuses expliclty on Authentication (AuthN) and not Authorization (AuthZ). Authentication (AuthN) defines the verification of identiy. It asks the question, "Who are you?". This is different from Authorization (AuthZ), which preceeds Authentication. It asks the question, "What are you allowed to do".
28
+
This document focuses explicitly on Authentication (AuthN) and not Authorization (AuthZ). Authentication (AuthN) defines the verification of identity. It asks the question, "Who are you?". This is different from Authorization (AuthZ), which preceeds Authentication. It asks the question, "What are you allowed to do".
29
29
30
30
This document also focus on HTTP Basic Authentication and JWT Authentication. Other authentication methods such as OpenID Connect (OIDC) are mentioned, but are not part of the CRD design. These will be covered in future design and implementation tasks.
31
31
32
32
33
33
## Use Cases
34
34
35
35
- As an Application Developer, I want to secure access to my APIs and Backend Applications.
36
-
- As an Application Developer, I want to enforce authenticaiton on specific routes and matches.
36
+
- As an Application Developer, I want to enforce authentication on specific routes and matches.
37
37
38
38
### Understanding NGINX authentication methods
39
39
@@ -46,15 +46,15 @@ This document also focus on HTTP Basic Authentication and JWT Authentication. Ot
46
46
## API, Customer Driven Interfaces, and User Experience
47
47
48
48
This portion of the proposal will cover API design and interaction experience for use of Basic Auth and JWT.
49
-
This portioan also contains:
49
+
This portion also contains:
50
50
51
51
1. The Golang API
52
52
2. Example spec for Basic Auth
53
-
- Example HTTPRoutes and NINGX configuration
53
+
- Example HTTPRoutes and NGINX configuration
54
54
3. Example spec for JWT Auth
55
55
- Example HTTPRoutes
56
56
- Examples for Local & Remote JWKS configration
57
-
- Example NINGX configuration for both Local & Remote JWKS
57
+
- Example NGINX configuration for both Local & Remote JWKS
- This header explicitly set the body as plan text. This prevents browsers from treating the response as HTML or JavaScript, and is effective at mitigating Cross-side scrpting (XSS) through error pages
1195
+
- This header explicitly set the body as plain text. This prevents browsers from treating the response as HTML or JavaScript, and is effective at mitigating Cross-side scrpting (XSS) through error pages
1200
1196
1201
1197
- X-Content-Type-Options: "nosniff"
1202
1198
- This header prevents content type confusion. This occurrs when browsers guesses HTML & JavaScript, and executes it despite a benign type.
1203
1199
1204
1200
- Cache-Control: "no-store"
1205
1201
- This header informs browsers and proxies not to cache the response. Avoids sensitive, auth-related content, from being being stored and served later to unintended recipients.
1206
1202
1207
-
- Pragma: "no-cache"
1208
-
- This header is commonly paired with `Cache-Control: "no-store"` for broad coverage. It acts as an additional signal for older intermediaries that do not honor Cache-Control.
1209
1203
1210
1204
### Validation
1211
1205
1212
-
When referencing an `AuthenticationFilter` in either a HTTPRoute or GRPCRoute, it is important that we ensure all configurable fields are validated, and that the resulting NGINX configuration is correct and secure
1206
+
When referencing an `AuthenticationFilter` in either a HTTPRoute or GRPCRoute, it is important that we ensure all configurable fields are validated, and that the resulting NGINX configuration is correct and secure.
1213
1207
1214
1208
All fields in the `AuthenticationFilter` will be validated with Open API Schema.
1215
1209
We should also include [CEL](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation-rules) validation where required.
1216
1210
1217
1211
We should validated that only one `AuthenticationFilter` is referenced per-rule. Multiple references to an `AuthenticationFilter` in a single rule should result in an `Invalid` HTTPRoute/GRPCRoute, and the resource should be `Rejected`.
1218
1212
1219
-
an `AuthenticationFilter` that sets a `onFailure.statusCode` to anything other than `401` or `403` should be rejected. This relates to the "Auth failure behaviour" section in the Security Condierations section.
1213
+
An `AuthenticationFilter` that sets a `onFailure.statusCode` to anything other than `401` or `403` should be rejected. This relates to the "Auth failure behaviour" section in the Security Considerations section.
1220
1214
1221
1215
## Alternatives
1222
1216
@@ -1225,15 +1219,15 @@ The Gateway API defines a means to standardise authentication through use of the
1225
1219
This allows users to reference an external authentication services, such as Keycloak, to handle the authentication requests.
1226
1220
While this API is available in the experimental channel, it is subject to change.
1227
1221
1228
-
Our decision to go forward with our own `AuthenticationFilter` was to ensure we could quckly provide authenticaiton to our users while allowing us to closley monitor progress of the ExternalAuthFilter.
1222
+
Our decision to go forward with our own `AuthenticationFilter` was to ensure we could quickly provide authentication to our users while allowing us to closely monitor progress of the ExternalAuthFilter.
1229
1223
1230
1224
It is certainly possible for us to provide an External Authentication Services that leverages NGINX and is something we can further investigate as the API progresses.
1231
1225
1232
1226
## Additional considerations
1233
1227
1234
1228
### Documenting filter behavour
1235
1229
1236
-
In regards to documentation of filter behavour with the `AuthenticationFilter`, the Gateway API documentation on filters states the following:
1230
+
In regards to documentation of filter behaviour with the `AuthenticationFilter`, the Gateway API documentation on filters states the following:
1237
1231
1238
1232
```text
1239
1233
Wherever possible, implementations SHOULD implement filters in the order they are specified.
0 commit comments