作为客户端登录时使用OCC API/products/.../references的AccessDeniedError

2020-09-15 20:12发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

根据我旧问题

  POST/authorizationserver/oauth/token?client_id = ***&client_secret = ***&grant_type = client_credentials

  

我有200:

  {
        " access_token":" d139215c-e2ca-45ca-910d-13dcc5e9b407",
        " token_type":"承载者",
        " expires_in":38072,
        " scope":"基本openid"
  }

  

...以及接下来我要使用access_token检索引用的产品:

  GET/rest/v2/{{baseSiteId}}/products/300611184/references?referenceType = ACCESSORIES&access_token = d139215c-e2ca-45ca-910d-13dcc5e9b407

  

...我得到200个参考产品:

  {
      "参考":[
          {
              " referenceType":" ACCESSORIES",
              "目标":{
                  " availableForPickup":是的,
                  " baseOptions":[
                      {
                          "选项":[
                              {
                                  "代码":" 300611196",
                                  " priceData":{
  ...

  

但是,我的用户登录后,出现AccessDeniedError错误。 情况如下:

  POST/authorizationserver/oauth/token?client_id = ***&client_secret = ***&grant_type = password&username = ***&password = ***

  

我有200个另一个access_token:

  {
      " access_token":" ef6d3337-b1ea-4b24-b8ef-28526afe526e",
      " token_type":"承载者",
      " refresh_token":" 281abf8d-550b-4256-a44b-e7427bf61d03",
      " expires_in":37886,
      " scope":"基本openid"
  }

  

当我尝试使用新的access_token检索引用的产品时:

 /rest/v2/{{baseSiteId}}/products/300611184/references?referenceType = ACCESSORIES&access_token = ef6d3337-b1ea-4b24-b8ef-28526afe526e

  

我收到401 AccessDeniedError:

  {
      "错误":[
          {
              " message":"访问被拒绝",
              " type":" AccessDeniedError"
          }
      ]
  }

  

环境是Hybris 6.6(OOTB),B2C加速器,英国服装网站,注册的客户已分配给标准"客户组"角色。 我的OAuth客户端具有ROLE_TRUSTED_CLIENT角色。

问题是:

  • 为什么权限较宽的用户(注册客户端)无法访问资源,权限较窄的用户(匿名)可用

  • 我应该将注册客户分配给任何其他特定组以查看参考产品吗?

  • 注册的客户端"引用"请求可能需要任何未配置的推荐规则引擎?

  • 还有其他建议吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

根据我旧问题

  POST/authorizationserver/oauth/token?client_id = ***&client_secret = ***&grant_type = client_credentials

  

我有200:

  {
        " access_token":" d139215c-e2ca-45ca-910d-13dcc5e9b407",
        " token_type":"承载者",
        " expires_in":38072,
        " scope":"基本openid"
  }

  

...以及接下来我要使用access_token检索引用的产品:

  GET/rest/v2/{{baseSiteId}}/products/300611184/references?referenceType = ACCESSORIES&access_token = d139215c-e2ca-45ca-910d-13dcc5e9b407

  

...我得到200个参考产品:

  {
      "参考":[
          {
              " referenceType":" ACCESSORIES",
              "目标":{
                  " availableForPickup":是的,
                  " baseOptions":[
                      {
                          "选项":[
                              {
                                  "代码":" 300611196",
                                  " priceData":{
  ...

  

但是,我的用户登录后,出现AccessDeniedError错误。 情况如下:

  POST/authorizationserver/oauth/token?client_id = ***&client_secret = ***&grant_type = password&username = ***&password = ***

  

我有200个另一个access_token:

  {
      " access_token":" ef6d3337-b1ea-4b24-b8ef-28526afe526e",
      " token_type":"承载者",
      " refresh_token":" 281abf8d-550b-4256-a44b-e7427bf61d03",
      " expires_in":37886,
      " scope":"基本openid"
  }

  

当我尝试使用新的access_token检索引用的产品时:

 /rest/v2/{{baseSiteId}}/products/300611184/references?referenceType = ACCESSORIES&access_token = ef6d3337-b1ea-4b24-b8ef-28526afe526e

  

我收到401 AccessDeniedError:

  {
      "错误":[
          {
              " message":"访问被拒绝",
              " type":" AccessDeniedError"
          }
      ]
  }

  

环境是Hybris 6.6(OOTB),B2C加速器,英国服装网站,注册的客户已分配给标准"客户组"角色。 我的OAuth客户端具有ROLE_TRUSTED_CLIENT角色。

问题是:

  • 为什么权限较宽的用户(注册客户端)无法访问资源,权限较窄的用户(匿名)可用

  • 我应该将注册客户分配给任何其他特定组以查看参考产品吗?

  • 注册的客户端"引用"请求可能需要任何未配置的推荐规则引擎?

  • 还有其他建议吗?

付费偷看设置
发送
2条回答
小灯塔
1楼 · 2020-09-15 21:02.采纳回答


看起来参考端点仅适用于ROLE_TRUSTED_CLIENT。
当您获得具有ROLE_TRUSTED_CLIENT的OAuth客户端令牌(grant_type = client_credentials)时,您可以访问此端点。
当您获得用户令牌(grant_type = password)时,您的角色将从该用户所属的组中获取,例如 ROLE_CUSTOMERGROUP(因此在这种情况下,您没有ROLE_TRUSTED_CLIENT)

要解决此问题,您可以在以下位置更改端点权限:ycommercewebservices/web/src/de/hybris/platform/ycommercewebservices/v2/controller/ProductsController.java

  @Secured(" ROLE_TRUSTED_CLIENT")
      @RequestMapping(value ="/img/{productCode}/references",方法= RequestMethod.GET)
      @ResponseBody
      public ProductReferenceListWsDTO exportProductReferences

  

您可以删除安全的注释(然后该终结点将对所有人可用)或添加需要的角色。

梦想连接
2楼-- · 2020-09-15 21:06

Kinga,

谢谢您的回答,我会尝试使用您的建议。

亲切的问候。

一周热门 更多>