Assuming that you have enabled the API Management capability in Integration Suite, I will start with API Provider creation.
1. Create API Proxy – To Generate OAuth Authentication Token
Create an API Proxy with URL type,
2. Add Policy – To generate OAuth 2.0 Authentication
OAuth v2.0 – To generate the Access Token for the ac
<OAuthV2 async=”false” continueOnError=”false” enabled=”true” xmlns=”http://www.sap.com/apimgmt”>
<ExternalAuthorization>false</ExternalAuthorization>
<Operation>GenerateAccessToken</Operation>
<GenerateResponse enabled=”true”/>
<SupportedGrantTypes>
<GrantType>client_credentials</GrantType>
</SupportedGrantTypes>
<Tokens/>
</OAuthV2>
3. Create API Provider
Connection
TypeOn PremiseHostVirtual Host, as mentioned in Cloud ConnectorPortVirtual Port, as mentioned in Cloud ConnectorLocation IDAs mentioned in Cloud ConnectorAuthenticationNONEAdditional Properties:sap-client: XXX
Catalog Service Settings
Path Prefix/sap/opu/odataService Collection URL
Authentication type
Username
Password
Test connection:
4. Create Key Value Map to store the credentials to S/4HANA
5. Create API Proxy – To call the OData Service from S/4HANA
Select the API Provider, click on Discover to select the API which you wanted to use
Select the API & then click on Create.
6. Add Policies to the API Proxy created to call the OData target endpoint on S/4HANA side
Verify API Key – To verify the key which you are going to pass while calling the API.
Where do you get the API? – When you create the Product, and a Subscription, after creating a Subscription in the Developer Hub you will get a Key. That key is to be provided to the Consumer, and this Policy will verify the key sent by the consumer.
<!–Specify in the APIKey element where to look for the variable containing the api key–>
<VerifyAPIKey async=’true’ continueOnError=’false’ enabled=’true’
xmlns=’http://www.sap.com/apimgmt’>
<APIKey ref=’request.header.apikey ‘/>
</VerifyAPIKey>
OAuth 2.0 – To verify OAuth Token generated
<OAuthV2 async=”false” continueOnError=”false” enabled=”true” xmlns=”http://www.sap.com/apimgmt”>
<ExternalAuthorization>false</ExternalAuthorization>
<!– valid values are GenerateAccessToken, GenerateAccessTokenImplicitGrant, GenerateAuthorizationCode ,
RefreshAccessToken , VerifyAccessToken , InvalidateToken , ValidateToken –>
<Operation>VerifyAccessToken</Operation>
<GenerateResponse enabled=”true”/><SupportedGrantTypes/>
<Tokens/>
</OAuthV2>
Assign Message – Before setting up basic authentication in a later step, we need to remove the existing Authorization header. I’ve used the Assign Message policy to achieve this with the following configuration:
<!– This policy can be used to create or modify the standard HTTP request and response messages –>
<AssignMessage async=”false” continueOnError=”true” enabled=”true” xmlns=’http://www.sap.com/apimgmt’>
<Remove>
<Headers>
<Header name=”Authorization”></Header>
</Headers>
</Remove>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<AssignTo createNew=”false” type=”request”></AssignTo>
</AssignMessage>
Key Value Map Operations – To fetch the credentials saved in the Key Value Mapping
<KeyValueMapOperations mapIdentifier=”SAP_S4HANA_Credentials” async=”true” continueOnError=”false” enabled=”true” xmlns=”http://www.sap.com/apimgmt”>
<Get assignTo=”private.usernameFromKVM” index=”1″>
<Key>
<Parameter>Username</Parameter>
</Key>
</Get>
<Get assignTo=”private.passwordFromKVM” index=”1″>
<Key>
<Parameter>Password</Parameter>
</Key>
</Get>
<Scope>environment</Scope>
</KeyValueMapOperations>
Basic Authentication – To pass the credentials fetched in the previous step.
<BasicAuthentication async=’true’ continueOnError=’false’ enabled=’true’ xmlns=’http://www.sap.com/apimgmt’>
<Operation>Encode</Operation>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<User ref=’private.usernameFromKVM’></User>
<Password ref=’private.passwordFromKVM’></Password>
<AssignTo>request.header.Authorization</AssignTo>
</BasicAuthentication>
Assign Message – So you get an error as, “{“fault”:{“faultstring”:”Unsupported Encoding “br””,”detail”:{“errorcode”:”protocol.http.UnsupportedEncoding”}}}“.
BR is a data format Brotli which is often defined by backend for webpage loading and not accepted by default. And this Assign Message will help your message reach the target.
<!– This policy can be used to create or modify the standard HTTP request and response messages –>
<AssignMessage async=”false” continueOnError=”false” enabled=”true” xmlns=’http://www.sap.com/apimgmt’>
<!– Sets a new value to the existing parameter –>
<Set>
<Headers>
<Header name=”Accept-Encoding”>gzip,deflate</Header>
</Headers>
</Set>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew=”false” type=”request”></AssignTo>
</AssignMessage>
7. Create Product & Add the both the API Proxies
8. Create a Subscription for the Product created
7. It’s time to test!
Assuming that you have enabled the API Management capability in Integration Suite, I will start with API Provider creation.1. Create API Proxy – To Generate OAuth Authentication TokenCreate an API Proxy with URL type, 2. Add Policy – To generate OAuth 2.0 AuthenticationOAuth v2.0 – To generate the Access Token for the ac<OAuthV2 async=”false” continueOnError=”false” enabled=”true” xmlns=”http://www.sap.com/apimgmt”>
<ExternalAuthorization>false</ExternalAuthorization>
<Operation>GenerateAccessToken</Operation>
<GenerateResponse enabled=”true”/>
<SupportedGrantTypes>
<GrantType>client_credentials</GrantType>
</SupportedGrantTypes>
<Tokens/>
</OAuthV2> 3. Create API ProviderConnectionTypeOn PremiseHostVirtual Host, as mentioned in Cloud ConnectorPortVirtual Port, as mentioned in Cloud ConnectorLocation IDAs mentioned in Cloud ConnectorAuthenticationNONEAdditional Properties:sap-client: XXXCatalog Service SettingsPath Prefix/sap/opu/odataService Collection URL/IWFND/CATALOGSERVICE;v=2/ServiceCollectionAuthentication typeBASICUsernameSAP’s User Name for communicationPassword***Test connection:4. Create Key Value Map to store the credentials to S/4HANA5. Create API Proxy – To call the OData Service from S/4HANASelect the API Provider, click on Discover to select the API which you wanted to useSelect the API & then click on Create. 6. Add Policies to the API Proxy created to call the OData target endpoint on S/4HANA sideVerify API Key – To verify the key which you are going to pass while calling the API.Where do you get the API? – When you create the Product, and a Subscription, after creating a Subscription in the Developer Hub you will get a Key. That key is to be provided to the Consumer, and this Policy will verify the key sent by the consumer. <!–Specify in the APIKey element where to look for the variable containing the api key–>
<VerifyAPIKey async=’true’ continueOnError=’false’ enabled=’true’
xmlns=’http://www.sap.com/apimgmt’>
<APIKey ref=’request.header.apikey ‘/>
</VerifyAPIKey> OAuth 2.0 – To verify OAuth Token generated<OAuthV2 async=”false” continueOnError=”false” enabled=”true” xmlns=”http://www.sap.com/apimgmt”>
<ExternalAuthorization>false</ExternalAuthorization>
<!– valid values are GenerateAccessToken, GenerateAccessTokenImplicitGrant, GenerateAuthorizationCode ,
RefreshAccessToken , VerifyAccessToken , InvalidateToken , ValidateToken –>
<Operation>VerifyAccessToken</Operation>
<GenerateResponse enabled=”true”/><SupportedGrantTypes/>
<Tokens/>
</OAuthV2> Assign Message – Before setting up basic authentication in a later step, we need to remove the existing Authorization header. I’ve used the Assign Message policy to achieve this with the following configuration:<!– This policy can be used to create or modify the standard HTTP request and response messages –>
<AssignMessage async=”false” continueOnError=”true” enabled=”true” xmlns=’http://www.sap.com/apimgmt’>
<Remove>
<Headers>
<Header name=”Authorization”></Header>
</Headers>
</Remove>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<AssignTo createNew=”false” type=”request”></AssignTo>
</AssignMessage>Key Value Map Operations – To fetch the credentials saved in the Key Value Mapping<KeyValueMapOperations mapIdentifier=”SAP_S4HANA_Credentials” async=”true” continueOnError=”false” enabled=”true” xmlns=”http://www.sap.com/apimgmt”>
<Get assignTo=”private.usernameFromKVM” index=”1″>
<Key>
<Parameter>Username</Parameter>
</Key>
</Get>
<Get assignTo=”private.passwordFromKVM” index=”1″>
<Key>
<Parameter>Password</Parameter>
</Key>
</Get>
<Scope>environment</Scope>
</KeyValueMapOperations> Basic Authentication – To pass the credentials fetched in the previous step.<BasicAuthentication async=’true’ continueOnError=’false’ enabled=’true’ xmlns=’http://www.sap.com/apimgmt’>
<Operation>Encode</Operation>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<User ref=’private.usernameFromKVM’></User>
<Password ref=’private.passwordFromKVM’></Password>
<AssignTo>request.header.Authorization</AssignTo>
</BasicAuthentication> Assign Message – So you get an error as, “{“fault”:{“faultstring”:”Unsupported Encoding “br””,”detail”:{“errorcode”:”protocol.http.UnsupportedEncoding”}}}”. BR is a data format Brotli which is often defined by backend for webpage loading and not accepted by default. And this Assign Message will help your message reach the target. <!– This policy can be used to create or modify the standard HTTP request and response messages –>
<AssignMessage async=”false” continueOnError=”false” enabled=”true” xmlns=’http://www.sap.com/apimgmt’>
<!– Sets a new value to the existing parameter –>
<Set>
<Headers>
<Header name=”Accept-Encoding”>gzip,deflate</Header>
</Headers>
</Set>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew=”false” type=”request”></AssignTo>
</AssignMessage> 7. Create Product & Add the both the API Proxies 8. Create a Subscription for the Product created7. It’s time to test! Read More Technology Blog Posts by Members articles
#SAP
#SAPTechnologyblog