最近我们开始了我们的第一个capnodejs项目。最初我们使用的是sapwebide,但遇到了一个问题,即我们无法通过身份验证快速测试我们的服务。我们总是要先部署服务,大数据行业前景,这需要很多时间。
所以我们决定将我们的开发移到本地,并开始使用visualstudio代码进行CAP开发。为了测试我们的服务,我们想使用我们的数据,我们的Cloud foundry服务的目的地和授权。
在这篇博文中,大数据产品,我将介绍如何在Cloud foundry上使用XSUAA服务,以便能够在本地环境中使用身份验证。
为了能够测试我将在此处介绍的内容,您必须安装一些工具…
Cloud foundry cli
此命令行工具是能够从您的cloud foundry帐户获取信息。请在此处查找下载和安装信息:
https://docs.cloudfoundry.org/cf-cli/install-go-cli.html
SAP Cloud MTA构建工具
此命令行工具从MTA项目的工件构建多目标应用程序存档文件。
因为此工具使用makefile,数据呈现,Windows用户应首先安装Chocooley和GNU Make.
https://chocolatey.org/install
https://chocolatey.org/packages/make
安装make后,您可以安装MTA构建工具:
此处的详细信息:
https://sap.github.io/cloud-mta-build-tool/
通过本文,您可以使用我在github上的示例项目。您只需在试用帐户上部署此示例并进行测试即可。
https://github.com/jowavp/SAP-CAPM-Nodejs-authorization-example
将项目克隆到您的PC并尝试将其部署到您的cloud foundry帐户。
在您的命令中,企业信息管理软件,您必须登录到您的cloud foundry帐户。只需在shell中输入"cf login"并提供正确的信息
就可以部署项目了!只需运行
这个命令就可以建立MTA存档并在CloudFoundry上开始部署。喝杯咖啡的时间,这可能需要一些时间
如果部署了项目,您可以通过打开我们项目中approuter模块的url来测试它。要获取此url,只需运行"cf apps"
您将看到一个在您的cloud foundry环境中运行的所有应用程序的表。最后一列是url,如果您在浏览器中打开此url,审批者会将您路由到服务。
这应该是响应:
让我们在本地环境中运行此程序。要知道哪个用户登录了,我们需要在服务中注入身份验证令牌(在cloudfoundry中,这是JWT令牌)。注入此令牌由批准者完成。批准者将从uaa服务获取令牌,并将其添加到服务请求的授权头中。
以最小的努力实现这一点的秘诀是使用默认值-服务.json违约-环境.json文件夹。这些文件包含在.gitignore文件中,因为它们包含您不想与世界共享的秘密。
服务
服务的源文件位于srv文件夹中。当你打开门的时候服务.cds您可以看到:
这里的重要代码是@(需要:'authenticated-user'),这将只允许经过身份验证的用户访问服务
在项目的根目录中打开shell并安装所有npm包
在安装nod模块之后,我们使用以下命令启动服务:
这将在本地启动服务https://localhost:4004
如果我们遵循此链接,我们将得到403响应"禁止:
这是因为我们已使用@(要求:'authenticated-user')
对CDS服务进行了批注。请保持此服务运行,不要关闭shell。
打开一个用于以下步骤的新shell窗口,您将在其中向服务中注入JWT令牌。如前所述,这是由approuter完成的。
approuter
approuter配置在项目的"approuter"文件夹中。xs型-应用程序.json
我们已将authenticationMethod设置为"route",因此我们决定在每个路由中使用哪种身份验证类型。只有一个路由将所有请求代理到srvèu api目的地,并使用xsuaa进行身份验证mta.yaml公司此模块的文件位于项目的根文件夹中。
在Cloud Foundry中,此Approver模块需要2个服务:
CapmaAuthorization uaa服务(即uaa服务)srv\u api目的地(由我们的capmaAuthorization srv模块提供)
在srv\u api目的地中,我们将forwardAuthToken设置为true。这将把JWT令牌从approuter转发到目的地。
如果我们想在本地运行这个approuter模块,我们必须为这个模块安装节点模块。进入approuter目录
安装节点模块
运行approuter
这将失败,因为approuter无法找到目标srv\U api。当您将此应用程序部署到cloud foundry时,审批者将找到srv\u api目标,因为它是在中定义的mta.yaml公司文件。
我们必须为本地环境定义此目的地。创建默认值-环境.json文件在approuter文件夹中。
这将创建目标,就像我们在mta.yaml公司文件,但这将指向:4004. 这是我们的服务正在运行的地址。
让我们尝试再次启动approuter…
这将再次失败,因为您需要一个uaa服务来验证您自己。
我们可以重用CF帐户的验证服务。让我们首先搜索此服务所需的凭据。
获取Approver应用程序的环境变量
我们将只关注系统中提供的参数。在这里我们看到一个服务xsuaa。复制凭证中的值。
创建默认值-服务.json文件在approuter文件夹中,我们将在其中设置UAA服务的凭据。
这是默认的内容-服务.json.