1

要访问从 SAP R/3 中的核心数据服务 (CDS) 公开数据的 OData Web 服务,用户需要分配一个包含授权对象的授权角色S_SERVICE

授权对象S_SERVICE需要两个参数:

  1. 在我的情况下,服务类型( SRV_TYPE) 设置为HT= "TADIR Object"
  2. 服务哈希( ) SRV_NAME

使用我发现的调试器,功能模块AUTHORITY_CHECK_TADIR_SERVICE将来自S_SERVICE授权对象的哈希与存储在 table 记录中的哈希进行比较usobhash表usobhash的se16视图

我还发现,该功能模块AUTH_TRACE_CALC_HASH使用来自 columns 的数据PGMIDOBJECTOBJ_NAME在 tableusobhash作为输入来生成哈希,然后将其存储在 column 中NAME

到目前为止,每当我想授予用户/角色访问 OData 服务的权限时,我都需要知道这个哈希值。要获取哈希,我要么检查 usobhash 表,要么手动执行AUTH_TRACE_CALC_HASH,然后在我将授权对象分配给 transaction 中的授权角色时输入哈希pfcg。我想必须有一种更简单、更“官方”的方式来做到这一点。我的方法感觉像是一种肮脏的解决方法,但我找不到任何有关如何正确执行此操作的文档。

tl;dr如何在不调试或搜索相关条目的情况下设置S_SERVICE授权对象?AUTH_TRACE_CALC_HASHusobhash

4

1 回答 1

1
  1. 创建一个包含 Service 的角色。因此,请在交易中创建一个新角色或选择一个现有角色PFCG→(+ 按钮)。

  2. 选择对象类型“授权默认值”。 在事务 pfcg 中选择

  3. 选择“TADIR 服务”;选择对象类型IWSVIWSG

  4. 使用 F4 帮助选择您的服务。 在服务对话中使用 F4 帮助找到您的服务

  5. 保存角色。

  6. 将角色分配给用户。

于 2021-01-15T13:42:11.470 回答