Install any skill in seconds. Free to start, no credit card required.
Get Started Free →SAP Cloud Identity Services for BTP applications: Identity Authentication (IAS), Identity Provisioning (IPS), and Authorization Management (AMS). Use when configuring authentication for BTP apps, setting up OIDC or SAML app registrations, federating corporate identity providers, establishing subaccount trust, provisioning users, writing AMS authorization policies, migrating from XSUAA to IAS-based authentication, or troubleshooting token and trust errors.
.claude/skills/secondsky-sap-btp-cloud-identity-services/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-17 | ✗→✓ | ▲ Improved | 98% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 24% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 66% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 145% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 67% | 0% |
SAP Cloud Identity Services are a group of services on SAP BTP that manage identity and access across cloud and on-premise systems. They provide single sign-on, user provisioning, and policy-based authorization.
The services comprise:
| Service | Purpose | Key Objects | |---------|---------|-------------| | IAS | Authentication & SSO | Applications (OIDC/SAML), IdPs, conditional auth, user store | | IPS | User/group provisioning | Source systems, target systems, proxy systems, transformations, jobs | | Identity Directory | User persistence | Users, groups, custom schemas, Global User ID | | AMS | Policy-based authorization | Authorization policies, DCL rules, policy templates, restrictions |
IAS is the entry point for authentication in SAP BTP applications. It supports OIDC and SAML 2.0 protocols, acts as an identity provider or a proxy to corporate IdPs, and provides conditional authentication based on user attributes, email domain, user group, or IP range.
Register applications in the IAS admin console under Applications and Resources > Applications. Each application defines:
When using the SAP BTP Identity service (xsuaa replacement), the service instance automatically creates an OIDC application in IAS. No manual registration is needed.
IAS can act as a proxy: end users authenticate at a corporate IdP (Azure AD, Okta, etc.), and IAS bridges the token for SAP applications. Configure under Applications and Resources > Corporate Identity Providers.
For details, see references/identity-authentication.md.
IPS synchronizes users and groups between systems. It supports source, target, and proxy system types with configurable transformations and scheduling.
For details, see references/identity-provisioning.md.
AMS enables policy-based, instance-level authorization for BTP applications. Developers define authorization policies in Data Control Language (DCL) — an SQL-like language — and deploy them with the application. Administrators refine policies in the IAS admin console.
sqlDEFINE POLICY SalesOrderAccess AS (SELECT FROM SalesOrder WHERE buyer = CONTEXT('userIdentityLogonName') OR region = CONTEXT('userAttributes.region'));
For details, see references/authorization-management.md.
SAP is migrating BTP authentication from XSUAA (SAP Authorization and Trust Management Service) to Cloud Identity Services. The recommended posture:
For the full migration guide, see references/xsuaa-to-ias-migration.md.
Trust between BTP subaccounts and IAS is established automatically when using the Identity service. For manual configurations:
In the BTP cockpit, under Security > Trust Configuration, the IAS tenant appears after establishing the service binding. The Identity service creates the trust automatically.
For details, see references/troubleshooting.md and references/app-integration-patterns.md.
| Error | Cause | Solution | |-------|-------|----------| | Invalid redirect URI | Redirect URI in IAS app doesn't match the approuter callback URL | Add the exact URI (including protocol and trailing slash) in IAS app > Trust > Redirect URIs | | Token audience mismatch | Token aud claim doesn't include the expected client ID | Verify the application's client ID matches the one in IAS; check the Identity service binding | | Trust not established | BTP subaccount has no trust to the IAS tenant | Re-bind the Identity service instance or manually add IAS as trust configuration in BTP cockpit | | Missing role collections | User has no roles assigned in BTP | Assign role collections in BTP cockpit > Security > Role Collections, or configure AMS policies | | 401 on service-to-service call | Client credentials invalid or missing | Regenerate client secret/certificate; verify binding credentials | | SAML assertion expired | Clock drift between IdP and IAS | Synchronize system clocks; check IAS tenant SAML settings | | Provisioning job failed | Source/target system connection issue | Check system properties, certificates, and connectivity in IPS admin console | | Issuer mismatch in token | IAS tenant URL changed or wrong tenant | Verify the iss claim matches the IAS tenant URL configured in the BTP trust |
references/identity-authentication.md — IAS app registration, OIDC/SAML configuration, corporate IdP federation, conditional authentication, user storereferences/identity-provisioning.md — IPS source/target/proxy systems, jobs, transformations, real-time provisioning, troubleshootingreferences/authorization-management.md — AMS policy language (DCL), policy lifecycle, CAP/BTP integration, instance-based authorizationreferences/xsuaa-to-ias-migration.md — XSUAA vs IAS decision guide, coexistence, migration steps, role-collection mappingreferences/app-integration-patterns.md — Approuter + IAS, CAP + IAS/AMS, SAPUI5 frontends, mTLS/certificate auth for service-to-servicereferences/troubleshooting.md — Trust errors, token validation failures, audience/issuer mismatches, SAML vs OIDC pitfalls| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-17 | fail→pass | 14,518 | 14,719 | +1% | 1 | 1 | 0% | 2,401 | 4,756 | +98% | 0 | 0 | — |
case-01 | fail→pass | 35,890 | 30,228 | -16% | 1 | 1 | 0% | 5,680 | 7,050 | +24% | 0 | 0 | — |
case-02 | fail→fail | 20,916 | 22,893 | +9% | 1 | 1 | 0% | 3,539 | 6,080 | +72% | 0 | 0 | — |
case-03 | fail→pass | 20,177 | 19,193 | -5% | 1 | 1 | 0% | 3,412 | 5,653 | +66% | 0 | 0 | — |
case-04 | pass→pass | 18,796 | 15,930 | -15% | 1 | 1 | 0% | 3,286 | 4,874 | +48% | 0 | 0 | — |
case-05 | pass→pass | 12,608 | 9,701 | -23% | 1 | 1 | 0% | 2,558 | 4,143 | +62% | 0 | 0 | — |
case-06 | pass→pass | 16,793 | 14,324 | -15% | 1 | 1 | 0% | 2,970 | 4,924 | +66% | 0 | 0 | — |
case-07 | pass→pass | 16,974 | 16,136 | -5% | 1 | 1 | 0% | 2,780 | 4,888 | +76% | 0 | 0 | — |
case-08 | pass→pass | 14,521 | 11,861 | -18% | 1 | 1 | 0% | 2,317 | 4,215 | +82% | 0 | 0 | — |
case-09 | fail→pass | 13,157 | 14,878 | +13% | 1 | 1 | 0% | 2,066 | 5,062 | +145% | 0 | 0 | — |
case-10 | pass→pass | 10,742 | 13,145 | +22% | 1 | 1 | 0% | 1,743 | 3,702 | +112% | 0 | 0 | — |
case-11 | pass→pass | 14,846 | 10,195 | -31% | 1 | 1 | 0% | 2,421 | 3,930 | +62% | 0 | 0 | — |
case-12 | pass→pass | 14,353 | 10,736 | -25% | 1 | 1 | 0% | 2,313 | 4,128 | +78% | 0 | 0 | — |
case-13 | pass→pass | 15,156 | 10,598 | -30% | 1 | 1 | 0% | 2,305 | 4,107 | +78% | 0 | 0 | — |
case-14 | pass→pass | 10,671 | 5,713 | -46% | 1 | 1 | 0% | 1,711 | 3,248 | +90% | 0 | 0 | — |
case-15 | fail→pass | 11,701 | 5,946 | -49% | 1 | 1 | 0% | 1,906 | 3,187 | +67% | 0 | 0 | — |
case-16 | pass→pass | 5,015 | 4,793 | -4% | 1 | 1 | 0% | 853 | 3,062 | +259% | 0 | 0 | — |
case-18 | pass→pass | 8,063 | 8,634 | +7% | 1 | 1 | 0% | 1,202 | 3,682 | +206% | 0 | 0 | — |
case-19 | fail→pass | 13,573 | 13,374 | -1% | 1 | 1 | 0% | 1,989 | 4,410 | +122% | 0 | 0 | — |
case-20 | fail→pass | 18,442 | 16,332 | -11% | 1 | 1 | 0% | 2,911 | 5,104 | +75% | 0 | 0 | — |
case-21 | pass→pass | 12,829 | 22,273 | +74% | 1 | 1 | 0% | 2,224 | 4,464 | +101% | 0 | 0 | — |
case-22 | pass→pass | 13,089 | 10,243 | -22% | 1 | 1 | 0% | 1,996 | 4,092 | +105% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +32 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.