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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

如何为部署到 SAP BTP 平台上的 Node.js 应用提供Authorization 和 Trust 管理 - 权限管控

發(fā)布時(shí)間:2023/12/19 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何为部署到 SAP BTP 平台上的 Node.js 应用提供Authorization 和 Trust 管理 - 权限管控 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

官方鏈接

本教程的目標(biāo)是通過(guò)身份驗(yàn)證和授權(quán)來(lái)保護(hù)和部署產(chǎn)品列表應(yīng)用程序,因此只有具有正確授權(quán)的用戶(hù)才能獲得身份驗(yàn)證應(yīng)用程序中的產(chǎn)品。沒(méi)有必要授權(quán)的用戶(hù)可以登錄應(yīng)用程序,但看不到產(chǎn)品。

本教程的基礎(chǔ)是一個(gè) Node.js 應(yīng)用程序,它使用 express 框架和 SAPUI5 來(lái)顯示產(chǎn)品列表(參見(jiàn)屏幕截圖)。

XSUAA and the Application Router

為了保護(hù)此產(chǎn)品列表應(yīng)用程序,使用了兩個(gè)組件。 一種稱(chēng)為 XSUAA 服務(wù),另一種稱(chēng)為應(yīng)用路由器。 應(yīng)用程序路由器與 XSUAA 服務(wù)結(jié)合使用來(lái)驗(yàn)證用戶(hù)并將用戶(hù)路由到受保護(hù)的應(yīng)用程序。

XSUAA 扮演 OAuth 授權(quán)服務(wù)的角色,而應(yīng)用程序路由器扮演 OAuth 客戶(hù)端的角色。 此外,應(yīng)用路由器充當(dāng)應(yīng)用的中央入口點(diǎn)。

為了防止在未經(jīng)身份驗(yàn)證的情況下直接調(diào)用您的應(yīng)用程序,有必要向您的應(yīng)用程序添加一些代碼。 在我們的示例中,您使用 Node.js 護(hù)照身份驗(yàn)證中間件并使用 XSUAA JWT 策略對(duì)其進(jìn)行配置。

此代碼可防止在沒(méi)有有效 JWT 的情況下直接調(diào)用產(chǎn)品列表應(yīng)用程序。

checkReadScope 函數(shù)確保只有具有正確權(quán)限的用戶(hù)才能查看產(chǎn)品。

If you want to use SAP modules locally, you need to add the npm configuration:

npm config set @sap:registry https://npm.sap.com

approuter 將使您能夠創(chuàng)建到您的應(yīng)用程序的安全路由。

在 manifest.yaml 中,您必須為應(yīng)用程序定義主機(jī)名并添加目的地。 清單文件用于將 XSUAA 服務(wù)實(shí)例綁定到您的應(yīng)用程序。

使用參數(shù) route 為您的應(yīng)用程序指定一個(gè)特定的主機(jī)名。 路由在整個(gè) Cloud Foundry 環(huán)境中必須是唯一的,因此請(qǐng)確保向路由添加隨機(jī)部分,例如您的姓名首字母和出生日期,如 product-list-ap25 和 approuter-product-list-ap25。 稍后您還需要路由來(lái)配置目的地。

