Managing external identities to enable secure access for partners, customers, and other non-employees
AADSTS1100001 from EEID custom auth extension onAttributeCollectionSubmit — no SP sign-in logs, all visible config verified
A signup attempt against an EEID (CIAM) tenant fails with AADSTS1100001 ("No service principal found in directory") at the onAttributeCollectionSubmit custom extension call. The Function App receives zero inbound requests during the failure, and zero entries appear in AADServicePrincipalSignInLogs for any SP in the entire tenant during the failure window — confirming the failure is at EEID's pre-token-acquisition stage, not at our HTTP endpoint.
Tenant: EEID xxxxxxxxx (xxxxxxxx.onmicrosoft.com) Reproducible from: "Run user flow" in the EEID portal (so frontend / MSAL config is exonerated) Recent failing correlation IDs:
Setup:
- User flow
prism-signup-signin(idxxxxxx) — freshly recreated to eliminate stale state -
onAttributeCollectionSubmit.customExtension.authenticationConfiguration.resourceId=api://xxxxxxxx.azurewebsites.net/2xxxxxxxxx -
endpointConfiguration.targetUrl=https://xxxxxxxx.azurewebsites.net/api/registration-validator - Claims Provider app appId
xxxxxxxx, objectIdxxxxxxxx - Claims Provider SP objectId xxxxxxx
What I have already verified:
- Claims Provider SP
accountEnabled: true,disabledByMicrosoftStatus: null -
identifierUrison the app: bothapi://{appId}andapi://{hostname}/{appId}—servicePrincipalNameson the SP includes both plus the bare appId - App role
CustomAuthenticationExtension.Receive.Payload(idxxxxxxxb,allowedMemberTypes: ["Application"],isEnabled: true) defined on the Claims Provider app - That app role is granted to the EEID
Azure Active Directory Authentication ExtensionsSP (local objectIdxxxxxxx8, appIdxxxx) - Claims Provider SP has admin-consented
CustomAuthenticationExtension.Receive.Payloadon Microsoft Graph (idxxxxx) -
requiredResourceAccesson Claims Provider has a single (deduped) entry for the above -
signInAudiencetested as bothAzureADMyOrgandAzureADMultipleOrgs— same error -
requestedAccessTokenVersion: 2 - Zero conditional access policies in the tenant
- Tenant App SP (id
xxx, appIdxxxxx) enabled, healthy, registered as theincludeApplicationsentry on the flow -
signInsanddirectoryAuditsqueried via Graph for all failing correlation IDs — both empty. SP sign-in logs across the entire tenant in the failure windows: also empty. - EasyAuth on the Function App correctly configured (issuer = CIAM v2, audience matches
identifierUri) — but irrelevant since EEID never makes the HTTP call
The error progression that gives one clue: before granting MS Graph admin consent on the Claims Provider SP (item #5 above), the error was AADSTS1003021 (Custom Authentication Extension failed). After granting consent, it became AADSTS1100001. So consent moved the flow further but it now fails resolving an SP at the next stage.
Question: What identifier does AADSTS1100001 say it can't find for these correlation IDs? With no SP sign-in log entries and the Microsoft-internal STS error text not exposed to the client, I can't determine which principal the resolver is missing — every visible candidate exists and is correctly named in this tenant. Pointers to a more specific log surface, or a known scenario where this combination fails, would be hugely appreciated.