Authentication
On BTP the concern splits three ways, and the pieces are not alternatives. SAP Authorization and Trust ManagementSAP Authorization and Trust Management serviceThe OAuth server behind a BTP application: issues the JWT the app checks, holds the scopes and role collections it checks against, and brokers trust to an identity provider. Bound, never installed.sap official, btp is the OAuth server that issues the JWT an application checks; Cloud Identity ServicesCloud Identity ServicesIdentity Authentication and Identity Provisioning as one tenant: the login, the user store or the federation to a corporate identity provider, and the provisioning of users into whatever sits behind it.sap official, btp is the login itself, the user store or the federation to a corporate identity provider behind it; and carrying that identity onward, to a resource app or into the customer's own network, is a third question with its own entries. An application binds the first and usually inherits the second.
Overview
SAP Authorization and Trust ManagementSAP Authorization and Trust Management serviceThe OAuth server behind a BTP application: issues the JWT the app checks, holds the scopes and role collections it checks against, and brokers trust to an identity provider. Bound, never installed.sap official, btp is the OAuth 2.0 authorization server: a subaccount cross-configures trust with an identity provider, the provider confirms the user with a SAML bearer assertion, and the service determines that user's authorizations and signs the JWT an application reads; an API client authenticates against the service directly instead, with no user present. The identity provider is Cloud Identity ServicesCloud Identity ServicesIdentity Authentication and Identity Provisioning as one tenant: the login, the user store or the federation to a corporate identity provider, and the provisioning of users into whatever sits behind it.sap official, btp where a tenant has been asked for, and SAP ID service, SAP's own tenant, where nobody has changed the trust. @sap/approuter@sap/approuterSAP's Node.js application router: the single entry point in front of a business application's microservices, which authenticates the user, forwards each request to a backend by route and serves static content.sap official, btp is the standard implementation of the gateway: it starts the authentication, checks for cross-site request forgery and forwards each request to the resource apps with the user information.
Not covered: At the token it signs. The gateway does not hide the backends: its own README states that they stay directly reachable and must validate the JWT and check the scopes themselves, so a request is accepted or refused in the resource app and not on the platform. SAP ID service, the identity provider a subaccount trusts until someone changes that, has no mechanism to enforce multifactor authentication on its users. What a validated caller may then do is authorizationAuthorizationDeciding who may read or change what, at service, entity and instance level — role checks, forwarded user context, and restrictions evaluated as query filters rather than after the fact.SAP and community, unassessed, a different service and a different question.
core-and-community is a assessment of the corpus: SAP's services and the router behind this door, and independently maintained packages that sit on top of the SAP Authorization and Trust Management service and Identity Authentication. The pages checked state what the platform does and where the application takes over; none states an intent, which is why the relationship is left unassessed rather than called narrow by design.
Independently maintained packages wrap the OAuth server and the identity provider for cases their own documentation does not cover. @arc-mcp/xsuaa-auth@arc-mcp/xsuaa-authThe client-to-server authentication stack for an MCP server on SAP BTP: an XSUAA OAuth proxy, dynamic client registration, a chained bearer verifier, and a separate entrypoint for per-user principal propagation.independent, btp puts the XSUAA OAuth flow, dynamic client registration and bearer verification in front of an MCP server's HTTP route, @saptools/cf-xsuaa@saptools/cf-xsuaaA command line and Node.js API that reads the XSUAA binding of a Cloud Foundry app and prints an OAuth2 client_credentials token for it, cached until it expires.independent, btp prints a deployed Cloud Foundry app's own client_credentials token out of its binding, and sap-mcp-auth@marianfoo/sap-mcp-authA shared browser-login and session module for SAP MCP servers: it drives a Playwright browser through SAP Identity Authentication, caches the session cookies and returns a cookie header an HTTP client can send.independent, btp completes the SAP Identity Authentication login in a browser and keeps the session for a program.
Artifacts
Tasks
Get a token for a protected BTP endpoint with no user signed in
A script, a job or another service calls a protected endpoint of a deployed SAP BTP application and is accepted, with nobody at a browser.
Obtaining the token and keeping it fresh. What the called endpoint then lets the client do is authorization, and carrying a named person's identity is a separate outcome.
SAP Authorization and Trust Management serviceIssues the token. SAP's architecture page separates the API client from the browser user: the client gets its credentials from this service and authenticates against it directly, and the client credentials grant is among the grant types the environment supports.
Remaining work: Create the service instance and its OAuth client, keep the client secret somewhere the caller can read, call the token endpoint on each run and handle expiry. The endpoint being called still validates the JWT and checks its scopes itself.
@saptools/cf-xsuaaReads the XSUAA binding out of a deployed Cloud Foundry app and prints a client_credentials token for that app, which is the token a protected endpoint of it expects rather than the personal token cf oauth-token returns.
Remaining work: Install it on Node.js 20 or later with the cf CLI on the PATH, and supply SAP_EMAIL and SAP_PASSWORD for the first secret fetch. Nothing about the called endpoint's own validation changes.
OAuth 2.0 on SAP BTPGrants an access token on the client's credentials alone, with no user interaction, which the catalogue record names for protecting an API or an IoT device.
Conditions: The one plan in the Discovery Center record is listed in regions marked Neo and in no Cloud Foundry environment. SAP states the service is being removed from the Eligible Cloud Services List on December 31, 2028 in those regions.
Remaining work: Check the entitlement before anything else: the plan has to exist in the region the application runs in, and a subscription has an end date.
Put the company's own identity provider behind a BTP application's login
People sign in to a BTP application with their corporate account, under the company's own password and multifactor policy rather than SAP's.
The trust and the federation that make the corporate account the one that logs in. Mapping its attributes to what an application expects, and replicating the users themselves, are named here and not assessed.
Cloud Identity ServicesStands between the application and the company's own provider: the users are hosted in its tenant or read from the corporate provider behind it, and the password and authentication policies enforced are the company's own.
Remaining work: Ask for a tenant, connect the corporate provider to it, and map the attributes the provider returns to the ones the applications expect.
SAP Authorization and Trust Management serviceHolds the subaccount's side of the trust. Identity federation is what frees the platform and its applications from storing credentials and authenticating people themselves, and the trust is established by cross-configuring the endpoints of both systems.
Remaining work: Cross-configure the endpoints, and move the subaccount off the trust it starts with: that is SAP ID service, where SAP states there is no mechanism to enforce multifactor authentication on its users.
Reach a system in the customer's own network as the signed-in user
An application on SAP BTP calls a system inside the customer's network and that system sees the person who signed in, not a shared service user.
Carrying the identity to the on-premise system. What that system then permits the person to do is its own, and the cloud login itself is a separate outcome.
Cloud ConnectorForwards the cloud user's identity to the internal system instead of a password of its own. Principal propagation is one of three authentication types it offers towards an internal system, beside basic authentication and technical user propagation.
Conditions: Trust has to be configured explicitly to the cloud entities whose user tokens are accepted as valid. The calling application's destination configuration decides which of the three authentication types is used.
Remaining work: Install and register the connector, add the access control entry for the system, and set up the certificate and the subject pattern the internal system resolves a logon name from.
@arc-mcp/xsuaa-authDoes the cloud half of this for an MCP server: it resolves a destination with the verified user's own JWT and returns the per-user credentials and a proxy descriptor for the Cloud Connector, so the call leaves as that user rather than as a service account.
Remaining work: Assemble the outgoing request. Its README leaves the headers, the cookies and the forward-proxy call to the consuming server, and the destination and the connector still have to be configured as above.
Sign a browser user in to a BTP application and have its backends accept the result
A person opens a deployed SAP BTP application in a browser, logs in once, and each of the application's own backend endpoints accepts the request as that person.
The login and the token the backends read. Which role collections the person holds is authorization, and reaching a system outside the subaccount is a separate outcome.
@sap/approuterIs the single entry point: it starts the authentication for the routes that need it, checks for cross-site request forgery, serves the static content and forwards each request onward with the user information.
Remaining work: The backends. Its own README states that they stay directly reachable past the router and must validate the JWT and check the scopes themselves, so the router alone does not make an endpoint safe to expose.
SAP Authorization and Trust Management serviceTurns the successful login into the token the application reads. The identity provider's SAML bearer assertion is presented to this service, it determines that user's authorizations, and it signs the JWT with the key whose public half arrives in each app's binding.
Remaining work: Cross-configure the trust with the identity provider, declare the application's authorizations in its security descriptor, and bind every app of the application to the one service instance.
Cloud Identity ServicesAuthenticates the person. It is the identity provider a subaccount trusts, and the place single sign-on across the SAP applications in the landscape is decided.
Remaining work: Ask for a tenant and establish the trust: a subaccount trusts SAP ID service until someone changes that.
Content
Show 31 more
Show 5 more
Seen working
No license Neither the package manifest nor the repository tree declares a licence.
Functional boundary The repository publishes no licence, so reusing its code needs the author's permission.
Details
Coverage
Comparison properties
These are the questions used to compare what the artifacts do. Values come from their documentation and may apply to a particular ecosystem or runtime. Each recorded value in the comparison opens its statement and sources.
For your agent
- Ref
capability:authentication- JSON
- /capabilities/authentication.json
- MCP
- Connecting an agent