惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
L
LINUX DO - 热门话题
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
V
V2EX
GbyAI
GbyAI
量子位
Microsoft Azure Blog
Microsoft Azure Blog
有赞技术团队
有赞技术团队
G
Google Developers Blog
云风的 BLOG
云风的 BLOG
B
Blog
Microsoft Security Blog
Microsoft Security Blog
S
SegmentFault 最新的问题
O
OpenAI News
N
News and Events Feed by Topic
博客园 - Franky
爱范儿
爱范儿
Forbes - Security
Forbes - Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V2EX - 技术
V2EX - 技术
Application and Cybersecurity Blog
Application and Cybersecurity Blog
N
News and Events Feed by Topic
N
News | PayPal Newsroom
Schneier on Security
Schneier on Security
Cloudbric
Cloudbric
Security Archives - TechRepublic
Security Archives - TechRepublic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Recent Commits to openclaw:main
Recent Commits to openclaw:main
人人都是产品经理
人人都是产品经理
P
Privacy International News Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog RSS Feed
阮一峰的网络日志
阮一峰的网络日志
D
DataBreaches.Net
Last Week in AI
Last Week in AI
罗磊的独立博客
Spread Privacy
Spread Privacy
Recent Announcements
Recent Announcements
The Cloudflare Blog
Google DeepMind News
Google DeepMind News
AWS News Blog
AWS News Blog
The Register - Security
The Register - Security
Y
Y Combinator Blog
J
Java Code Geeks
I
Intezer

Duende Software Official Site

Duende Software Duende Software Duende Software Duende Software Duende Software Duende Software Duende Software Stop AI Bots from Wasting Your Server How Duende IdentityServer Filters Claims (And Why It Matters) Core vs Extended Protocols in Duende IdentityServer v8: What You Get and When You Need More Your IdentityServer v8 Upgrade Checklist: A Quick Pre-Flight Guide Setting Up SAML Single Sign-On in ASP.NET with Duende IdentityServer Your Identity, Your Terms: Duende's Modular Identity Infrastructure and v8.x Release Duende Spring Launch '26: Identity Infrastructure That Expands With You SAML and OpenID Connect (OIDC): Coexistence, Not Competition The 9 Components of SAML You Need to Know, Ranked by Importance The Cost of NOT Implementing Financial-Grade Security The Composable Identity Pattern: Build What You Need, Skip What You Don't Multi-Brand Identity: When Your Company Needs More Than One Face Post-Quantum Cryptography in .NET 10: A Practical Guide The field Keyword in C# 14: Write Less, Validate More The Real Cost of Build vs. Buy for Identity OAuth 2.1 Made Simple: The Only Flows You Need Beyond localhost: Multi-Instance ASP.NET Core Deployment with .NET 10 Harden Your .NET JSON Deserialization with System.Text.Json and JsonSerializerOptions.Strict ASP.NET Core Cookie Size Limits in Production: Causes and Fixes The Emergency Stop Button - Implementing Immediate Token Revocation in .NET 10 The 2025 OWASP Top 10 and IdentityServer Update Guidance for CVE-2026-40372 - ASP.NET Data Protection Why a Standard JWT Access Token Matters The Identity Governance Checklist You Wish You Had Six Months Ago The History and Future of SAML: Why a 20-Year-Old Protocol Still Matters The Cookie Apocalypse Already Happened Verify - Open Source Sponsorship Why Identity Is Infrastructure, Not a Feature Extending Duende IdentityServer Server-Side Sessions with Dynamic User Metadata Give Your AI Coding Assistant Duende Expertise with Agent Skills and MCP Server Triggering User Registration via OpenID Connect with Duende IdentityServer Improving .NET Security Code with C# 14 Property Extensions Developing Audit Logs with Duende IdentityServer Events Patch Releases: Addressing CVE-2026-26127 in Microsoft.BCL.Memory Client-Initiated Backchannel Authentication (CIBA) in ASP.NET Core 10 with Duende Identity Server Rate Limiting IdentityServer Endpoints It's Probably DNS - Can You Dig It? Security Lingo Explained: Encode vs Encrypt vs Hash Implementing Zero Trust with Resource Isolation Security Lingo Explained: JWT DPoP Security for .NET APIs with JwtBearer Extensions v1.0.0 Announcing the Duende IdentityServer4 Migration Analysis Tool BenchmarkDotNet - Open Source Sponsorship Security Lingo Explained: PAR Why Signing Key Rotation Matters in OpenID Connect and Duende IdentityServer Security Lingo Explained: OP Duende Year-End Review 2025 Security Lingo Explained: BCP Security Lingo Explained: DPoP Security Lingo Explained: Auth Secure frontend apps with the BFF Pattern Scaling with Duende IdentityServer, MCP, and AI Duende IdentityServer v7.4 is now available Duende BFFv4 is now available Securing OpenAPI and Swagger UI with OAuth in .NET 10 Building a Federation Gateway with Duende IdentityServer: Strategies and Considerations for Identity Orchestration
Token Issuer Isolation: Why It Matters for Security and Compliance
Khalid Abuhakmeh · 2026-05-20 · via Duende Software Official Site

