Home
Celestice
CELESTICE™
Beyond Alpha
    • Celestice Overview

      Discover AI native wealth management

    • Features

      Learn about our agentic product innovations

    • Technology

      Deep dive into state-of-the-art product design

    What's New

    What's New
    • Family offices, HNW Investors

      Wealth Management

    • Advisors/Planners

      Investment Advisors (RIA/CFP)

    • Asset Management

      Sovereign wealth funds, ETF, Pension & Insurance funds

    • Banks, Institutional

      Embedded wealth management

    • Blog

      Recent news & insights

    • Security & Trust

      Security, Privacy & Compliance

    • User Guide

      Comprehensive user documentation

    • Developer Guide

      Comprehensive developer documentation

    • Subscribe

      View plans and pricing

    • Login

      Access your Celestice account

  • Contact
Home
Celestice

Menu

    • About Us
    • Features
    • Technology
    • Family Offices
    • Advisors/Planners
    • Asset Management
    • Institutions
    • Blog
    • Security & Trust
    • User Guide
    • Developer Guide
    • Subscribe
    • Login

Enterprise SSO for Financial AI: From Assertion to Authority

Celestice Research avatar

Celestice Research

August 24, 2026 • 13 min read
Enterprise SSO for Financial AI: From Assertion to Authority
CELESTICE
Photo by Roman Grac on Pixabay

Authentication is not authority

A firm with an existing identity provider expects to bring it. That expectation is reasonable, and meeting it well is mostly a matter of protocol plumbing: redirect the browser, validate a signed token, issue a session.

The interesting part is what happens next. A validated assertion establishes that someone authenticated successfully at a particular provider. It does not establish which organization they belong to, what roles they hold, or—most consequentially—whether they may take over an account that already exists.

Every difficult decision in enterprise single sign-on lives in that gap between authentication and authority. This post walks the path an assertion takes through Celestice, and states the reasoning behind each rule, because several of these designs have an obvious-looking alternative that is a vulnerability.

Why federation is a security control, not a convenience

Federating sign-in is usually sold as a convenience feature. It is better understood as a security control, for three reasons that matter more than the reduced number of passwords.

Account lifecycle stays where the organization already governs it. When a firm removes someone at its identity provider, federated sign-in stops working immediately. There is no separate password that keeps functioning because an offboarding checklist missed a system.

Multi-factor enforcement is inherited rather than reimplemented. Authentication happens at the provider, so whatever step-up requirements the firm enforces there apply to Celestice without any configuration on our side.

Celestice holds no password for a federated user. A credential we never store is a credential that cannot be leaked from our systems.

Connections and verified domains

Federation configuration separates two things that are easy to conflate: who a provider is, and what it is permitted to claim.

A connection identifies the provider—its protocol, issuer, client identifier, a vault reference for its client secret, and a lifecycle state. The client secret is never stored alongside the configuration; the record holds only the name of a vault entry, resolved at request time.

A verified domain records an email domain that connection may authenticate, along with the evidence that the organization controls it.

Collapsing these into one table would remove the ability to express the state that matters most during onboarding: this provider is configured, and has not yet proven it controls this domain. That intermediate state is not an inconvenience to be engineered away. It is the entire basis of the strongest guarantee in the system.

Claiming a domain is not proving it

Before a domain routes sign-in, the organization publishes a DNS TXT record containing a per-domain token. Until that record is observed, the domain remains unverified, cannot route a login, and cannot connect to an existing account.

The reason is direct: without proof of control, any customer could assert any email domain and begin receiving sign-in traffic intended for another firm. Domain verification is the control that makes a provider's authority specific rather than universal.

Routing has three outcomes, and the third is the interesting one

Given an email address, routing resolves to one of three results: send the user to a federation, fall back to password, or refuse.

The refusal case exists because of a specific conflict. Consider a firm that has deliberately disabled password login and whose federation has entered an error state. Falling back to a password prompt would be the accommodating behavior, and it would reinstate exactly the login path the firm paid to remove. So routing refuses, and the condition surfaces to an operator instead.

Routing considers only verified domains. The database query filters on the verification timestamp, and the resolver checks it again. The redundancy is deliberate: a query that returns unverified rows is precisely the defect the second check exists to survive.

Validating the assertion

A returned token is untrusted input until proven otherwise. Validation covers six properties: the signature against the provider's published keys, the issuer, the audience, the expiry, the nonce, and the presence of a subject.

The nonce check is the one most often skipped, and the one worth understanding. It binds the token to the specific login attempt that requested it. Without it, a token captured from one session can be replayed into another. Signature validity is not freshness, and a correctly signed token proves only that the provider issued it at some point—not that it was issued for the request now presenting it.

Each of these six checks is covered by a test that was verified to fail when the check was removed. A test that passes both with and without the control it guards is not evidence of anything.

From assertion to authority

With a validated assertion in hand, provisioning decides the local outcome: create a new account, connect to an existing one, authenticate a returning user, or refuse.

The obvious implementation of the connect case matches on email address. The assertion says person@firm.example, an account exists with that address, sign them in.

