日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用注解 @requires 给 SAP CAP CDS 模型添加权限控制

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用注解 @requires 给 SAP CAP CDS 模型添加权限控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用 @requires 注解不需要提前導入:

輸入命令行 cds watch,可以自動掃描并監控 .cds 等格式的文件內容變化:

使用 annotate + entity name + with + 注解實現權限控制:

如果注解出現 typo,編譯不報錯:

annotate BrowseBooksService with @(requires: 'authenticated-user'); annotate ShopService.Books with @(requires: ['Vendor', 'ProcurementManager']); annotate ShopService.ReplicationAction with @(requires: 'system-user');

在此示例中,BrowseBooksService 服務對經過身份驗證的用戶開放,但對匿名用戶不開放。 具有 Vendor 或 ProcurementManager 角色的用戶可以訪問 ShopService.Books 實體。 未綁定操作 ShopService.ReplicationAction 只能由技術用戶觸發。

當通過 @requires 限制服務訪問時,服務的元數據端點(即 /$metadata 以及服務根 /)默認也受到限制。 如果需要公共元數據,可以分別通過 config cds.env.odata.protectMetadata = false (Node.js) 或 cds.security.openMetadataEndpoints = true (Java) 禁用檢查。

看個具體的例子,AdminService 只有用戶 admin 才能訪問:

在 api path 下,只有 admin 用戶才能訪問 /api/admin:

運行時的 basic Authorization 字段:

使用 ctrl+shift+n 打開隱身窗口,可以避免 Chrome 自動附帶 credentials 的問題。

看到下圖的 Sign in 按鈕,說明權限控制生效了:

cds 模型里的 Authorization 信息,會寫入 xs-security.json 文件。

使用如下命令行自動生成:

cds compile service.cds --to xsuaa > xs-security.json.

一個例子文件:

{"xsappname": "bookshop", "tenant-mode": "dedicated","scopes": [{ "name": "$XSAPPNAME.admin", "description": "admin" }],"attributes": [{ "name": "level", "description": "level", "valueType": "s" }],"role-templates": [{ "name": "admin", "scope-references": [ "$XSAPPNAME.admin" ], "description": "generated" }] }

這個文件的語法在 SAP 官網可以查到。

  • xsappname:xsappname 屬性表示系統生成的 OAuth 客戶端 ID 的開發人員定義部分。 由于 OAuth 客戶端 ID 在給定子帳戶(pka“身份區域”)中必須是唯一的,因此必須以保證相應 OAuth 客戶端 ID 的唯一性的方式定義 xsappname 屬性。在配置其他安全組件時(例如,當 XS 高級管理員使用 SAP HANA XS 高級管理工具從角色模板創建角色時),確保在 xsappname 中定義的名稱很重要。

  • scopes:在應用程序安全文件 (xs-security.json) 中,scopes 屬性定義了一組適用于應用程序的一個或多個安全范圍。 可以定義多個范圍; 每個作用域都有一個名稱和一個簡短的描述。 xs-security.json 文件中定義的范圍列表用于授權 XS 應用程序的 OAuth 客戶端使用正確的本地和外部范圍集; 也就是說,應用程序需要能夠響應所有請求的權限。

范圍大多是“本地的”; 也就是說,特定于應用程序。 本地范圍由應用程序自己的應用程序路由器檢查或在應用程序的運行時容器內以編程方式檢查。 如果應用程序需要代表當前用戶訪問其他 SAP HANA XS 服務,則提供的訪問令牌需要包含必要的“外部”范圍。 應用程序本身不提供外部范圍; 它們由應用程序上下文之外的其他來源檢查。

在 xs-security.json 文件中,“本地”范圍必須以變量 <$XSAPPNAME> 為前綴; 在運行時,該變量被替換為相應的本地應用程序名稱。 另一方面,“外部”作用域必須以“外部”應用程序本身的名稱作為前綴。

xsappname 的名稱在 mta 等 yaml 文件里定義。

總結

以上是生活随笔為你收集整理的使用注解 @requires 给 SAP CAP CDS 模型添加权限控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。