tryGetDestination() fails with "Failed to get destination" for NoAuthentication+IAS destination in subscriber tenant context

Đang mở
#1,280 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
48/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
java, spring-boot
Lĩnh vực
backend, cloud

Hướng nghiên cứu

Bắt đầu từ DestinationAccessor.getLoader().tryGetDestination và so sánh đường dẫn phân giải của nó với DestinationService.getAllDestinationProperties(). Tái hiện trường hợp subscriber-tenant bằng các thuộc tính NoAuthentication và IAS đã nêu, sau đó truy vết lý do quá trình phân giải đầy đủ thất bại trong khi metadata vẫn được lấy thành công. Được xem là hoàn tất khi tryGetDestination trả về destination mà không trao đổi user token và giữ nguyên các thuộc tính liên quan đến IAS.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug
Describe the Bug

When calling DestinationAccessor.getLoader().tryGetDestination("OneSimAPI_Destination") in a subscriber tenant context, the SDK fails with "Failed to get destination." for a destination configured with
Authentication=NoAuthentication and IAS-based M2M properties (cloudsdk.ias-dependency-name, tokenService.body.url).

The same destination is successfully returned by DestinationService.getAllDestinationProperties() (metadata-only call). The failure happens only during the full resolution via tryGetDestination.

This works correctly for another tenant on the same landscape with the same destination configuration (same auth type, same dependency name, different tokenService.body.url).

Steps to Reproduce
  1. Configure a BTP destination in a subscriber subaccount with:
    • Authentication: NoAuthentication
    • cloudsdk.ias-dependency-name: sim-supplier-search-api
    • tokenService.body.url: https://.accounts.ondemand.com
  2. Call DestinationAccessor.getLoader().tryGetDestination("OneSimAPI_Destination") in the context of the subscriber tenant
  3. Observe failure with "Failed to get destination."
Expected Behavior

tryGetDestination() should successfully resolve the destination. Since the auth type is NoAuthentication, the SDK should not attempt user token exchange. The destination should be returned with its properties so
our code can handle the IAS token fetch separately using the cloudsdk.ias-dependency-name and tokenService.body.url properties.

Screenshots

No response

Used Versions
  • SAP Cloud SDK: 5.20.0
  • Java: 21
  • Spring Boot: 3.x
  • Landscape: CF EU30 (prod)
Code Examples

// Our call in DestinationCallProcessor.java
private Try tryGetDestination(String destinationName) {
return DestinationAccessor.getLoader().tryGetDestination(destinationName);
}

Destination configuration (sensitive values removed):
{
"Name": "OneSimAPI_Destination",
"Type": "HTTP",
"Authentication": "NoAuthentication",
"ProxyType": "Internet",
"URL": "https://.prod-eu30.supplier-info-management.procurement.cloud.sap/api/ambassador-srv-api/v1",
"cloudsdk.ias-dependency-name": "sim-supplier-search-api",
"tokenService.body.url": "https://.accounts.ondemand.com"
}

Stack Trace

No response

Log File
Log file ...
Affected Development Phase

Production

Impact

Blocked

Timeline

No response

Ngôn ngữ chính
Java
Star
41
Fork
33
Merge trung bình
18 giờ 34 phút
Pull request đã merge (30 ngày)
19

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của SAP/cloud-sdk-java

Tất cả issue của SAP/cloud-sdk-java

Issue tương tự

Thêm issue về Java

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.