Skip to content

Commit 38dd8f7

Browse files
committed
Fix typos and grammer
1 parent da1b17e commit 38dd8f7

File tree

1 file changed

+13
-19
lines changed

1 file changed

+13
-19
lines changed

docs/proposals/authentication-filter.md

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ This new filter should eventually expose all forms of authentication available t
2525

2626
## Introduction
2727

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".
2929

3030
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.
3131

3232

3333
## Use Cases
3434

3535
- 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.
3737

3838
### Understanding NGINX authentication methods
3939

@@ -46,15 +46,15 @@ This document also focus on HTTP Basic Authentication and JWT Authentication. Ot
4646
## API, Customer Driven Interfaces, and User Experience
4747

4848
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:
5050

5151
1. The Golang API
5252
2. Example spec for Basic Auth
53-
- Example HTTPRoutes and NINGX configuration
53+
- Example HTTPRoutes and NGINX configuration
5454
3. Example spec for JWT Auth
5555
- Example HTTPRoutes
5656
- Examples for Local & Remote JWKS configration
57-
- Example NINGX configuration for both Local & Remote JWKS
57+
- Example NGINX configuration for both Local & Remote JWKS
5858
- Example of additioanl optional fields
5959

6060
### Golang API
@@ -639,7 +639,6 @@ http {
639639
add_header Content-Type "text/plain; charset=utf-8" always;
640640
add_header X-Content-Type-Options "nosniff" always;
641641
add_header Cache-Control "no-store" always;
642-
add_header Pragma "no-cache" always;
643642
return 401 'Unauthorized';
644643
}
645644
}
@@ -837,7 +836,6 @@ http {
837836
add_header Content-Type "text/plain; charset=utf-8" always;
838837
add_header X-Content-Type-Options "nosniff" always;
839838
add_header Cache-Control "no-store" always;
840-
add_header Pragma "no-cache" always;
841839
return 403 'Forbidden';
842840
}
843841
}
@@ -930,7 +928,6 @@ http {
930928
add_header Content-Type "text/plain; charset=utf-8" always;
931929
add_header X-Content-Type-Options "nosniff" always;
932930
add_header Cache-Control "no-store" always;
933-
add_header Pragma "no-cache" always;
934931
return 401 'Unauthorized';
935932
}
936933
}
@@ -1010,7 +1007,7 @@ spec:
10101007

10111008
### Attachment
10121009

1013-
Filters must be attached to a HTTPRoute at the `rules.matces` level.
1010+
Filters must be attached to a HTTPRoute at the `rules.matches` level.
10141011
This means that a single `AuthenticationFilter` may be attached mutliple times to a single HTTPRoute.
10151012

10161013
#### Basic example
@@ -1173,7 +1170,7 @@ Proxy cache TTL should be configurable and set to a resonable default, reducing
11731170

11741171
### Key rotation
11751172

1176-
Users sholud be advised to regularly rotate their JWKS keys in cases where they chose to reference a local JWKS via a `secrefRef` or `configMapRef`
1173+
Users should be advised to regularly rotate their JWKS keys in cases where they chose to reference a local JWKS via a `secrefRef` or `configMapRef`
11771174

11781175
### Auth failure behaviour
11791176

@@ -1184,39 +1181,36 @@ Users sholud be advised to regularly rotate their JWKS keys in cases where they
11841181
### Auth failure default headers
11851182

11861183
Below are a list of default defensive headers for authentication failure reponses.
1187-
We may choose to include these headers by default for improved robustness in auth falure responses.
1184+
We may choose to include these headers by default for improved robustness in auth failure responses.
11881185

11891186
```nginx
11901187
add_header Content-Type "text/plain; charset=utf-8" always;
11911188
add_header X-Content-Type-Options "nosniff" always;
11921189
add_header Cache-Control "no-store" always;
1193-
add_header Pragma "no-cache" always;
11941190
```
11951191

11961192
Detailed header breakdown:
11971193

11981194
- Content-Type: "text/plain; charset=utf-8"
1199-
- 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
12001196

12011197
- X-Content-Type-Options: "nosniff"
12021198
- This header prevents content type confusion. This occurrs when browsers guesses HTML & JavaScript, and executes it despite a benign type.
12031199

12041200
- Cache-Control: "no-store"
12051201
- 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.
12061202

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.
12091203

12101204
### Validation
12111205

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.
12131207

12141208
All fields in the `AuthenticationFilter` will be validated with Open API Schema.
12151209
We should also include [CEL](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation-rules) validation where required.
12161210

12171211
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`.
12181212

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.
12201214

12211215
## Alternatives
12221216

@@ -1225,15 +1219,15 @@ The Gateway API defines a means to standardise authentication through use of the
12251219
This allows users to reference an external authentication services, such as Keycloak, to handle the authentication requests.
12261220
While this API is available in the experimental channel, it is subject to change.
12271221

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.
12291223

12301224
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.
12311225

12321226
## Additional considerations
12331227

12341228
### Documenting filter behavour
12351229

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:
12371231

12381232
```text
12391233
Wherever possible, implementations SHOULD implement filters in the order they are specified.

0 commit comments

Comments
 (0)