如何在Matlab的HANA XS UAA服务上进行身份验证?

2020-09-14 10:43发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们正在使用SAP HANA XS作为后端开发SAP UI5应用程序,我们需要直接从外部Matlab应用程序上载数据。 我做了所有准备工作,以将数据接收和存储在服务器代码(node.js)中,该代码在禁用身份验证层(JWT,护照)时起作用。

我的理解是Matlab例程需要先在HANA UAA服务处请求身份验证令牌,然后再继续执行我实现的数据上传端点。

您能在以下问题上为我提供帮助吗?

  • 如何在已部署的应用程序中检索HANA UAA服务端点的URL? (当我在浏览器中访问该应用程序时,将自动定向到登录页面)
  • 是否有描述外部服务器或应用程序从UAA服务请求令牌的教程或参考实现? (Matlab提供了所有基本的HTTP请求)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们正在使用SAP HANA XS作为后端开发SAP UI5应用程序,我们需要直接从外部Matlab应用程序上载数据。 我做了所有准备工作,以将数据接收和存储在服务器代码(node.js)中,该代码在禁用身份验证层(JWT,护照)时起作用。

我的理解是Matlab例程需要先在HANA UAA服务处请求身份验证令牌,然后再继续执行我实现的数据上传端点。

您能在以下问题上为我提供帮助吗?

  • 如何在已部署的应用程序中检索HANA UAA服务端点的URL? (当我在浏览器中访问该应用程序时,将自动定向到登录页面)
  • 是否有描述外部服务器或应用程序从UAA服务请求令牌的教程或参考实现? (Matlab提供了所有基本的HTTP请求)
付费偷看设置
发送
2条回答
打个大熊猫
1楼 · 2020-09-14 11:16.采纳回答

一种选择是使用密码授予用户和客户端凭据来获得访问令牌,如 Cloudfoundry UAA官方文档。 这样,您将获得一个访问令牌,该令牌可用于访问您的 节点REST服务。

出于演示目的,我在HANA Express实例上创建了一个简单的节点休息服务,该服务仅返回JSON对象{success:true},以防针对节点应用程序的/api/testEndpoint路径触发GET请求。 该应用程序要求允许"显示"范围显示数据。 通过创建的角色集合将此范围分配给我的测试用户。

那该怎么办?

首先,您需要找出服务的客户端凭据和UAA授权服务器URL。 将UAA服务实例绑定到应用程序后,可以在节点应用程序的环境变量中找到这两者。 通过执行命令" xs env ",您将得到以下信息:

如果使用XSA座舱(从HANA 2.0 SPS03开始提供),则可以在应用程序的服务绑定区域中看到相同的内容。 只需按下"显示敏感数据"按钮,即可在该按钮下方的框中获取信息。

首先使用确定的信息,我们可以通过对之前确定的UAA授权服务器URL的/oauth/token路径执行POST请求来请求访问令牌(在我的情况下为https://hxehost:39032/uaa-security)

设置了以下请求标头。 Content-Type必须为application/x-www-form-urlencoded,因为必须以这种方式传输所需的信息。

在该屏幕截图上显示了表单编码的有效负载值。 必须设置grant_type,用户名,密码以及客户端ID和客户端机密(如前所述)。 发送请求后,如果一切正常,则返回一个access_token。 scope属性还包含必需的Display范围(访问令牌还包含有效负载中的信息,您可以通过解码访问/JWT令牌来进行检查)。

然后必须将访问令牌用作节点REST api调用的Bearer Authorization标头。 可以看出,它可以成功运行。

只是为了证明在我将Bearer令牌更改为无效令牌时出现授权错误(我在开头添加了XX)。

致谢,
弗洛里安

何必丶何苦呢
2楼-- · 2020-09-14 11:26

嗨,菲利普和弗洛里安,谢谢你的这篇非常有用和有益的帖子!

一周热门 更多>