Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
2314a28
feat(security): separate silo and gateway TLS
ReubenBond Aug 7, 2026
07ef4b4
feat(security): authenticate silo connections
ReubenBond Aug 7, 2026
9be029f
docs: add authenticated silo connection sample
ReubenBond Aug 7, 2026
be3011e
fix(docs): align authenticated silo sample
ReubenBond Aug 7, 2026
beba37c
docs: register authenticated silo snippet
ReubenBond Aug 7, 2026
79d358b
feat(security): authenticate client connections
ReubenBond Aug 8, 2026
f5fd886
fix(security): check outbound certificate revocation
ReubenBond Aug 8, 2026
d0c7678
docs(security): add production setup guidance
ReubenBond Aug 8, 2026
22da62f
docs(security): clarify Orleans trust boundary
ReubenBond Aug 8, 2026
84b64f9
fix(samples): make authenticated connections standalone
ReubenBond Aug 11, 2026
622a5e0
fix(docs): align connection security guidance
ReubenBond Aug 19, 2026
d7fd942
test(security): classify Entra authentication tests
ReubenBond Aug 19, 2026
26c38dd
test(security): migrate authentication tests to MTP
ReubenBond Aug 21, 2026
88b83f0
docs(security): correct Entra setup and metrics
ReubenBond Aug 21, 2026
c505b44
fix(security): redact connection tokens
ReubenBond Aug 21, 2026
de9c10d
fix(security): correct Entra v2 audience binding
ReubenBond Aug 23, 2026
b3dee1a
fix(security): close authentication config gaps
ReubenBond Aug 23, 2026
e5ce6ce
perf(security): tighten authentication runtime paths
ReubenBond Aug 23, 2026
a978193
fix(security): remove unused Entra imports
ReubenBond Aug 24, 2026
0585e72
fix(security): align Entra caller allowlists
ReubenBond Aug 25, 2026
a892811
fix(test): import Orleans hosting extensions
ReubenBond Aug 26, 2026
3d1ebc3
fix(security): harden connection authentication validation
ReubenBond Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@
<PackageVersion Include="Microsoft.Extensions.ObjectPool" Version="8.0.24" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="8.0.2" />
<PackageVersion Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.22.0" />
<PackageVersion Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="8.22.0" />
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="10.3.0" />
<PackageVersion Include="Microsoft.Extensions.TimeProvider.Testing" Version="9.10.0" />
<PackageVersion Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" />
Expand Down
2 changes: 2 additions & 0 deletions Orleans.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@
<Project Path="src/Orleans.Clustering.Consul/Orleans.Clustering.Consul.csproj" />
<Project Path="src/Orleans.Clustering.ZooKeeper/Orleans.Clustering.ZooKeeper.csproj" />
<Project Path="src/Orleans.Connections.Security/Orleans.Connections.Security.csproj" />
<Project Path="src/Orleans.Connections.Security.Entra/Orleans.Connections.Security.Entra.csproj" />
<Project Path="src/Orleans.Hosting.Kubernetes/Orleans.Hosting.Kubernetes.csproj" />
</Folder>
<Folder Name="/src/Extensions/AdoNet/">
Expand Down Expand Up @@ -133,6 +134,7 @@
<Project Path="test/Orleans.DependencyInjection.Tests/Orleans.DependencyInjection.Tests.csproj" />
<Project Path="test/Orleans.Core.Tests/Orleans.Core.Tests.csproj" />
<Project Path="test/Orleans.CodeGenerator.Tests/Orleans.CodeGenerator.Tests.csproj" />
<Project Path="test/Orleans.Connections.Security.Entra.Tests/Orleans.Connections.Security.Entra.Tests.csproj" />
<Project Path="test/Orleans.Connections.Security.Tests/Orleans.Connections.Security.Tests.csproj" />
<Project Path="test/Orleans.Journaling.Tests/Orleans.Journaling.Tests.csproj" />
<Project Path="test/Orleans.Journaling.Json.Tests/Orleans.Journaling.Json.Tests.csproj" />
Expand Down
4 changes: 4 additions & 0 deletions docs/Docs.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@
<Project Path="site/src/content/docs/host/snippets/aspire/SharedContracts/SharedContracts.csproj" />
<Project Path="site/src/content/docs/host/snippets/aspire/Silo/Silo.csproj" />
</Folder>
<Folder Name="/site/src/content/docs/host/snippets/authenticated-silo-connections/" />
<Folder Name="/site/src/content/docs/host/snippets/authenticated-silo-connections/csharp/">
<Project Path="site/src/content/docs/host/snippets/authenticated-silo-connections/csharp/AuthenticatedSiloConnections.Snippets.csproj" />
</Folder>
<Folder Name="/site/src/content/docs/host/snippets/connection-middleware/">
<Project Path="site/src/content/docs/host/snippets/connection-middleware/ConnectionMiddleware.csproj" />
</Folder>
Expand Down
5 changes: 4 additions & 1 deletion docs/site/src/content/docs/deployment/networking.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,10 @@ Allow only the required paths:
- Application ingress: the application's HTTP, gRPC, or other public protocol.
- Provider endpoints: the identities and destinations required by each configured provider.

Don't expose the silo port or gateway port to the public internet. If clients cross an untrusted network, use [Orleans TLS](../host/transport-layer-security.md) and enforce workload identity at the surrounding network boundary.
Don't expose the silo port or gateway port to the public internet. Protect
Orleans traffic with [TLS](../host/transport-layer-security.md), and use
[authenticated Orleans connections](../host/authenticated-silo-connections.md)
when silos or clients must prove workload identity at the transport boundary.

## Validate connectivity

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: Production-readiness checklist
description: Review an Orleans deployment before it receives production traffic.
ms.date: 08/02/2026
ms.date: 08/07/2026
ms.topic: checklist
---

Expand Down Expand Up @@ -45,12 +45,17 @@ Complete this checklist for each production environment. Record owners, expected

- [ ] The [Orleans trust boundaries](../security/index.md) and application-owned security controls are documented.
- [ ] Only trusted workloads can reach silo and gateway ports.
- [ ] Orleans transport security is configured when the network isn't already a trusted, isolated boundary. See [Orleans Transport Layer Security](../host/transport-layer-security.md).
- [ ] TLS protects silo-to-silo and client-to-gateway traffic, with platform chain, DNS-name, EKU, and revocation validation. See [Secure Orleans connections with TLS](../host/transport-layer-security.md).
- [ ] Workload authentication uses cluster-specific audiences, separate silo and client roles, explicit caller allowlists, and fail-closed enforcement. See [Authenticate Orleans connections](../host/authenticated-silo-connections.md).
- [ ] Every silo and external Orleans client admitted by these policies is trusted to access the cluster; untrusted users are authenticated and authorized at application ingress.
- [ ] Grain calls enforce [application authentication and authorization](../security/authentication-authorization.md), and validated credentials establish the identity carried through request context.
- [ ] Serializer type-name resolution follows the [least-privilege type policy](../security/serialization.md).
- [ ] Membership, storage, reminder, and stream providers independently use encrypted transport, workload identity, and least-privilege permissions.
- [ ] Configured providers and persisted data are treated as trusted cluster infrastructure, with administrative access restricted accordingly.
- [ ] Administrative endpoints, health details, metrics, and logs don't expose secrets or tenant data.
- [ ] Provider identities have least privilege for membership, state, reminders, and streams.
- [ ] Certificates and credentials have rotation and expiry alerts.
- [ ] Negative connection tests prove that wrong certificates, tenants, audiences, roles, caller IDs, and baseline-only peers are rejected.

## Observability and operations

Expand Down
Loading