name 參數(shù)與之前在文件 xs-app.json 中定義的相同。 url 參數(shù)是應(yīng)用程序主機(jī)名和 Cloud Foundry 環(huán)境區(qū)域 (https://.cfapps..hana.ondemand.com) 的結(jié)果。 forwardAuthToken 參數(shù)設(shè)置為 true 可確保 approuter 將 JWT 令牌轉(zhuǎn)發(fā)到目的地。

package.json 文件的依賴(lài):

要使用 XSUAA 服務(wù),需要一個(gè)名為 xs-security.json 的文件。 該文件可以定義 XSUAA 服務(wù)實(shí)例的屬性以及不同的角色和授權(quán)。 在此示例中,該文件包含一個(gè)角色模板和一個(gè)具有產(chǎn)品列表查看者角色的角色集合,使用戶(hù)可以稍后查看產(chǎn)品。

新建一個(gè) security 文件夾,xs-security.json 文件內(nèi)容維護(hù)如下:

{"xsappname": "product-list","tenant-mode": "dedicated","scopes": [{"name": "$XSAPPNAME.read","description": "With this scope, USER can read products."}],"role-templates": [{"name": "Viewer","description": "Role to get the list of products","scope-references": ["$XSAPPNAME.read"]}],"role-collections": [{"name": "ProductListViewer","description": "Product List Viewer","role-template-references": ["$XSAPPNAME.Viewer"]}] }

這將創(chuàng)建一個(gè)具有角色模板的角色集合和一個(gè)具有閱讀范圍的角色,因此具有此角色的用戶(hù)可以查看產(chǎn)品。

Prepare the approuter files

approuter 將使您能夠創(chuàng)建到您的應(yīng)用程序的安全路由。

  • 將名為 approuter 的文件夾添加到您的產(chǎn)品列表文件夾中。

  • 在該文件夾中創(chuàng)建一個(gè)名為 package.json 的文件。

  • 添加以下內(nèi)容:

{"name": "approuter","dependencies": {"@sap/approuter": "^9.0.2"},"scripts": {"start": "node node_modules/@sap/approuter/approuter.js"} }

xs-app.json 的內(nèi)容:

{"routes": [{"source": "^/products","target": "/","destination": "products-destination"}] }

這將創(chuàng)建一個(gè)名為 products-destination 的目的地。 目的地稍后會(huì)在 manifest.yml 中引用。

Move static content to the application router

出于性能原因,最好將應(yīng)用程序的圖像放入帶有應(yīng)用程序路由器的靜態(tài)資源文件夾中。

最后應(yīng)用結(jié)構(gòu)如下:

Update the manifest file

在清單文件中,您必須為應(yīng)用程序定義主機(jī)名并添加目的地。 清單文件用于將 XSUAA 服務(wù)實(shí)例綁定到您的應(yīng)用程序。

applications: # Application - name: product-listinstances: 1memory: 128Mroutes:- route: product-list-jerry.cfapps.eu10.hana.ondemand.compath: myappbuildpacks:- nodejs_buildpack timeout: 180services:- xsuaa-service-tutorial# Application Router - name: approuterroutes:- route: approuter-product-list-jerry.cfapps.eu10.hana.ondemand.compath: approuterbuildpacks:- nodejs_buildpackmemory: 128Mservices:- xsuaa-service-tutorialenv:destinations: >[{"name":"products-destination","url":"https://product-list-jerry.cfapps.eu10.hana.ondemand.com","forwardAuthToken": true}]

Update the index.html file

因?yàn)槟褂?/products 通過(guò) approuter 調(diào)用產(chǎn)品列表,所以您需要在 index.html 文件中進(jìn)行一些小的更改。

  • 導(dǎo)航到 product-list/myapp/static 文件夾。

  • 將 index.html 文件中的第 24 行替換為以下代碼。

Create the XSUAA service instance

在部署應(yīng)用程序之前,您需要為 XSUAA 創(chuàng)建服務(wù)實(shí)例。

  • 使用 Cloud Foundry CLI 登錄到您的 Cloud Foundry 帳戶(hù)。

  • 導(dǎo)航到產(chǎn)品列表文件夾。

  • 使用 xs-security.json 安全描述符文件創(chuàng)建 XSUAA 服務(wù)實(shí)例。

cf create-service xsuaa application xsuaa-service-tutorial -c security/xs-security.json

最后 cf deploy 部署應(yīng)用。

Call your application from its secure route

您的應(yīng)用程序有兩個(gè)在 manifest.yml 中定義的路由。 應(yīng)用程序的直接路由應(yīng)該返回一條錯(cuò)誤消息,指出未經(jīng)授權(quán)(因?yàn)槟€沒(méi)有有效的 JWT)。 通過(guò) approuter 的安全路由重定向到登錄屏幕。 登錄后,應(yīng)用程序打開(kāi)但顯示消息無(wú)數(shù)據(jù)。 要查看產(chǎn)品數(shù)據(jù),您需要為您的用戶(hù)分配具有必要授權(quán)的角色集合。

首先確保無(wú)法通過(guò)其直接 URL 訪問(wèn)您的應(yīng)用程序:

https://product-list-ap25.cfapps.eu10.hana.ondemand.com

如果一切正常,這將導(dǎo)致讀取未經(jīng)授權(quán)的錯(cuò)誤消息。

使用應(yīng)用程序路由器的安全路由導(dǎo)航到您的應(yīng)用程序:

https://approuter-product-list-ap25.cfapps.eu10.hana.ondemand.com/products

輸入您的試用帳戶(hù)的電子郵件和密碼。

您應(yīng)該會(huì)看到 no data 消息。 這是因?yàn)槟形捶峙洳榭串a(chǎn)品的角色。 您將在下一步中執(zhí)行此操作。

Assign the role collection

為您的用戶(hù)分配包含查看產(chǎn)品列表中產(chǎn)品所需角色的角色集合。

  • 打開(kāi) SAP BTP 主控室。導(dǎo)航到您的子帳戶(hù)。

  • 選擇安全選項(xiàng)卡,然后選擇信任配置。選擇默認(rèn)身份提供者。

  • 輸入您的電子郵件地址并選擇顯示作業(yè)。

  • 選擇分配角色集合。選擇 ProductListViewer 角色集合。

再次調(diào)用 approuter 的 URL(您之前可能必須刪除您的 cookie/緩存)。

https://approuter-product-list-ap25.cfapps.eu10.hana.ondemand.com/products

該應(yīng)用程序現(xiàn)在將向您展示產(chǎn)品:

更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:

總結(jié)

以上是生活随笔為你收集整理的如何为部署到 SAP BTP 平台上的 Node.js 应用提供Authorization 和 Trust 管理 - 权限管控的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。