使用OAuth2检索有效的API访问令牌

2020-08-15 10:21发布

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

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


专家您好,

我们有一个现有报告,该报告通过Restful请求将数据发送到外部。 其中使用了用于API身份验证的静态API密钥。 现在,我们必须用OAuth2客户端凭据流替换此身份验证过程。

请协助我获取和处理访问令牌的类/方法或任何示例代码。 我已经阅读了SAP文档,但不清楚要使用的类/方法。 也请告知我是否需要进行任何配置。 如果有,那么如何检查系统中是否已经存在配置。

感谢和问候,

Arunagiri。

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

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


专家您好,

我们有一个现有报告,该报告通过Restful请求将数据发送到外部。 其中使用了用于API身份验证的静态API密钥。 现在,我们必须用OAuth2客户端凭据流替换此身份验证过程。

请协助我获取和处理访问令牌的类/方法或任何示例代码。 我已经阅读了SAP文档,但不清楚要使用的类/方法。 也请告知我是否需要进行任何配置。 如果有,那么如何检查系统中是否已经存在配置。

感谢和问候,

Arunagiri。

付费偷看设置
发送
6条回答
宇峰Kouji
1楼 · 2020-08-15 10:49.采纳回答

我遇到了同样的问题,最终还是手动完成(自己开发)。 我无法使"用于AS ABAP的OAuth 2.0客户端"正常工作。 顺便说一句,我认为SAP PI中有一些OAuth 2.0支持(如果有的话),可以尝试一下。

手动(程序)步骤如下:

  • 首次HTTP调用以获取OAuth 2.0令牌(保存令牌+其有效期限)。 在以后的令牌调用中,我正在检查它是否仍然有效,或者使用有效的令牌还是执行HTTP调用以获取新的令牌。
  • 第二个HTTP调用是您的REST请求,您将令牌放在HTTP标头中 领域。 类似于静态API密钥。

编辑:您可能需要更多的调用,而不仅仅是一个"获取令牌",这取决于第三方如何实现OAuth流。

Violet凡
2楼-- · 2020-08-15 10:41

您好,
您当前的休息请求使用的是哪种类/方法? 我使用了cl_http_client类。
传递的grant_type +授权示例:

 lo_http-> request-> set_form_field(
导出名称='grant_type'
value ='xyz')。 "您的grant_type lo_http-> request-> set_header_field(
导出名称='Authorization'
value ='xyz')。 "您的授权(可能是" Basic" + Base64客户ID +秘密值)
风早神人
3楼-- · 2020-08-15 10:43

您好 Arunagiri A

您的问题解决了吗?

spaceman01
4楼-- · 2020-08-15 10:45

请使用COMMENT按钮输入评论,问题,添加详细信息等,ANSWER仅是提出解决方案,请在SAP右侧显示SAP文本。 答案区。 同时,系统会通知您您的评论(目前还没有)。

zZ12138
5楼-- · 2020-08-15 10:48

嗨,托马斯,

您能详细说明一下您在方案中使用的手动步骤吗?

在第一个HTTP调用中-使用哪种类/方法来检索OAuth2令牌? 因为我们需要传递client_id,client_secret和grant_type来获取令牌。

感谢和问候,

Arunagiri。

SKY徐
6楼-- · 2020-08-15 10:35

嗨,托马斯,

我们正在使用相同的Cl_http_client。

我将引用您的代码,但是在使用lo_http-> request-> set_form_field()设置凭据/授予类型之后,我们将在哪里收到OAuth2令牌。

根据您的逻辑:

首次HTTP调用:

http_client-> request-> set_form_fields(字段= lt_凭据多值= lv_值)。

lt_credential将具有client_id和grant_type。

第二个HTTP调用:

我们必须通过以下方法传递访问令牌吗?

http_client-> request-> set_header_field(name ='Authorization'value = Access-token)。

请让我清楚

感谢和问候,

Arunagiri。

一周热门 更多>