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间写入如下代码
  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和CliendIdGet 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将失效

注销登录