In this lesson we explain how authentication fits into the zero-trust security model and how Istio implements identity verification for both workloads and end users. Zero trust means “never trust, always verify.” Every request — even traffic inside your cluster — should be authenticated (who is making the request?) and then authorized (is that identity allowed to perform this action?).Documentation Index
Fetch the complete documentation index at: https://notes.kodekloud.com/llms.txt
Use this file to discover all available pages before exploring further.

- Does this identity truly belong to the client making the request?
- Is the presented identity cryptographically verifiable (for workloads) or cryptographically signed and valid (for user tokens)?
- Transport-level (workload-to-workload) identity — mutual TLS (mTLS) issues and verifies short-lived certificates for sidecars, binding a workload to a SPIFFE identity such as:
spiffe://cluster.local/ns/default/sa/my-service-account - Application-level (end-user or third-party) identity — JSON Web Tokens (JWTs) or OAuth tokens carried in HTTP headers (for example,
Authorization: Bearer <token>) represent users or external clients and convey claims.
Zero trust is two steps: authenticate (verify who) and authorize (verify what). Istio automates mTLS for workload identities and can validate JWTs at the proxy so you can apply consistent AuthorizationPolicy rules.
- mTLS: Istio can provision and rotate certificates for Envoy sidecars and validate peer certificates automatically, giving cryptographic proof of workload identity without application changes.
- JWT: Istio (via Envoy) can validate JWTs with RequestAuthentication; after validation, AuthorizationPolicy can inspect token claims to make access decisions.
| Authentication type | Typical use case | How Istio handles it |
|---|---|---|
| mTLS (transport) | Workload-to-workload, service-to-service | Istio issues short-lived certs; PeerAuthentication enforces modes (e.g., STRICT) |
| JWT (application) | End-user or third-party HTTP clients | RequestAuthentication validates tokens (issuer, signature via JWKS); AuthorizationPolicy inspects claims |
- PeerAuthentication — require mTLS in a namespace or for specific workloads
default namespace. Any client without a valid workload certificate will be denied at the transport layer.
- RequestAuthentication — validate JWTs for workloads selected by label
app: httpbin. After successful validation, attributes such as request.auth.principal and request.auth.claims are available to AuthorizationPolicy.
- AuthorizationPolicy — allow requests when either mTLS principal or a validated JWT is present
- mTLS principals in Istio are SPIFFE IDs such as
spiffe://cluster.local/ns/namespace/sa/service-account. - After a successful RequestAuthentication, you can reference
request.auth.principaland individual claims viarequest.auth.claimsin AuthorizationPolicy expressions.
- Inspect a workload certificate: the sidecar certificate contains the SPIFFE subject and is traceable to the cluster CA.
- Inspect an HTTP request with a JWT: a client includes
Authorization: Bearer <JWT>; Istio/Envoy can validate it at the proxy before the request reaches the application.
- Prefer mTLS between workloads for cryptographic authenticity and confidentiality.
- Use JWT validation for end-user or third-party authentication and combine it with AuthorizationPolicy for fine-grained access control.
- Rotate keys and secure JWKS endpoints; validate the token issuer and signing keys before trusting claims.
- Apply namespace- and workload-scoped policies to minimize blast radius and follow the principle of least privilege.
- Log and audit authentication and authorization decisions for traceability.