Permissions SAP网关运行时odata路径权限

Permissions SAP网关运行时odata路径权限,permissions,odata,sap-gateway,Permissions,Odata,Sap Gateway,除了在每个服务实现方法中手动编写代码以检查请求是否被允许之外,是否有标准的方法来更改用户的运行时权限,以便能够调用SAP网关服务的某些odata资源 例如,基于定制中的某些设置,应该禁止用户x的/foo和/bar下面的odata路径,即HTTP GET/POST/DELETE:/foo/test和HTTP GET/POST/DELETE:/bar/test应该为用户x生成HTTP 403,但是httpget/POST/DELETE:/something应该是OK 是否有一种方法可以在一个地方进行

除了在每个服务实现方法中手动编写代码以检查请求是否被允许之外,是否有标准的方法来更改用户的运行时权限,以便能够调用SAP网关服务的某些odata资源

例如,基于定制中的某些设置,应该禁止用户
x
/foo
/bar
下面的odata路径,即
HTTP GET/POST/DELETE:/foo/test
HTTP GET/POST/DELETE:/bar/test
应该为用户
x
生成HTTP 403,但是
httpget/POST/DELETE:/something
应该是
OK


是否有一种方法可以在一个地方进行控制,而不是在每个实现odata请求的方法中执行检查?

授权检查的正确位置是在后端方法中。任何授权错误都应该填充回服务,并生成403

如果您出于某种原因不想这样做,您可以编写自己的HTTP处理程序并将其插入到SICF中,以便在所有路径上调用


标准角色设置只允许访问或不允许访问服务,您所指的“模式”访问丢失。但我真的不明白你为什么想要它?这将使您的Odata服务对消费者来说是不可预测的,不是吗?

假设您想为一组用户停用一组功能。检查每一个实现请求的odata方法的编码是很好的,如果不是很可怕的话?特别是因为每次添加新的odata路径时都需要添加它。我仍然会在我的后端方法中添加授权检查。它应该在任何更改数据的操作之前的任何位置执行。如果我想停用访问,我会在服务级别上通过从分配给用户的网关角色中删除服务来实现。可以通过向Odata节点添加自定义HTTP处理程序来实现对可配置内容的请求。此处理程序可以读取带有路径的配置表。这样,您就不需要对Odata方法进行任何更改。考虑添加一个HTTP处理程序,然后控制流:我没有尝试过通过Web Dispatcher或ICM进行特定于用户的URL过滤,但也许它可以给您一些想法。流量控制将是一个很好的解决方案。但是,我认为SAP网关对
/SAP/udu/odata/SAP/*
以下的服务优先使用多个处理程序?也就是说,它忽略除默认处理程序
/IWFND/CL\u SODATA\u HTTP\u处理程序之外的任何处理程序。真的是这样吗?似乎从未调用我的自定义处理程序:-(