查找授权对象 S_SERVICE 所需的核心数据/OData 服务的usob哈希参数 SRV_NAME

问题描述

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

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

  1. 在我的例子中设置为 SRV_TYPE = "TADIR Object" 的 服务类型 (HT)
  2. 服务哈希 (SRV_NAME)。

使用我发现的调试器,函数模块 AUTHORITY_CHECK_TADIR_SERVICE 将来自 S_SERVICE 授权对象的哈希值与存储在表 usobhash 记录中的哈希值进行比较:

se16 view of table usobhash

我还发现,函数模块AUTH_TRACE_CALC_HASH使用表PGMIDOBJECTOBJ_NAMEusobhash列的数据作为输入来生成然后存储在列 NAME 中的哈希。

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

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

解决方法

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

  2. 选择对象类型“授权默认”。 in transaction pfcg choose "authorization default

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

  4. 使用 F4 帮助选择您的服务。 in the service dialogue use F4 help to find your service

  5. 保存角色。

  6. 将角色分配给用户。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...