In a shared-issuer model, every tenant's tokens are signed with the same cryptographic key. One compromised key compromises everyone. Every tenant. Every token. Every session. In regulated industries like financial services, healthcare, government, and enterprise SaaS, this is not a theoretical risk. It is a finding on an audit report, a red flag in a SOC 2 examination, and a deal-breaker in a procurement security review.

Token issuer isolation changes the equation. Each tenant gets its own signing keys, JWKS endpoint, and token validation chain. A key compromise in one tenant stays contained to that tenant. In other words, token issuer isolation is the control that determines whether a key compromise is a catastrophic breach or a contained incident.

This post explains what issuer isolation means in cryptographic terms, why it matters for SOC 2 and ISO 27001, and how Duende IdentityServer 8 implements it without adding to your operational burden.

What Token Issuer Isolation Means Cryptographically

Every OAuth 2.0 and OpenID Connect issuer signs tokens with a private key and publishes the corresponding public key via the JWKS (JSON Web Key Set) endpoint. Relying parties fetch the public key to verify token signatures. This is what makes JWTs trustworthy: you can verify a token without contacting the issuer at runtime.

In a shared-issuer model, one private key signs all tokens for all tenants. One JWKS endpoint publishes one set of public keys. The private key becomes the single point of compromise for the entire system.

In an isolated-issuer model, each issuer has its own private key and its own JWKS endpoint. Relying parties for Tenant A fetch keys from Tenant A's endpoint. Relying parties for Tenant B fetch from Tenant B's. The private keys are completely independent.

Each issuer generates its own key pair (RSA 2048/4096 or ECDSA P-256/P-384) using independent random seeds. The keys are mathematically unrelated. Storage can be isolated across separate key vaults, Hardware Security Module partitions, or database records. Rotation schedules can differ per issuer. Revoking a key for one tenant does not affect any other.

