一、Basic认证

客户端访问API的每次HTTP请求头中带上api_gateway_auth_app_id和api_gateway_auth_app_password,网关收到请求后从HTTP头里获取相应的应用ID和密码跟本地数据库中存储的值进行对比,如果成功则继续往下执行。

如果失败返回如下JSON信息:

{
    "errCode": "AUTH_INVALID_ACCOUNT_OR_PSW",
    "errMsg": "认证-无效的appID或密码!"
}

这种认证方式的特点是简单易用,但不安全,尤其是在信道不加密的情况下很容易被窃取应用密码。

二、标准Token认证

先访问网关提供的认证接口,获取Token,再在请求头里带上Token访问API。

1、 获取Token

 请求地址

https://xx.xx.xx.xx:9001/xbg/api/appLogin

 请求参数

{
"appID": "dd3b4faa-fe87-47ec-b089-8862db102fe9",
"secretKey": "c3a4b8c403c84bdc80419ca08261bd29"
}

 认证成功返回结果

{
"result": true,
"token": "23423fwafasrser213423fsafwegasd",
"respErrMsg": {}
}

 认证失败返回结果

{
    "result": false,
    "respErrMsg": {
        "errCode": "AUTH_INVALID_ACCOUNT_OR_PSW",
        "errMsg": "App ID或者安全密钥有误,请联系管理人员核实!"
    }
}

补充说明:

Token有效期是根据Token组件配置来决定的,不会在访问的过程中自动刷新,如果Token过期网关将返回如下信息:

{
    "errCode": "AUTH_TOKEN_EXPIRED",
    "errMsg": "token过期,请重新获取Token!"
}

客户端接收到该错误信息,需要再次访问上面的认证接口获取新的Token。

2、 携带Token访问API

需要在请求头里面增加如下Header:

api_gateway_auth_token //登录成功获取的Token

Token验证失败返回结果:

{
errCode:'AUTH_INVALID_TOKEN',

errMsg:'Token无效,不是网关颁发的token!'

}

补充说明

1、我们推荐使用Token认证,相对更加安全可靠。

2、针对Java客户端我们提供了标准的SDK(其内部封装的Token认证的细节),开发人员只需要关注自己的业务逻辑部分,具体请参考Java客户端部分。

三、微信Token认证

微信Token认证包含两个层面的内容,一是对客户端应用进行认证,二是对微信授权登录的用户进行认证;

如果您的后端服务提供方需要知道当前客户端是谁,并且登录客户端的微信用户Openid是什么,采用微信Token认证可以屏蔽很多细节。后端服务提供方只需要在HTTP请求头里获取Openid或者AppID即可。

具体过程分成两步:

1、调用微信认证接口获取Token

请求地址

https://xx.xx.xx.xx:9001/xbg/api/wxlogin

 请求参数

{
  appIDOfGateway:'f674366e-d75d-4d22-8f1f-abe6cbcd0ac1',
  secretOfGateway:'33ddf3d51a9ed90c5e93b86155717caa',
  appIDOfWeixin:'wx8104826c9660ea00',
  secretOfWeixin:'91fc1bb1e9e2353ebbeef3ce2d7f2e8b',
  jsCode:'003ORqM50YcuKK1sFaO50yF7M50ORqMf'
}

 认证成功返回结果

{
"code":"00",
"message": "登录成功",
"data":"23423fwafasrser213423fsafwegasd"
}

 认证失败返回结果

{
"code":"01",
"message": "网关App ID或者安全密钥有误,认证失败!",
"data":
}

{
"code":"01",
"message": "获取openId失败,失败原因:xxx",
"data":
}

{
"code":"01",
"message": "验证登录信息发生异常, xxx",
"data":
}

2、携带Token访问API

需要在请求头里面增加如下Header:

api_gateway_weixin_auth_token //登录成功获取的Token

  • 认证成功

    认证通过后会将APP ID、openID加入请求头,后端服务可以从头里直接获取openID进行相关操作。

    具体Key的名称

    1)api_gateway_weixin_openid,登录用户的微信OpenID ;

    2)api_gateway_weixin_session_key,微信登录用户的session key,保留备用;

    3)api_gateway_auth_app_id,应用在网关中的ID;

  • 认证失败的返回结果

    1)Token超期

    {

    errCode: 'AUTH_TOKEN_EXPIRED',

    errMsg: 'token过期,请重新获取Token!'

    }

    2)Token无效

    {

    errCode: 'AUTH_INVALID_TOKEN',

    errMsg: 'Token无效!'

    }

四、置空认证组件

该组件实则不做任何认证,直接返回认证通过,用于覆盖API从分组继承的认证组件。

使用场景:比如某个系统下有较多API,基本都采用相同的组件配置,为节省时间管理员通常在分组上设置,到某个特殊的API又不需要认证,这个时候管理员可以在这个特定的API上设置这个空的认证组件,从而覆盖分组设置。

results matching ""

    No results matching ""