That is an account-takeover primitive.

Here is why. A tenant controls its own identity provider. It can configure that provider to emit an assertion claiming any email address it likes, including addresses belonging to users at other organizations. If the email address alone determines which account an assertion connects to, then onboarding a single federated connection grants the ability to authenticate as any user whose address can be guessed. The attack needs no stolen password, no phishing, and no flaw in the OIDC protocol. It is a logic error in the relying party.

Four rules close it, and none of them is optional.

The organization comes from the connection, never from the token. A tenant claim inside an assertion is attacker-controlled input. A test asserts that a token claiming one organization still provisions into the organization the verified connection names.

An existing account connects only when its email domain is verified for that connection. A firm's provider speaks for the domains it has proven and no others. This is the rule that stops one tenant asserting another tenant's address.

An unverified email never connects to an existing account. A provider that has not confirmed an address has not established that the person controls it.

An account already bound to a different provider subject is refused, not rebound. That state has two possible causes: a provider reissuing subject identifiers during a migration, or an attempt to rebind someone else's account. Guessing between them is how the wrong interpretation succeeds, so the flow stops and an operator resolves it.

Roles are not self-asserted

Providers can send group membership, and it is tempting to map those groups onto local roles directly. Doing so lets the provider choose its own authority by naming a group that happens to match a role we implement.

Group claims are therefore honored only through a mapping the organization configures explicitly. A group with no mapping is ignored, including one named to look privileged. A default role is always applied, so a misconfigured mapping cannot produce an account with no role and an unusable session.

Group claims are also read defensively. Providers disagree on the claim name, some send a single group as a bare string rather than a one-element array, and non-string entries are filtered rather than coerced into something that looks like a role.

A returning user is not a fresh authorization decision

When a known user signs in again, they are authenticated without role mapping being re-applied.

This is deliberate, and it is the kind of behavior that is easier to get wrong than right. An assertion is an authentication event. Treating it as an authorization update means that every sign-in silently reverts any role an administrator granted directly in Celestice. The privilege change would appear to work, persist until the user next signed in, and then disappear without a trace.

“A validated assertion proves someone authenticated at a provider. It does not say what they may do here. Every difficult decision in enterprise single sign-on lives in that gap.”

Celestice Research

Securing the flow itself

The route composing these steps holds as little judgment as possible, because it is the part that cannot be exercised without a live provider. What it does carry is the flow's own protections.

Two random values accompany each login. The state value defends the callback against cross-site request forgery and is compared in constant time. The nonce binds the resulting token to that login. Both live in a single-use cookie that is httpOnly, secure, scoped to the callback path, and short-lived.

That cookie is deliberately sameSite=lax rather than strict. The callback arrives as a cross-site top-level navigation from the provider, and strict would withhold the cookie at precisely the moment it is needed. This is one of the few places where the more restrictive setting is the wrong one, and it is worth knowing why rather than discovering it through a login failure.

The cookie is cleared on every callback, including failures. Leaving it in place would let a replayed callback reuse the same state and nonce.

The post-login redirect is constrained to a relative path. An unchecked redirect target is an open redirect anywhere, but on a login route it is worse than usual: the user arrives authenticated, so an attacker-controlled destination inherits the credibility of a completed sign-in. Protocol-relative targets are rejected explicitly, since they leave the origin while looking like a path.

Failing without narrating

Errors return a generic code and log the detail. A token-exchange failure can carry provider-side specifics, and a provisioning refusal reason tells an attacker which condition to change in order to get further.

This is a real tension rather than a free win. A user facing a refused sign-in benefits from knowing why, and an administrator needs the reason to fix a misconfiguration. The resolution is to route the detail to the administrator, who has the standing to see it, rather than to the sign-in page, which does not know who is looking.

What an administrator actually configures

The operational surface is deliberately small: the connection, the domains it may authenticate, and an optional group-to-role mapping. Verification is a DNS record the administrator publishes once per domain.

From a user's perspective there is no new decision to make. Entering a work email address is enough—routing determines whether that domain federates, so there is no wrong button to press and no choice between two sign-in methods that both look plausible.

The takeaway

Enterprise single sign-on is usually described in terms of the protocol, and the protocol is the straightforward part. Signature validation, issuer checks, and redirect handling are well-specified and widely implemented.

The security of a federation lives in the rules a system applies after the protocol has succeeded. A validated assertion is a statement about authentication from a party the organization chose to trust for exactly one thing. Deciding what that statement entitles someone to locally—which organization, which roles, and whether an existing account may be connected at all—is where a design either closes account takeover or hands it out.

References

  • OpenID Connect Core 1.0
  • NIST SP 800-63C: Federation and Assertions
  • OWASP Application Security Verification Standard
  • OWASP Cheat Sheet: Cross-Site Request Forgery Prevention
  • NIST Cybersecurity Framework 2.0
PreviousCompliance Readiness: Controls, Evidence, and Continuous Assurance

