AuthTailor 1.0.0 is out (8 November 2026): the SAML & OIDC tracer as an extension of its own – free, no account, no server. What’s inside → +43 664 1964199Contact →

SAP

On SAP BTP a login rarely fails because of the protocol and often because of a role. The SAP tab checks tokens and configuration and, for a 403, tells you which scope is missing and where it is assigned.

Tab
SAP
Sections
Check, Why 403?, Flows, Learn
Flows
five for SAP BTP
Storage
memory only

Check

Paste an XSUAA or IAS token, an xs-security.json, an xs-app.json, a service key, a destination (JSON or properties) or a logon ticket (MYSAPSSO2). AuthTailor checks it for the usual mistakes.

Section Check of the SAP tab with a pasted token, Recognised XSUAA / IAS token and the XSUAA token card with token anatomy
A made-up XSUAA token.
  1. The four sections: Check, Why 403?, Flows, Learn.
  2. Recognised: here XSUAA / IAS token. Also possible: xs-security.json, xs-app.json, Service key, Destination and Logon ticket (MYSAPSSO2).
  3. The card with the same token anatomy as in Tokens and SAML, plus SAP claims such as origin, zid and xs.rolecollections.

Service keys and destinations stay in memory only. AuthTailor shows secrets masked; nothing is stored or sent.

xs-security.json

Recognised xs-security.json and the card with findings about wildcards in redirect-uris and access tokens valid for 12 hours
A made-up xs-security.json with a wildcard in the host.
  1. Recognised: xs-security.json.
  2. The findings – here a wildcard in the host of the redirect-uris, a localhost entry for development and long token lifetimes.

Below are the fields – scopes, role templates, role collections, redirect-uris, token-validity – and a suggestion for a safer oauth2-configuration to copy. Check the values before using them.

To try it out there are the examples XSUAA token, xs-security.json, xs-app.json and Destination.

Why 403?

A 403 from the app router or a CAP service usually means: the scope is not in the token. Paste the token and what the app expects – you see exactly what is missing and where to assign it.

Section Why 403? with token, expected scopes and role collections and the card 2 of 2 missing with fixes
Two expected authorisations are missing from the token.
  1. The token.
  2. Expected scopes, roles or role collections – separated by comma, space or line. AuthTailor understands $XSAPPNAME.
  3. What is missing, each with a fix: add the role to a role collection, assign it to the user or their IdP group, then log out and in again.

Why do I see no JWT with Integration Suite?

Integration Suite, Build Work Zone and many other apps on SAP BTP log you in via an SAP App Router. The App Router is a confidential client: it redeems the code at XSUAA on the server and gives the browser only a session cookie. The JWT stays on the server. No browser and no extension ever sees it – not even a HAR from the DevTools, and Also bearer tokens does not help because the app makes its calls with the cookie.

Instead of a token, AuthTailor shows the note SAP App Router: the token stays on the server under Across the flow in the recording or the pasted HAR – with what the recording reveals anyway:

DetailWhere it comes from
Subaccountsubdomain in the XSUAA host: <subaccount>.authentication.<region>.hana.ondemand.com (or …cloud.sap)
Regionfrom the same host, for example eu10
XSUAA clientthe login’s client_id: the app’s sb-<xsappname>
Trust (origin)origin key of the trust configuration from …/login/callback/<origin> – later appears as origin in the token
IdPlogin page of SAP Cloud Identity Services or SAP ID Service, if XSUAA forwards there
App Routerhost of the App Router from the redirect_uri

Missing state and PKCE are SAP standard with the App Router: it keeps target and return in its own signed cookies and redeems the code with a client secret or certificate. AuthTailor therefore shows this only as a note, not as a serious weakness – likewise missing PKCE when XSUAA asks the IdP. Other apps keep the warning.

Where to look next:

  • The user’s role collections: in the BTP cockpit under subaccount → Security → Users.
  • For a 403 on an API call: get a token from a service key (client credentials), paste it and check it against the expected scopes with Why 403?.
  • Understand the flow: BTP login: App Router → XSUAA → IAS → corporate IdP under Flows.

Finding errors between IAS, corporate IdP and BTP