# Token from Issuer A (Tenant: Acme Corp)
Header:  { "alg": "RS256", "kid": "acme-key-2026-06" }
Payload: { "iss": "https://acme.auth.example.com", "sub": "user123", ... }
Signature: [signed with Acme's private key]

# Token from Issuer B (Tenant: Contoso Ltd)
Header:  { "alg": "RS256", "kid": "contoso-key-2026-06" }
Payload: { "iss": "https://contoso.auth.example.com", "sub": "user456", ... }
Signature: [signed with Contoso's private key]

The kid header identifies which key signed the token. The iss claim identifies the issuer. A token from Issuer A presented to a relying party that trusts only Issuer B will fail signature verification every time. The cryptographic math is unambiguous: you cannot verify a signature created by Private Key A using Public Key B. The keys are mathematically independent. Even if an attacker intercepts a token from Tenant A and presents it to Tenant B's API, the signature verification will fail because Tenant B's relying party fetches public keys from https://contoso.auth.example.com/.well-known/jwks.json, not from Acme's JWKS endpoint. The token is cryptographically bound to its issuer.

This is the fundamental security property that makes issuer isolation work: tokens are not just logically scoped to a tenant, they are cryptographically bound to that tenant's key material. Cross-tenant token replay is mathematically impossible, not just policy-enforced.

The Blast Radius Problem

Consider a concrete scenario. You have 200 tenants sharing a single issuer and a single RSA signing key. The private key is exfiltrated. The attacker can now forge valid tokens for any of the 200 tenants, impersonate any user, and create tokens with any claims, scopes, or roles. You must rotate the signing key immediately, treat all existing tokens as suspect, notify all 200 tenants, and ensure every relying party refreshes its cached JWKS. Breach notification obligations may be triggered for all 200 customers.

Now consider issuer isolation. Same 200 tenants, each with their own issuer and signing key. Tenant 47's private key is exfiltrated. The attacker can forge tokens only for Tenant 47. You rotate Tenant 47's key and notify Tenant 47; the other 199 tenants are unaffected.

Dimension Shared Key Isolated Keys
Tenants affected by compromise All One
Tokens that must be rotated All One tenant's
Relying parties affected All One tenant's
Tenants to notify All One
Breach notification scope Entire customer base One customer
Recovery time Hours to days Minutes to hours
Compliance reporting Major incident Contained incident
Business reputation impact Severe Minimal

The difference between "we had a security incident" and "we had a catastrophic, company-wide breach" often comes down to whether cryptographic boundaries existed between tenants.

Compliance Drivers

Issuer isolation maps directly to specific controls in the compliance frameworks that enterprise customers, auditors, and regulators evaluate.

SOC 2 Trust Services Criteria

CC6.1 (Logical and Physical Access Controls) requires logical access security over protected information assets. Separate signing keys per tenant is a logical access control that prevents tokens from one tenant from being valid for another.

CC6.3 (Access to Data) requires restriction of access to information assets. In a shared-key model, the signing key is a shared secret. In an isolated-key model, each tenant's signing key is a separate information asset with its own access controls.

CC7.2 (Monitoring of System Components) requires monitoring for anomalies. Per-issuer key management enables per-tenant monitoring of key usage, rotation, and access patterns. Anomaly detection is far easier when keys are tenant-scoped.

ISO/IEC 27001:2022

A.8.3 (Information Access Restriction) requires restricting access in accordance with the access control policy. Issuer isolation implements this at the cryptographic level.

A.8.24 (Use of Cryptography) requires a policy on cryptographic controls. Per-tenant signing keys demonstrate control by limiting each key's authority, with lifecycle management documented for each tenant.

A.5.23 (Cloud Services) is relevant when the identity system runs in the cloud. Each tenant's keys can be stored in separate key management resources, such as separate Azure Key Vault instances.

Additional Frameworks

HIPAA's Security Rule requires access controls and audit trails; issuer isolation provides cryptographic boundaries between tenants. PCI DSS Requirements 3 and 4 mandate strong cryptographic controls, and minimizing key scope aligns naturally. FedRAMP requires logical tenant isolation in cloud services.

Key Rotation and Management Per Issuer

Keys should be rotated regularly to limit exposure if a key is compromised. In a shared-key model, rotation affects all tenants simultaneously. In an isolated-key model, each tenant's keys rotate independently.

Duende IdentityServer includes automatic key rotation capabilities out of the box. The framework generates new signing keys on a configurable schedule, publishes both old and new keys to the JWKS endpoint during the grace period, and automatically retires old keys once the grace period expires. In multi-issuer deployments, this rotation occurs independently for each issuer, so each tenant can have its own rotation policy without affecting others.

sequenceDiagram
    participant Issuer as Issuer (Tenant A)
    participant JWKS as JWKS Endpoint
    participant RP as Relying Party

    Note over Issuer: Phase 1: Introduce new key
    Issuer->>JWKS: Publish new public key (alongside old key)
    Issuer->>Issuer: Begin signing with new key

    Note over Issuer: Phase 2: Grace period
    RP->>JWKS: Fetch keys (gets both old and new)
    RP->>RP: Validate old tokens with old key
    RP->>RP: Validate new tokens with new key

    Note over Issuer: Phase 3: Remove old key
    Issuer->>JWKS: Remove old public key
    RP->>JWKS: Refresh cache (gets only new key)

    Note over Issuer: Phase 4: Destroy old private key
    Issuer->>Issuer: Securely destroy old key material
    Issuer->>Issuer: Log destruction for audit

The grace period typically matches the maximum token lifetime. If access tokens live for one hour, the grace period should be at least one hour.

Because each issuer manages its own keys independently, Tenant A can rotate its keys monthly while Tenant B rotates its keys quarterly. A security event affecting Tenant C triggers an immediate rotation for Tenant C alone.

graph TD
    IS["Duende IdentityServer 8"]

    IS --> IA["Issuer A"]
    IS --> IB["Issuer B"]
    IS --> IC["Issuer C"]

    IA --> KA["Key Vault<br/>(Tenant A keys)<br/>Rotation: Monthly"]
    IB --> KB["Key Vault<br/>(Tenant B keys)<br/>Rotation: Quarterly"]
    IC --> KC["Key Vault<br/>(Tenant C keys)<br/>Rotation: On-demand"]

How Multi-Issuer Achieves Isolation Without Operational Overhead

There is a spectrum of isolation approaches. No isolation (shared issuer, shared keys) has the lowest operational cost but the highest risk. Physical isolation (separate deployments per tenant) provides maximum isolation at tremendous operational cost. Logical isolation through multi-issuer sits in the sweet spot: low operational cost with contained risk.

IdentityServer v8 handles the hard parts automatically: per-issuer key generation and storage, serving per-issuer JWKS endpoints, per-issuer token signing, per-issuer discovery document generation, and key rotation lifecycle management. You configure the tenants and policies. The framework manages the cryptographic machinery.

Per-issuer monitoring becomes natural under this model. Token issuance rate, key age, JWKS endpoint hit rate, failed signature validations: each metric is scoped to a single tenant. Alerting on rotation deadlines, unusual issuance patterns, or failed key-access attempts is straightforward when each key belongs to exactly one tenant.

Demonstrating Isolation to Auditors

When auditors arrive for SOC 2 or ISO 27001 examinations, they ask for evidence in four categories: architecture documentation (diagrams showing separate issuers with separate keys, isolation boundary descriptions, threat models), configuration evidence (distinct key IDs in each tenant's JWKS endpoint, separate discovery documents, documented rotation policies), operational evidence (per-tenant key rotation logs, token issuance logs, monitoring dashboards, tenant-scoped incident response procedures), and testing evidence (penetration tests confirming cross-tenant token rejection, automated tests, key rotation tests proving single-tenant impact).

A sample audit narrative:

Control: Tenant Token Isolation. The system implements cryptographic isolation between tenants at the token issuer level. Each tenant is assigned a dedicated token issuer with an independent set of signing credentials. Token signing keys are generated independently using RS256 with 2048-bit RSA keys. Keys are stored in dedicated Azure Key Vault instances with access restricted to the issuer's managed identity. Public keys are published at tenant-specific JWKS endpoints. Key rotation occurs automatically on a 90-day cycle, with a grace period matching the maximum token lifetime. Cross-tenant token validation is prevented by design: each tenant's relying parties trust only their tenant's issuer URL and JWKS endpoint. Automated integration tests verify monthly that tokens issued by one tenant's issuer are rejected by the relying parties of another tenant.

Threat Model: What Issuer Isolation Protects and What It Does Not

Issuer isolation is a strong control, but not a silver bullet. Understanding its boundaries is essential.

Threats Mitigated

Threat How Isolation Helps
Cross-tenant token forgery Different keys per tenant. Tenant A's compromised key cannot produce valid Tenant B tokens.
Cross-tenant token replay Different issuer URLs. Tenant B's API rejects tokens carrying Tenant A's iss claim.
Blast radius amplification Per-tenant keys limit the scope of compromise to a single tenant.
Key rotation disruption Per-tenant rotation affects only one tenant.
Compliance non-conformity Per-tenant keys satisfy isolation control requirements in SOC 2, ISO 27001, and similar frameworks.

Threats Requiring Additional Controls

Threat What Else You Need
Infrastructure compromise Infrastructure security, HSMs, network segmentation
Insider threat (operator access) Privileged access management, HSM-backed keys, audit logging
Application-level bugs Code review, security testing, bug bounty programs
Side-channel attacks on shared compute Compute isolation at the infrastructure layer
Supply chain attacks Dependency scanning, SBOM, signing verification

Issuer isolation contains the blast radius of a key compromise. It does not protect against infrastructure-level attacks. The two controls are complementary.

Conclusion

Token issuer isolation is a practical security control that materially reduces the blast radius of cryptographic key compromise. For companies subject to SOC 2, ISO 27001, HIPAA, or enterprise security reviews, it transforms a systemic risk (shared keys) into a contained risk (per-tenant keys).

IdentityServer v8's multi-issuer support implements this at the framework level. Per-tenant signing keys are generated and managed automatically. Per-tenant JWKS endpoints. Per-tenant key rotation on independent schedules. All running on a single deployment.

When your next auditor asks how you isolate tenant cryptographic material, the answer should be architectural, not aspirational.