Recent Posts

  • Enterprise SSO for Financial AI: From Assertion to Authority
    Security, Privacy & Compliance · August 24, 2026Enterprise SSO for Financial AI: From Assertion to Authority
  • Compliance Readiness: Controls, Evidence, and Continuous Assurance
    Security, Privacy & Compliance · August 17, 2026Compliance Readiness: Controls, Evidence, and Continuous Assurance
  • Threat Modeling AI Agents with OWASP and MITRE ATLAS
    Security, Privacy & Compliance · August 10, 2026Threat Modeling AI Agents with OWASP and MITRE ATLAS
  • Privacy by Design: Pseudonymization for Financial AI
    Security, Privacy & Compliance · August 3, 2026Privacy by Design: Pseudonymization for Financial AI
  • Security for Financial AI: Controls, Boundaries, and Evidence
    Security, Privacy & Compliance · July 27, 2026Security for Financial AI: Controls, Boundaries, and Evidence

Categories

    • Portfolio Optimization at Scale: Why It Is an Operating Problem
    • How to Choose and Govern Portfolio Optimization Methods
    • Multi-Period Portfolio Optimization and Execution Costs
    • Robust Portfolio Optimization and Stress-Aware Methods
    • Tax-Aware Portfolio Optimization and Long-Short Investing
    • Portfolio Constraints: Turnover, Tax, Liquidity, Exposure
    • Covariance Matrix and Factor Models in Portfolio Optimization
    • Black-Litterman Portfolio Optimization Explained
    • Hierarchical Risk Parity and Clustering Methods
    • Risk Parity and Risk Budgeting Explained
    • Drawdown Risk in Portfolio Optimization
    • Tail-Risk Portfolio Optimization: CVaR, EVaR, Regret
    • Portfolio Optimization Methods: How to Choose the Right Model
    • AI Wealth Management: Governed Autonomy at Scale
    • What Is Governed Autonomy in Wealth Management?
    • Proactive Financial Planning Alerts: What Matters Next
    • Durable AI Workflows for Wealth Management
    • Specialist AI Agents for Wealth Management
    • Multi-Agent AI in Wealth Management: How Specialist Agents Collaborate
    • AI Agent Sandboxing: Capability-Based Security for Finance
    • AI Agent Memory for Wealth Management: What to Store
    • AI Financial Research Chat: Cited, Grounded Answers
    • AI Financial Advice Needs Citations: How Grounded Answers Work
    • Connected Accounts in Wealth Management: Data Quality First
    • Enterprise SSO for Financial AI: From Assertion to Authority
    • Compliance Readiness: Controls, Evidence, and Continuous Assurance
    • Threat Modeling AI Agents with OWASP and MITRE ATLAS
    • Privacy by Design: Pseudonymization for Financial AI
    • Security for Financial AI: Controls, Boundaries, and Evidence
    • Financial Advisor Proposal Generation: From Prospect to Client
    • Client Reporting for Advisors: Why Traceable Source State Matters
    • Portfolio Performance Attribution: TWR, MWR, and Brinson Explained
    • Investment Policy Statement: Portfolio Guardrails
    • AI Risk Intelligence: Portfolio Risk Signals With Evidence
    • What-If Scenario Planning for Wealth Decisions
    • Portfolio Stress Testing: What Breaks, Why, and What to Do
    • Portfolio Risk Analysis: VaR, CVaR, Factors, and Drawdown Explained
    • Factor Investing and Signal Fusion: Combining Alpha Signals
    • Fixed Income Analytics: Duration, Convexity, Spreads
    • How to Analyze a Stock: Valuation, Quality, Risks
    • Monte Carlo Retirement Simulation: How to Read Probability of Success
    • How Much Do I Need to Retire? Build a Retirement Income Plan
    • Goals-Based Wealth Planning: How to Fund What Actually Matters
    • Portfolio Optimization Methods: MVO, CVaR, Risk Parity
    • Portfolio Rebalancing Strategy: When and How to Rebalance
    • Model Portfolio Construction for Advisors
    • Real Assets Investing: Real Estate, Infrastructure, Farmland
    • Private Equity Metrics: MOIC, Vintage Year, and Secondaries
    • Private Markets 101: Capital Calls, J-Curve, IRR, TVPI, and Fees
    • Estate Planning, Trusts, and Liquidity: A Legacy Planning Guide
    • Should You Do a Roth Conversion? A Tax-Smart Planning Framework
    • Direct Indexing & Tax-Loss Harvesting: How It Works
    • Trade Execution Quality: TCA, Settlement, Reconciliation
cta-bg.png

Take charge of your financial life!

The new code for old wealth.

Sign upLearn more
Decorative gradient background
CELESTICE™Beyond Alpha

Product

  • Overview
  • Features
  • Technology
  • Pricing

Solutions

  • Investors
  • Advisors/Planners
  • Asset Managers
  • Institutions

Resources

  • Blog
  • Security
  • Contact

Social

  • YouTube
  • X
  • Reddit
  • Instagram

© 2026 Celestice Inc All rights reserved.

All systems operational
  • Privacy
  • Terms