Behind the App Router, XSUAA hands the login on to IAS, and IAS often to the corporate IdP. How much of this the recording shows depends on the protocol of each leg:

  • SAML: the assertion travels through the browser. Open the step with the SAMLResponse – attributes, NameID, signature and validity are there.
  • OIDC: only the code travels through the browser; the receiving side redeems it on the server. AuthTailor names these legs under Across the flow in the note OIDC between the IdPs: these tokens stay on the server too, for example XSUAA → <tenant>.accounts.ondemand.com or IAS → <corporate IdP>.

For the OIDC legs, the errors are in the IdPs’ logs:

  • IAS ↔ corporate IdP and IAS ↔ BTP: IAS admin console → Monitoring & Reporting → Troubleshooting Logs, filtered by user and time.
  • Corporate IdP: its sign-in logs, for Microsoft Entra ID the sign-in logs with the AADSTS code.
  • BTP: mapped groups and role collections in the BTP cockpit under Security → Users.

If AuthTailor reports Logged on via SAP ID Service, not your own IAS, the login used the default trust sap.default at accounts.sap.com. Your own IAS and the corporate IdP were not involved at all. Look up the origin key of the IAS trust under Security → Trust Configuration, log on again and choose that IdP on the login page. The user must exist with this origin. If only your own IdP should appear, switch off “Available for User Logon” for the default identity provider; in the App Router a route can force it with "identityProvider": "<origin key>".

Flows

Five flows on SAP BTP as sequence diagrams: who talks to whom, what travels along and where it goes wrong.

Section Flows with the choice of five BTP flows, the diagram BTP login app router, XSUAA, IAS, corporate IdP and the detail of step 1
The classic chain of a BTP app.
  1. The choice: BTP login: App Router → XSUAA → IAS → corporate IdP, IAS directly (OIDC) with Entra ID behind it, Principal propagation to S/4HANA on-premise, OAuth2SAMLBearerAssertion (SuccessFactors, S/4HANA Cloud) and Fiori/Gateway: CSRF token, sap-client and session.
  2. The diagram: dashed via the browser, solid from server to server, dotted local.
  3. The detail of the selected step with what travels along. Back, Next and Play walk through the flow.

The general flows for SAML, OAuth and OIDC are in Learning.

Learn

How login and authorisations work on SAP BTP – in six chapters, plus a glossary and the SAP errors.

Section Learn with the opened chapter XSUAA, IAS and the corporate IdP and the links See the flow
An opened chapter with links to the flows.
  1. A chapter: briefly explained, with the typical breaks.
  2. See the flow opens the matching flow in Flows.

The chapters: XSUAA, IAS and the corporate IdP · Scopes, role templates, role collections · Principal propagation and the Cloud Connector · Logon tickets (MYSAPSSO2) and assertion tickets · Fiori and Gateway: CSRF token, sap-client, sap-usercontext · Destinations without surprises. Under SAP errors you search the known errors of XSUAA, SAP Cloud Identity Services and SuccessFactors with cause and fix.

See also

Sources on this page

The superscript numbers in the text point here. Tap one to see the source right where it is used; all sources of this website are listed on one page.

  1. 1

    SAP BTP: tokens, configuration, flows ↑Product · AuthTailor product documentation, README and changelog 1.0.0, SAP · checked on 2026-11-08

  2. 2

    “Why 403?” ↑Product · AuthTailor product documentation, changelog 1.0.0, SAP · checked on 2026-11-08

Frequently asked

Short answers.

Is a service key safe in AuthTailor?
It stays only in the panel’s memory, is shown masked and is never stored or sent. Still: service keys do not belong in tickets or chats.
Why is a scope missing although I assigned the role?
The token only changes with a new login. Log out and in again, then check the new token. If it is still missing, the mapping of the IdP group to the role collection is often missing.
Does AuthTailor load the keys from XSUAA?
On click, yes: without discovery AuthTailor uses the issuer’s /token_keys endpoint. Nothing else goes out.
Why does the recording show no token with Integration Suite?
The SAP App Router redeems the code at XSUAA on the server; the browser only gets a session cookie. AuthTailor shows subaccount, region, XSUAA client, trust and IdP instead. For Why 403?, paste a token from a service key.

Your question isn’t here? Talk to me: +43 664 1964199 office@clouddna.at Get in touch

Contact

Login stuck? Talk to us.

AuthTailor is free. If you need help – setting up single sign-on on SAP BTP, with a stubborn error or for a workshop with your team – get in touch. I reply within one working day, personally.

Martin KochManaging Director, CloudDNAI read every request myself and reply personally.