【问题标题】:Deleting apigee permission on a role using the api使用 api 删除角色的 apigee 权限
【发布时间】:2014-09-10 22:45:04
【问题描述】:

我创建了一个用户角色,但现在无法使用 api 删除其中一个权限。我想阻止对资源的所有访问,所以我用一个空的 http 动词数组创建了它。这可以同时使用singlemulti 添加权限资源,像这样

POST /userroles/readonly/permissions" -d '{"path" : "/resource", "permissions" : []}' -H "Content-Type:application/json"

但是现在我想从我无法删除的角色中删除该权限,因为delete 在路径中采用 http 动词并且是强制性的,因为在我的情况下没有 http 动词,调用失败并且我无法删除。如果我有一个动词,那么它看起来像这样

DELETE "/userroles/readonly/permissions/get?path=/resource" 

如果我在没有指定动词的情况下调用 api,它会失败并出现以下错误:

< HTTP/1.1 400 Bad Request
...
"code" : "security.QueryParamResourcePathCannotBeNull",
"message" : "Query parameter path cannot be null or empty",
"contexts" : [ ]

如果可以避免的话,我真的不想删除角色并重新创建它。

有什么想法吗?这似乎是权限系统中的一个设计缺陷。

谢谢!

【问题讨论】:

    标签: apigee


    【解决方案1】:

    在您上面的示例中,没有删除权限。

    您为什么不尝试通过相同的 POST 调用首先添加“获取”权限,然后根据需要删除。即使您已经修改了资源权限,POST 也可以工作。

    在这种情况下,DELETE 调用会产生正确的删除响应。

    请发表评论。

    第一步

    curl http://hostname/v1/organizations/myorg/userroles/role1/permissions  -u "admin@org.com:***" -d '{"path" : "/resource", "permissions" : ["get"]}' -H "Content-Type:application/json" -v 
    

    第二步

    curl -X DELETE  "http://hostname/v1/organizations/myorg/userroles/role1/permissions/get?path=/resource"  -u "admin@org.com:***"   -v
    

    【讨论】:

    • 感谢您的回复,我已经尝试过了,但我仍然获得了无法删除的权限。 POST 会按照您的建议添加 get,但是当我在 get 上执行删除操作时,我仍然会以 /resource 的权限数组为空。
    • 请注意,这里的第一步是实际添加具有有效动词的权限。这一步对你来说没有错误吗?如果不是,您在添加有效权限时得到的响应是什么?
    • 是的,帖子工作正常,我收到一个带有 { "path" : "/resource", "permissions" : [ "get" ] } 这样的正文的 201 响应如果我执行 GET 请求,我会看到带有有效动词的权限,但是当我执行删除时(返回具有与上述相同正文的 200 响应)resourcePermission 仍然存在,它只是没有动词。
    • 糟糕.. 看起来带有“”或 null 的条目可能是在数据库中创建的。在这种情况下想不出任何快速解决方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 2019-06-02
    • 2022-11-16
    • 2015-06-24
    • 2020-10-16
    • 2012-04-08
    • 1970-01-01
    相关资源
    最近更新 更多