abap_cloud_platform
A TypeScript library of the Cloud Foundry calls that walk down to an ABAP service instance, read its SAP_ADT service key and log a user in, so a tool outside the system can reach it.
Reaching an ABAP repository from outside takes several Cloud Foundry calls before the first request to the system: a token, then the organisation, the space, the service instances, and the key that carries the system's URL and credentials. That sequence is the library. cfInfo and cfPasswordGrant get the token, cfOrganizations, cfSpaces, cfServiceInstances and cfServices walk down to the instance, and cfInstanceServiceKeys with cfInstanceServiceKey read its keys; the key it looks for is named SAP_ADT, which the README says is usually used by EclipseEclipse IDEThe Java-based IDE and plugin platform, downloaded as an archive per operating system and extended through p2 update sites. For the things here, the installation SAP's ABAP Development Tools and their companion plugins are added to.. cfCodeGrant opens a browser window for the user to log in, and getAbapUserInfo and getAbapSystemInfo are the two calls it then makes against the ABAP system with the token that comes back. It stops at the login: the maintainer describes it as the minimum needed to access an ABAP repository, so the calls a developer tool would make afterwards are not in it.
Facts
Where it sits
Who is behind it
In the atlas: maintains 14, contributes to 21@marcellourbanimaintainerLars HvamContributes to this
In the atlas: maintains 13, contributes to 92, wrote 1@larshp1 contributor
What it declares
Every artifact
- Type
- Package
- Origin
- Independently maintained
- Runtime
- Node.js
As a package
- Where it runs
- does not say
- Distributed through
- does not say
Connections
Establishing who is calling and making that identity available
Download
Install
npm add abap_cloud_platformDerived from the package name. No recipe recorded; the README has the configuration.
README
quoted from marcellourbani/abap_cloud_platform under MIT, readAbap cloud platform
The minimum cloud foundry/SAP cloud platform APIs required to access an ABAP repository. Might be useful for other cloud foundry services
Usage example
Get the authentication token
const CFENDPOINT = "https://api.cf.eu10.hana.ondemand.com" // EU cloud trial
// get the login URL
const info = await cfInfo(CFENDPOINT)
const loginUrl = info.links.login.href
// get logon token
const pwdGrant = await cfPasswordGrant(loginUrl, "username", "password")
const token = pwdGrant.accessToken
Use it to get the cf account organizations/spaces/instances/...
// cf Organizations
const organizations = await cfOrganizations(CFENDPOINT, token)
//cf spaces
const spaces = await cfSpaces(CFENDPOINT, organizations[0].entity, token)
// cf Service instances
const instances = await cfServiceInstances(CFENDPOINT, spaces[0].entity, token)
// cf Services
const services = await cfServices(CFENDPOINT, token)
...and then get the ABAP service key
// now I want the ABAP service key, so let's find the right service instance
const findAbapTag = (tags: string[]) => tags && tags.find(t => t === "abapcp")
const abapService = services.find(s => findAbapTag(s.entity.tags))
const abapServiceInstance = instances.find(
i => i.entity.service_guid === abapService?.metadata.guid
)
// list of all keys
const abapServiceKeys = await cfInstanceServiceKeys(
CFENDPOINT,
abapServiceInstance.entity,
token
)
// a single key named SAP_ADT, usually used by Eclipse
const abapServiceKey = await cfInstanceServiceKey(
CFENDPOINT,
abapServiceInstance.entity,
"SAP_ADT",
token
)
Finally ask the user to login (on his browser) and get some ABAP code
const { url, clientid, clientsecret } = abapServiceKey.entity.credentials.uaa
// code token This will open a browser window where the user can login.
// Beware: no timeout
const codeGrant = await cfCodeGrant(url, clientid, clientsecret, loginServer())
const headers = {
Authorization: `bearer ${codeGrant.accessToken}`,
Accept: "text/plain"
}
const resp = await got(
`${key.credentials.url}/sap/bc/adt/oo/classes/cx_root/source/main`,
{ headers }
)
Get system details based on the given token
const user = await getAbapUserInfo(key.credentials.url, codeGrant.accessToken)
console.log(user.UNAME)
const info = await getAbapSystemInfo(key.credentials.url, codeGrant.accessToken)
console.log(info.SYSID)History
Others providing
Compare all 9 on the Authentication page →- abap_jwt_generatorabap_jwt_generatorGenerates a signed JSON Web Token in ABAP from an explicit header and claim, a stored profile in table ZJWT_PROFILE, or a shared secret, signing through a PSE profile or with the secret.independent, abapGenerates signed JSON Web Tokens in ABAP
- abap-pwnedpasswordsabap-pwnedpasswordsChecks from ABAP whether a password appears in the Have I Been Pwned breached-password list, wrapping the Pwned Passwords API V3 in one call that answers with a boolean.independent, abapChecks passwords against Have I Been Pwned from ABAP
- abapOAuthAzureabapOAuthAzureAn Enhancement Spot OA2C_SPECIFICS implementation for Microsoft Azure, written against ABAP's OAuth 2.0 Client API, with a one-sentence README that leaves configuration to SAP's help page.independent, abapOA2C_SPECIFICS implementation for Microsoft Azure OAuth 2.0 in ABAP
- abap2oauth2abap2oauth2An ABAP API for OAuth 2.0 authentication that registers a provider's client ID and secret as a named consumer and implements signature method 3, the one Google uses.independent, abapABAP API for OAuth 2.0 authentication
- abapNTLMabapNTLMAn HTTP NTLM client for ABAP, with the RC4, MD4 and DES algorithms the protocol needs implemented in ABAP, which its maintainer says seems to work only some of the time.independent, abapHTTP NTLM client for ABAP
- decodesapsso2decodesapsso2A TypeScript library that decodes a MYSAPSSO2 logon ticket into its user, client, system and validity fields, and returns the signature without validating it, so it never shows a ticket is genuine.independent, abapTypeScript decoder for MYSAPSSO2 logon tickets
- Cloud ConnectorCloud ConnectorSAP's on-premises agent that links SAP BTP applications to systems in a customer's own network, as a reverse invoke proxy that exposes only the systems and resources it is configured to allow.sap official, btpSAP's on-premises agent linking SAP BTP to customer-network systems
- abap-aws-sigv4abap-aws-sigv4Signs outbound HTTP calls to AWS APIs with AWS Signature Version 4, directly from ABAP.independent, abapSigns outbound HTTP calls to AWS APIs with AWS Signature Version 4, directly from ABAP.
Details
Sources
Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.
Compatibility and provenance
Contributors
History in the atlas
- First seen.
For your agent
- Ref
artifact:marcellourbani-abap-cloud-platform- JSON
- /artifacts/marcellourbani-abap-cloud-platform.json
- MCP
- Connecting an agent