Api请求验证

Api请求验证分2种情况

  • 情况1: 前端html等文件是经过OSROOM系统渲染, 响应回来的页面. 因为html经过了OSROOM服务器Jinjia2模板引擎渲染, 带上了随机生成的csrf_token 所以在html能获取到csrf_token, 具体使用如下教程

  • 情况2.客户端为APP或小程序, 或者说html等静态文件不经过OSROOM, 独立隔离. 这时候就要使用JWT方式验证, 具体如下教程

    CsrfToken验证

      获取与使用CsrfToken

    每个经过OSROOM后端的html页面都会带上一个CsrfToken, 具体使用方式如下

  • 使用Jinjia2语法获取

    1. {{csrf_token()}}



  • 每一个Api的请求都需要带上CsrfToken, 作为验证令牌. 所以可以在html<head><head/>间写入如下代码

  1. <script type="text/javascript">
  2. //设置csrf token, 否则无法请求api数据(保证请求数据的网页是自己服务器的网页)
  3. var csrftoken = "{{ csrf_token() }}" //获取token
  4. $.ajaxSetup({
  5. beforeSend: function(xhr) {
  6. // 头部带上参数X-CSRFToken, 值为上面通过JinJia2获取到的csrftoken
  7. xhr.setRequestHeader("X-CSRFToken", csrftoken);
  8. }
  9. });
  10. </script>


  • 浏览器F12可以看到我们写入的代码中的CSRFToken, 如图


CSRFToken




JWT验证(Token)

  使用说明

  • SecretTokenAccessToken用于在无CsrfToken时, 调用API请求的一个客户端令牌, 以验证客户端是否为伪造的.

  • SecretToken是长期可用验证令牌(除非你停用或者删除了它), 需要保存在客户端使用, 主要用于获取AccessToken.

  • 使用令牌时, 可以使用SecretToken做令牌或者OSR-ClientId与AccessToken组合做令牌(见使用方式).

  • 为了减少SecretToken的暴露风险, 发送Api请求时, 尽量使用OSR-ClientIdAccessToken组合作为客户端验证令牌.

  • 当没有获取过AccessToken或者AccessToken失效时, 请通过/api/token/access-token获取新的AccessToken (具体请查看/api/token/access-token文档).

  • 获取AccessToken时, 只能使用SecretToken作为客户端令牌验证.(建议使用https)
    1. http请求中设置请求头
    2. OSR-RestToken:"SecretToken xxxxx"
    3. OSR-RestToken:"AccessToken xxxxx" OSR-ClientId:"xxxxx"



      获取AccessToken

    第一次获取AccessToken, 首先去OSROOM管理端获取SecretToken, 如图

SecretToken

然后GET请求/api/token/access-token获取一个新的AccessToken

  • 请求时headers参数OSR-RestToken值为SecretToken为客户端令牌, 如图.

  • 结果返回AccessToken和CliendId Get Access

  • 如果请求/api/token/access-token的时候, 有带上OSR-CliendId, 则系统不会生成新的CliendId 如下图, 结果返回的CliendId和请求时带上的一样 Get Access


      请求API获取&修改数据

    对于不需要登录验证的请求验证如下:

  • headers参数OSR-RestToken值为AccessToken和参数OSR-CliendId值为CliendId
    无需登录验证请求


  登录获取BearerToken

请求Api(/api/sign-in)获取BearerToken

  • 如下图,登录时也headers页需要AccessTokenCliendId作为客户端令牌

    headers参数OSR-RestToken值为AccessToken和参数OSR-CliendId值为CliendId

    登录请求

    注意: 该请求还得带上Api请求参数username, password, use_jwt_auth 登录请求

    客户端保存好获取到的auth_token(也就是下面要用到的BearerToken)


    对于需要登录验证的API请求如下**

  • 和上面差不多, 也就多了一个headers参数OSR-BearerToken, 值为登录成功时获取的auth_token
    需要验证登录的请求验证


      注销登录

    注销登录如下, 注销后前面所请求的AccessToken 和 BearerToken将失效

注销登录