跳过内容
技术文章
作者的个人资料照片Ian Stubbings

集中运输命名标准 - 现在的服务集成

这是有关集中运输命名标准系列的第四篇博客文章。

另请参阅博客文章:

集中运输命名标准

集中运输命名标准 - SCP ABAP环境迁移

集中运输命名标准 - 抽象分支

语境

由于集中式传输命名标准解决方案已经发展并推出到更多开发系统,因此已要求的功能是验证第3段3 下面的参考号:

<程序/区域>:

即Cau:R1:任务000000000001:示例描述:1

该计划是根据前缀验证该号码为现在或Azure DevOps验证,并且由于现在的服务是优先级,因此我要做的就是从SAP调用预定义的API。不应该有太多问题吗?

信用额到期的信用

首先,我在我寻求验证运输标题中提供的参考号的大部分知识中取决于下面的两个项目:

这些有助于指导我朝正确的方向转向,并完成了大概90%的难题。非常感谢Joachim Doersam塞巴斯蒂安·马克豪森(Sebastian Machhausen)为了编写Wiki并分别提供代码。如果您需要通过OAuth2连接到外部系统,则应该是您的第一个呼叫端口。(另外,作为此博客的背景信息,快速浏览也将非常有用)。

不幸的是,正如通常情况一样,其余10%的解决方案似乎花费了一段时间,我希望将此博客文章重点放在上面。因此,这不是上面项目中已经提供的配置和代码集的详尽列表,以下是由于客户凭证我具体使用的流程。

OAuth 2.0客户端流

从来没有接触过Oauth,这对我来说是一个棘手的作品,并学到了一个经验教训来信任别人比我更了解的人!我被告知几次我必须使用客户凭证流量而不是授权赠款流动,但由于我并不真正理解这种区别,而且我在后者方面取得了巨大的进展,我继续前进。后来,当一分钱终于对客户凭证流程的了解时,我意识到我应该只是听那些知道更好的人。事后看来是一件很棒的事情……

我面临的问题的核心是,我遵循的文档和提供的代码示例是用于授权授予流,我需要将其转换为客户凭证流。事实证明,当您知道如何时,这并不困难。

客户凭证流量是执行以下过程:

  1. 来自SAP(客户端应用程序)的请求转到Azure Active Directory
  2. 载体令牌提供给SAP
  3. 然后提供载体令牌,然后提供以便立即进行身份验证
  4. 授予并要求检索的数据

图1 - 客户凭证流

关于这种流程的关键是,不需要人类的互动,并且令牌可以在其到期时自动更新。通过授权授予流,我必须最初通过OA2C_GRANT交易手动设置此设置(根据Wiki)。还请求刷新令牌(以确保我没有不断重新认证),并同时提供了OA2C_GRANT,并接受并接受了)。在初次赠款的第一个小时,这很好,但是一旦该过期和刷新令牌被要求,它就不会奏效。服务现在期待客户的凭据流量,我没有设置这个问题,因此我坚持了一个解决方案,该解决方案部分起作用,而我在承认失败之前就已经进步了。因此,我认为提供几个步骤使我失望很有用,以防他们对面临类似情况的其他人有用。

链条中有很多链接使用SAP作为客户端使用OAuth2进行身份验证,Wiki将它们一个一个接一个地验证。在下面,我将添加所需的更改,以使客户凭据流动起来。

授权对象

在Wiki中提到,但是在我自己的测试配置文件中提供了它后,然后在测试其他用户时忘记了 - 稍后进行了很多调试,我记得了。因此,我将顶部放在顶上!

通过create_oauth_client()方法创建OAuth2客户端时,请检查此检查:

图2 - 授权要求

确保将以下内容添加到需要调用代码的所有用户ID中。

  • S_OA2C_USE
    • profile ='您的个人资料名称,即ZserviceNow*'
    • ACTVT = 16

SSL证书

目标应用程序(在这种情况下为现在的情况)需要受到信任,因此需要以渴望上传证书。根据您的公司设置,基础可能必须为您做到这一点。如果您已经在使用abapgit(我强烈建议这样做),该过程与在发现的GitHub证书中添加相同这里

巴迪斯

Wiki中提到了两个Badi。

oa2c_config_extension_badi_def和oa2c_specifics_badi_def

当我记录下来时,我现在想知道是否实际需要OA2C_CONFIG_EXTENSINE_BADI_DEF,因为它仅引用授权代码赠款和SAML 2.0 Grant Tokens(我的实现都不需要)。我将对此进行检查,并在适用的情况下删除。

OA2C_SPECIFICS_BADI_DEF

关注Wiki,但请确保您添加最后一行。在下面的稍后,您将在OA2C_CONFIG交易中进一步向下启用此选项。

图3 - oa2c_specifics badi

客户资料

需要三个客户端配置文件,这些配置文件将与不久的将来提及的AAD应用程序保持一致。(假设您已经在Wiki中已经在OA2C_TYPES中设置了Zservicenoe)。

图4 - 客户资料

范围

仅需要一个示波器,这是由现在的API团队提供的,并将其添加到“示波器”选项卡上的客户端配置文件中。示波器也详细介绍这里

Azure Active Directory(AAD)配置

然后,我必须在AAD中创建3个单独的“应用程序”。匹配上面的客户端配置文件。这些是非常基本的,纯粹是为了提供令牌。可以找到有关设置这些设置的信息这里

图8中解释了该字段以黄色突出显示的原因。

图5 - oa2c_config

课程

下图显示了由塞巴斯蒂安·马克豪森(Sebastian Machhausen)在他的样品中访问Google表。

图6 - 服务的UML现在课程

我几乎将它们作为副本/粘贴练习实现,但对上面突出显示的方法进行了辅修但很大的变化。这将输入下面的接口,并具有3种不同类型的流执行。

图7 - IF_OAUTH2_CLIENT

突出显示的代码是难题中的最后一块。我不明白为什么流动失败,直到我发现它调用execute_refresh_flow方法而不是execute_cc_flow。加上使用标头字段所需的代码,但OA2C_CONFIG指定的表单字段。(我的实验错误)。

因此,在下面的方法中,我们可以看到标题字段和execute_cc_flow方法与上面如图5所示的OA2C_CONFIG同步。

图8 - 设置令牌

结果

因此,最终一切都起作用,我现在有验证服务任务和事件的服务。在下面的图9中,我试图释放运输任务,并因参考号不正确而被阻止。

图9 - 错误消息

我不是我授予您最漂亮的弹出窗口,但它可以完成工作。我目前正在使用SAP标准popup_with_table_display FM,因为它在7.31的所有卫星开发系统上都存在,因此不需要将任何额外的开发推出。我更喜欢标准的HTML版本,该版本肯定会看起来更好并提供更好的灵活性 - 欢迎任何建议!

概括

因此,标准再次变得更加紧密,并根据其进入系统的原因进行审核要容易得多,从而节省了许多小时的开发线索拖网电子表格。

我当然在这项特殊的练习中学到了很多东西,这将使我能够稳定在Azure Devops上,无论我是通过SAP还是AWS进行的,尚未确定。首先,一旦完成测试,我需要将此代码从功能分支移动到主分支。

分配的标签

      3条评论
      你一定是已登录评论或回复帖子。
      作者的个人资料照片S Abinath
      S Abinath

      急需的一个...上面的步骤给出了清晰度

      作者的个人资料照片Ian Stubbings
      伊安·斯库
      博客文章作者

      谢谢S Abinath。我很高兴您发现它有用。

      作者的个人资料照片Mahendra Joshi
      Mahendra Joshi

      感谢您提供的有用信息!

      Baidu