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
-[Feature Enablement and Rollback](#feature-enablement-and-rollback)
30
31
-[Rollout, Upgrade and Rollback Planning](#rollout-upgrade-and-rollback-planning)
@@ -163,6 +164,7 @@ jwt:
163
164
```
164
165
165
166
The minimum valid JWT payload must contain the following claims:
167
+
166
168
```yaml
167
169
{
168
170
"iss": "https://example.com", // must match the issuer.url
@@ -680,13 +682,24 @@ providers such as Okta, Azure AD, etc:
680
682
- The Kubespray team is integrating Structured Authentication in this [PR](https://github.com/kubernetes-sigs/kubespray/pull/11841).
681
683
- Confirm with [Gardener](https://gardener.cloud/) that the new functionality addresses their use case.
682
684
- The Gardener team has integrated Structured Authentication in this [PR](https://github.com/gardener/gardener/pull/10244).
683
-
- Confirm with [SPIFFE](https://spiffe.io/) that the new functionality addresses their use case.
684
-
- The SPIFFE team recommends Structured Authentication in their [README](https://github.com/spiffe/k8s-spiffe-workload-jwt-exec-auth?tab=readme-ov-file#setup-the-kubernetes-cluster-auth).
685
-
- Add a full documentation with examples for the most popular providers, e.g., Okta, Dex, Auth0
685
+
- Confirm with [SPIFFE](https://spiffe.io/) that the new functionality addresses their use case.
686
+
- The SPIFFE team recommends Structured Authentication in their [README](https://github.com/spiffe/k8s-spiffe-workload-jwt-exec-auth?tab=readme-ov-file#setup-the-kubernetes-cluster-auth).
686
687
- Migration guide
687
-
- e2e test with an external provider completed and enabled
688
-
- Get distributed claims working with CEL
689
-
- Decide if we want to support egress selection configuration and how to do so
688
+
- This is already done in the [beta blog post](https://kubernetes.io/blog/2024/04/25/structured-authentication-moves-to-beta/#migration-from-command-line-arguments-to-configuration-file).
689
+
690
+
#### Possible future work
691
+
692
+
- These tasks are not required for GA, but they are important to consider for the future of the feature. They will be added behind feature gates and will be fully backward compatible.
693
+
- Get distributed claims working with CEL
694
+
- can we implement a CEL type resolver so that a cel expression `claims.foo` gets resolved via a distributed claim the first time it is used?
695
+
- this seems likely and preferable so we only resolve the things we need (in case an early validation rule fails and short-circuits).
696
+
- Egress selection configuration
697
+
- Better caching to support distributed claims in a more performant way
698
+
- Should the token expiration cache know about the `exp` field instead of hard coding `10` seconds?
699
+
- Remove 64 jwt authenticators limit
700
+
- implementation detail: we should probably parse the `iss` claim out once.
701
+
- Currently the structure of authenticators is a list of authenticators, but we could change it to a map of authenticators with issuer as the key.
702
+
- Audit annotations set on claim/user validation failure
690
703
691
704
### Upgrade / Downgrade Strategy
692
705
@@ -707,49 +720,58 @@ unset the `--authentication-config` flag and restore the `--oidc-*` flags to con
707
720
This is an API server only change and does not affect other components. If the API server is
708
721
not the minimum required version (v1.29), the feature will not be available.
709
722
710
-
<<[UNRESOLVED open questions that don't clearly fit elsewhere ]>>
711
-
## OpenQuestions
712
-
713
-
The following questions are still open and need to be addressed or rejected or deferred before the KEP is marked as GA.
723
+
## Questions
714
724
715
725
- should we have any revocation mechanism?
716
726
=> use revocation endpoint if it is in the discovery document?
717
727
=> related issue https://github.com/kubernetes/kubernetes/issues/71151
718
-
- should audit annotations be set on validation failure?
728
+
729
+
> We don't have any plans to add revocation at this time. Because of this the docs will be updated to make sure the tokens are short-lived as they are not revocable.
730
+
719
731
- decide what error should be returned ifCEL eval fails at runtime
720
732
`500 Internal Sever Error` seem appropriate but authentication can only do `401`
733
+
734
+
> We always return`401 Unathorized` and log the error message. This is consistent with the existing OIDC authenticator behavior.
735
+
721
736
- distributed claims with fancier resolution requirements (such as access tokens as input)
722
737
- This will be considered for getting distributed claims working with CEL
723
-
- implementation detail: we should probably parse the `iss` claim out once
738
+
739
+
> This is suggesting a scenario where your distributed claims require an access token, but that token isn’t embedded in the ID token. Instead, the cluster admin configuring the system would somehow provide the access token. For example, there could be a client credentials plugin at the API server that fetches or refreshes an access token and makes it available for distributed claim fetching. We are not going to support this approach.
740
+
724
741
- are `iat` and `nbf` required?
742
+
743
+
> We have already documented the minimum required JWT payload. The`iat` and `nbf` claims are not required.
744
+
725
745
- is `sub` required or is the requirement to just have some username field?
746
+
747
+
> We have already documented the minimum required JWT payload. The`sub` claim is not required, but the username claim must be present.
748
+
726
749
- confirm cel comprehensions/mapping is powerful enough to transform the input claims into a filtered / transformed `map[string][]string` output for extra
727
750
728
-
For distributed claims:
751
+
> We don't need to this because we changed the structure of our configuration of `ExtraMapping` to be a list of key and expression. So we don't need one CEL comprehension to do this anymore.
0 commit comments