跳到内容
技术文章
作者的个人资料照片万博新体育手机客户端IAN Stubbings

集中运输命名标准-即时服务集成

这是集中运输命名标准系列的第4篇博文。

另见博客帖子:

集中运输命名标准

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

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

语境

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

<项目/区域>:<项目/释放/ Sprint >: < Change_Ref >: <描述>:<三角洲没有>

例如标出:R1:TASK000000000001描述: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被提供和接受ok)。这在初始授权的第一个小时内工作得非常好,但是一旦过期并请求刷新令牌,它就永远不能工作了。Service Now期待一个客户端凭证流,而我没有设置它,因此我被一个部分工作的解决方案困住了,一个我在承认失败之前进行了太长时间的解决方案。因此,我认为提供一些步骤是有用的,我发现,以防他们对其他人面临类似的情况有用。

链中使用oauth2使用sap作为客户端的oauth2使用oauth2相当多的链接,并且Wiki将逐一带走它们。下面,我只需添加我所需的更改,以便为客户凭据流向工作。

授权对象

在wiki中提到,但在向自己提供测试配置文件之后,我后来忘记了对其他用户进行测试时 - 稍后稍后调试,我记得它。因此,我把一个顶级放在了!

通过下面的Create_outh_client()方法创建OAuth2客户端时有一个检查:

图2 - 授权要求

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

  • s_oa2c_use.
    • 个人资料='您的个人资料名称i.e. zservicenow *'
    • ACTVT = 16.

SSL证书

目标应用程序 - 现在需要信任,因此需要在围系中上传证书。根据您的公司设置,基础可能需要为您执行此操作。如果你已经使用了abapgit.(如果不是,我强烈推荐),过程是相同的添加在Github证书找到在这里

巴迪

Wiki中提到了两个Badi。

oa2c_config_extension_badi_def和oa2c_specifics_badi_def.

当我记录这一点时,我现在想知道是否需要OA2C_CONFIG_EXTENSION_BADI_DEF,因为它只提到授权代码授予和SAML 2.0授予令牌-这两者都不是我的实现所需要的。我将检查这个并在稍后删除(如果适用的话)。

oa2c_specifics_badi_def.

遵循wiki,但要确保添加了最后一行。稍后,您将看到下面OA2C_CONFIG事务中的哪些地方启用了选项。

图3 - oa2c_specifics badi

客户配置文件

需要三个客户机概要文件,它们将与稍后提到的AAD应用程序保持一致。(假设您已经按照wiki中的OA2C_TYPES设置了ZSERVICENOE)。

图4 -客户概要

作用域

只需要一个范围,这是由Service Now API团队提供的,并被添加到scope选项卡上的Client Profiles中。范围也有详细说明在这里

Azure Active Directory (AAD)配置

然后我必须在AAD中创建3个独立的“应用程序”。以匹配上面的客户端配置文件。这些都是非常基本和纯粹的代币供应。可以找到关于设置这些的信息在这里。然后提供的客户端ID,客户端密钥和端点,然后在下面显示的OA2C_CONFIG事务中使用。

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

图5 - oa2c_config

班级

下面的UML图显示了所描述的类的层次结构Sebastian Machhausen.在他的样本中访问Google纸张。

图6 - 现在服务的UML类

我几乎实施了这些副本/粘贴练习,又一次,但很重要,改变了上面的突出显示的方法。这在下面的界面中键入,具有3种不同类型的流量执行。

图7 - if_outh2_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来验证这一点还有待决定。首先,一旦我完成了测试,我需要将这些代码从Feature分支转移到Main分支。

/
3评论
你一定是已登录评论评论或回复一篇文章