要访问从 SAP R/3 中的核心数据服务 (CDS) 公开数据的 OData Web 服务,用户需要分配一个包含授权对象的授权角色S_SERVICE
。
授权对象S_SERVICE
需要两个参数:
- 在我的情况下,服务类型(
SRV_TYPE
) 设置为HT
= "TADIR Object" - 服务哈希( )
SRV_NAME
。
使用我发现的调试器,功能模块AUTHORITY_CHECK_TADIR_SERVICE
将来自S_SERVICE
授权对象的哈希与存储在 table 记录中的哈希进行比较usobhash
:
我还发现,该功能模块AUTH_TRACE_CALC_HASH
使用来自 columns 的数据PGMID
,OBJECT
并OBJ_NAME
在 tableusobhash
作为输入来生成哈希,然后将其存储在 column 中NAME
。
到目前为止,每当我想授予用户/角色访问 OData 服务的权限时,我都需要知道这个哈希值。要获取哈希,我要么检查 usobhash 表,要么手动执行AUTH_TRACE_CALC_HASH
,然后在我将授权对象分配给 transaction 中的授权角色时输入哈希pfcg
。我想必须有一种更简单、更“官方”的方式来做到这一点。我的方法感觉像是一种肮脏的解决方法,但我找不到任何有关如何正确执行此操作的文档。
tl;dr如何在不调试或搜索相关条目的情况下设置S_SERVICE
授权对象?AUTH_TRACE_CALC_HASH
usobhash