CAP 인증 없이 배포 그만 — XSUAA 필수 #shorts #SAP #CAP

Moderator · 조회 1

CAP 인증 없이 배포 그만 — XSUAA 필수 #shorts #SAP #CAP

Moderator · 조회 1

CAP Java 인증 설정, 빼먹으면 진짜 큰일

CAP Java 애플리케이션을 BTP에 배포할 때 인증 설정을 빠뜨리면 엔드포인트가 외부에 그대로 노출된다. XSUAA와 JWT 설정 방법을 핵심만 정리했다.

기본 보안 설정 — xs-security.json

BTP에서 XSUAA 서비스 인스턴스를 생성할 때 xs-security.json으로 OAuth 스코프와 역할을 정의한다.

{
  "xsappname": "my-cap-app",
  "tenant-mode": "dedicated",
  "scopes": [
    { "name": "$XSAPPNAME.read",  "description": "Read access" },
    { "name": "$XSAPPNAME.write", "description": "Write access" }
  ],
  "role-templates": [
    { "name": "Viewer", "scope-references": ["$XSAPPNAME.read"] },
    { "name": "Editor", "scope-references": ["$XSAPPNAME.read","$XSAPPNAME.write"] }
  ]
}

CDS 레벨 접근 제어 — @requires / @restrict

서비스나 엔티티에 직접 권한을 선언하면 CAP 프레임워크가 자동으로 JWT 스코프를 검증한다.

// srv/cat-service.cds
@requires: 'authenticated-user'
service CatalogService {
  @restrict: [
    { grant: 'READ',  to: 'Viewer' },
    { grant: ['WRITE','CREATE','DELETE'], to: 'Editor' }
  ]
  entity Books as projection on db.Books;
}

MTA 배포 시 XSUAA 바인딩

mta.yaml에서 XSUAA 서비스를 requires로 선언해야 JWT가 자동 주입된다. 로컬에서는 cds bind --to xsuaa로 BTP 서비스를 직접 연결한다.

# mta.yaml (requires 섹션)
requires:
  - name: my-cap-app-xsuaa

resources:
  - name: my-cap-app-xsuaa
    type: org.cloudfoundry.managed-service
    parameters:
      service: xsuaa
      service-plan: application
      path: ./xs-security.json

핵심 한 줄

CAP Java 보안은 xs-security.json + @restrict 두 단계로 완성 — 하나라도 빠지면 API가 열린 창문이 된다.


⚠️ 비공식 콘텐츠 안내

본 게시글은 btpstacks.com의 독립 학습 콘텐츠이며 SAP SE와 무관합니다. 공식 문서는 help.sap.com을 참고하세요.

SAP, ABAP, SAP BTP, SAPUI5, SAP Fiori는 독일 및 기타 국가에서 SAP SE의 상표 또는 등록상표입니다.