Initial commit
This commit is contained in:
297
references/connectivity.md
Normal file
297
references/connectivity.md
Normal file
@@ -0,0 +1,297 @@
|
||||
# SAP BTP Connectivity Reference
|
||||
|
||||
## Overview
|
||||
|
||||
SAP BTP provides comprehensive connectivity infrastructure for secure communication between cloud applications and various system types including on-premise systems, private clouds, and public cloud services.
|
||||
|
||||
## Core Components
|
||||
|
||||
### SAP Connectivity Service
|
||||
|
||||
**Purpose**: Secure connections to on-premise and private cloud systems
|
||||
|
||||
**Features:**
|
||||
- Cloud Connector integration
|
||||
- Connectivity Proxy support
|
||||
- Multiple protocol support
|
||||
|
||||
### Cloud Connector
|
||||
|
||||
**Purpose**: Secure link between cloud and on-premise systems
|
||||
|
||||
**Characteristics:**
|
||||
- Operates as reverse proxy in secured networks
|
||||
- Controlled resource access
|
||||
- No inbound firewall rules required
|
||||
- High availability configuration supported
|
||||
|
||||
**Installation:**
|
||||
- Windows or Linux
|
||||
- Portable version available
|
||||
- Master-shadow configuration for HA
|
||||
|
||||
### Connectivity Proxy
|
||||
|
||||
**Purpose**: Cloud-side counterpart to Cloud Connector
|
||||
|
||||
**Supported Environments:**
|
||||
- Cloud Foundry
|
||||
- Kyma
|
||||
- Native Kubernetes
|
||||
- ABAP Environment
|
||||
|
||||
### SAP Destination Service
|
||||
|
||||
**Purpose**: Routing and authentication management
|
||||
|
||||
**Capabilities:**
|
||||
- Store connection properties
|
||||
- Manage OAuth token flows
|
||||
- Custom parameter handling
|
||||
- Design-time configuration
|
||||
|
||||
**Destination Types:**
|
||||
| Type | Use Case |
|
||||
|------|----------|
|
||||
| HTTP | REST/OData APIs |
|
||||
| RFC | SAP function calls |
|
||||
| LDAP | Directory services |
|
||||
| Mail | Email servers |
|
||||
|
||||
### SAP Transparent Proxy
|
||||
|
||||
**Purpose**: Simplify Kubernetes connectivity
|
||||
|
||||
**Features:**
|
||||
- Exposes target systems on local network
|
||||
- Automates authentication
|
||||
- Automatic destination retrieval
|
||||
- Native Kubernetes integration
|
||||
|
||||
## Connectivity Patterns
|
||||
|
||||
### Cloud-to-Cloud
|
||||
|
||||
**Use Cases:**
|
||||
- Kubernetes to databases
|
||||
- Application to SAP services
|
||||
- OData endpoint consumption
|
||||
- Third-party API integration
|
||||
|
||||
**Implementation:**
|
||||
```yaml
|
||||
# destination configuration
|
||||
- name: S4HANA_CLOUD
|
||||
type: HTTP
|
||||
url: [https://my-s4.cloud.sap](https://my-s4.cloud.sap)
|
||||
authentication: OAuth2SAMLBearerAssertion
|
||||
tokenServiceURL: [https://my-s4.cloud.sap/sap/bc/sec/oauth2/token](https://my-s4.cloud.sap/sap/bc/sec/oauth2/token)
|
||||
```
|
||||
|
||||
### Cloud-to-On-Premise
|
||||
|
||||
**Supported Systems:**
|
||||
- ABAP systems (RFC, OData)
|
||||
- Databases
|
||||
- Mail servers
|
||||
- FTP servers
|
||||
- LDAP directories
|
||||
|
||||
**User Propagation:**
|
||||
- Principal propagation supported
|
||||
- SSO via SAML/OAuth
|
||||
- Technical user fallback
|
||||
|
||||
**Configuration Steps:**
|
||||
1. Install Cloud Connector
|
||||
2. Connect to BTP subaccount
|
||||
3. Map virtual hosts to internal systems
|
||||
4. Configure destinations in BTP Cockpit
|
||||
|
||||
### On-Premise-to-Cloud
|
||||
|
||||
**Use Cases:**
|
||||
- RFC callbacks from cloud
|
||||
- Kubernetes cluster service access
|
||||
- Event notifications
|
||||
|
||||
## Destination Configuration
|
||||
|
||||
### HTTP Destination (CAP)
|
||||
```javascript
|
||||
// package.json
|
||||
{
|
||||
"cds": {
|
||||
"requires": {
|
||||
"API_BUSINESS_PARTNER": {
|
||||
"kind": "odata-v2",
|
||||
"model": "srv/external/API_BUSINESS_PARTNER",
|
||||
"credentials": {
|
||||
"destination": "S4HANA",
|
||||
"path": "/sap/opu/odata/sap/API_BUSINESS_PARTNER"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Destination in BTP Cockpit
|
||||
|
||||
| Property | Value | Description |
|
||||
|----------|-------|-------------|
|
||||
| Name | S4HANA | Destination identifier |
|
||||
| Type | HTTP | Protocol type |
|
||||
| URL | [https://...](https://...) | Target system URL |
|
||||
| Proxy Type | Internet/OnPremise | Connection type |
|
||||
| Authentication | OAuth2SAMLBearerAssertion | Auth method |
|
||||
|
||||
### Authentication Types
|
||||
|
||||
| Type | Use Case |
|
||||
|------|----------|
|
||||
| NoAuthentication | Public APIs |
|
||||
| BasicAuthentication | Technical users |
|
||||
| OAuth2ClientCredentials | Server-to-server |
|
||||
| OAuth2SAMLBearerAssertion | User propagation |
|
||||
| OAuth2UserTokenExchange | Token exchange |
|
||||
| PrincipalPropagation | SSO on-premise |
|
||||
| ClientCertificateAuthentication | mTLS |
|
||||
|
||||
## Cloud Connector Configuration
|
||||
|
||||
### System Mapping
|
||||
|
||||
```
|
||||
Cloud Configuration:
|
||||
Virtual Host: s4hana.cloud
|
||||
Virtual Port: 443
|
||||
|
||||
On-Premise Configuration:
|
||||
Internal Host: s4hana.internal.corp
|
||||
Internal Port: 44300
|
||||
Protocol: HTTPS
|
||||
```
|
||||
|
||||
### Access Control
|
||||
|
||||
- Define allowed resources
|
||||
- Path-based filtering
|
||||
- HTTP method restrictions
|
||||
|
||||
### High Availability
|
||||
|
||||
1. Install secondary Cloud Connector
|
||||
2. Configure as shadow instance
|
||||
3. Automatic failover
|
||||
|
||||
## CAP Integration
|
||||
|
||||
### Remote Service Configuration
|
||||
```cds
|
||||
// srv/external/API_BUSINESS_PARTNER.cds
|
||||
using { API_BUSINESS_PARTNER as external } from './API_BUSINESS_PARTNER';
|
||||
|
||||
service RemoteService {
|
||||
entity BusinessPartners as projection on external.A_BusinessPartner {
|
||||
BusinessPartner,
|
||||
BusinessPartnerFullName,
|
||||
BusinessPartnerType
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
### Service Implementation
|
||||
```javascript
|
||||
const cds = require('@sap/cds');
|
||||
|
||||
module.exports = cds.service.impl(async function() {
|
||||
const bupa = await cds.connect.to('API_BUSINESS_PARTNER');
|
||||
|
||||
this.on('READ', 'BusinessPartners', async (req) => {
|
||||
return bupa.run(req.query);
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
## ABAP Integration
|
||||
|
||||
### Communication Arrangement
|
||||
|
||||
1. Create Communication System
|
||||
2. Define Communication Arrangement
|
||||
3. Configure Authentication
|
||||
4. Test Connection
|
||||
|
||||
### Service Consumption Model
|
||||
|
||||
```abap
|
||||
" Generated proxy class usage
|
||||
DATA(lo_client) = NEW /sap/bc/bupa/a_businesspartner( ).
|
||||
|
||||
TRY.
|
||||
DATA(lt_partners) = lo_client->get_business_partners(
|
||||
iv_top = 100
|
||||
).
|
||||
CATCH cx_remote_call_error INTO DATA(lx_error).
|
||||
" Handle error
|
||||
ENDTRY.
|
||||
```
|
||||
|
||||
### RFC Destination (SM59 equivalent)
|
||||
- Configure in Communication Systems app
|
||||
- Support for trusted RFC
|
||||
- User propagation options
|
||||
|
||||
## Kyma Connectivity
|
||||
|
||||
### Transparent Proxy Deployment
|
||||
```yaml
|
||||
apiVersion: gateway.kyma-project.io/v1beta1
|
||||
kind: APIRule
|
||||
metadata:
|
||||
name: my-api
|
||||
spec:
|
||||
gateway: kyma-gateway.kyma-system.svc.cluster.local
|
||||
host: my-api
|
||||
rules:
|
||||
- path: /.*
|
||||
methods: ["GET", "POST"]
|
||||
accessStrategies:
|
||||
- handler: jwt
|
||||
```
|
||||
|
||||
### Destination Binding
|
||||
```yaml
|
||||
apiVersion: services.cloud.sap.com/v1
|
||||
kind: ServiceBinding
|
||||
metadata:
|
||||
name: destination-binding
|
||||
spec:
|
||||
serviceInstanceName: destination-instance
|
||||
secretName: destination-secret
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Use Transparent Proxy** for Kubernetes connectivity
|
||||
2. **Design-time configuration** via Destination Service
|
||||
3. **Connectivity Service** for hybrid cloud-to-on-premise
|
||||
4. **Principal propagation** when user context needed
|
||||
5. **Technical users** for batch/background processing
|
||||
6. **High availability** Cloud Connector for production
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Issue | Cause | Solution |
|
||||
|-------|-------|----------|
|
||||
| Connection timeout | Firewall blocking | Check Cloud Connector logs |
|
||||
| Authentication failed | Token expired | Refresh OAuth configuration |
|
||||
| Destination not found | Wrong name | Verify destination exists in subaccount |
|
||||
| Certificate error | Untrusted CA | Import certificate in Cloud Connector |
|
||||
|
||||
## Source Documentation
|
||||
|
||||
- Connecting to Remote Systems: [https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/connecting-to-remote-systems-d61a5fc.md](https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/connecting-to-remote-systems-d61a5fc.md)
|
||||
- SAP Connectivity Service: [https://help.sap.com/docs/connectivity](https://help.sap.com/docs/connectivity)
|
||||
- Cloud Connector: [https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/cloud-connector](https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/cloud-connector)
|
||||
Reference in New Issue
Block a user