slashDB通过POST请求和使用APIkey访问数据库会产生403错误

slashDB通过POST请求和使用APIkey访问数据库会产生403错误,api,slashdb,Api,Slashdb,关于HTTP POST方法的安全性问题: 我创建了一个名为“MyAPP”的用户: 然后我想发布一个POST以执行SQL传递 例如: http:///query/InsertBestScore/Score/99/ScreenName/GollyGolly.xml?apikey=dzn8k7hj2sdgddlvymfmefh1k2ddjl05 我构建了一个查询并将其命名为“InsertBestScore”: 插入游戏。排行榜 (屏幕名称、分数) 价值观 (:屏幕名称,:分数) 如果我使用POST方

关于HTTP POST方法的安全性问题:

我创建了一个名为“MyAPP”的用户:

然后我想发布一个POST以执行SQL传递 例如:

http:///query/InsertBestScore/Score/99/ScreenName/GollyGolly.xml?apikey=dzn8k7hj2sdgddlvymfmefh1k2ddjl05

我构建了一个查询并将其命名为“InsertBestScore”: 插入游戏。排行榜 (屏幕名称、分数) 价值观 (:屏幕名称,:分数)

如果我使用POST方法通过POSTMAN运行此操作: ... 然后我就可以访问403:

<?xml version="1.0" encoding="utf-8"?>
<SlashDB>
    <http_code>403</http_code>
    <description>Access was denied to this resource. Please log in with your username/password or resend your request with a valid API key.</description>
    <url_template>/query/InsertBestScore/Score/{Score}/ScreenName/{ScreenName}.xml</url_template>
</SlashDB>
。。。然而,在上面的例子中,我看不到appid在哪里发挥作用。 你能告诉我如何调用SlashDB端点并传递一个APIkey并确保用户id被称为MyAPP吗

总之,文件中提到: •另一个应用程序使用API密钥进行身份验证,该密钥随每个请求一起发送。该应用程序被识别为SlashDB用户App2,它使用数据库登录db_admin。该应用程序可以有效地选择、更新、插入和删除数据

所以我想实际做的就是,做那个项目符号中的事情:将自己标识为用户(而不是App2,我是用户MyAPP),然后使用分配给访问“游戏”数据库的dbuser和dbpass


想法?

好的,这里有两个问题:

  • 为什么访问被拒绝
  • 什么是appid以及如何使用它
  • 广告1:请求必须清除两个授权障碍

    第一个是由SlashDB强加的,因为执行查询的用户必须列在查询定义屏幕上的Execute字段中。这是在查询的“配置->查询->编辑”按钮下完成的

    第二个障碍是数据库造成的。执行POST请求的SlashDB用户必须映射到具有向Gaming.Leadboard表插入权限的物理数据库用户。不用说,这个数据库用户必须与表所在的数据库模式相关联

    公元2年。要启用appid,用户api密钥必须由两部分组成,两部分之间用冒号分隔:“1”。第一部分将被解释为appid,第二部分将被解释为apikey

    为此,请使用相关用户的配置->用户->编辑按钮。然后,只需在API键的开头添加一个冒号,并在冒号的左侧键入所需的appid。应用程序必须提供两个键才能执行请求。请注意,这些键的名称(即appid)可在/etc/slashdb/slashdb.ini中配置


    此功能背后的原因是为了方便API管理平台,这有助于密钥管理,特别是当API将向第三方开发人员公开时。

    确保您已授予用户MyAPP执行查询的权限。 为此:

    • 以管理员身份登录
    • 转到配置->查询
    • 打开查询定义
    • 更新字段
      执行
      。它接受逗号分隔的用户ID

    <?xml version="1.0" encoding="utf-8"?>
    <SlashDB>
        <http_code>403</http_code>
        <description>Access was denied to this resource. Please log in with your username/password or resend your request with a valid API key.</description>
        <url_template>/query/InsertBestScore/Score/{Score}/ScreenName/{ScreenName}.xml</url_template>
    </SlashDB>
    
    •   appid - identifies certain application
    •   apikey - secret for the application
    Request with API key in header - Access granted