API开发

API网关对接入的API使用哪种技术开发没有限制,目前仅限制接入的API必须是HTTP Rest API。

接入网关用户身份验证

在开发服务时,如果需要验证请求的用户身份,可以直接接入网关的用户身份校验,网关使用标准的OAuth2协议验证用户身份,并将访问令牌(access token)转化为JWT传给服务:

这个JWT使用RSA签名算法,签名验证公钥可以通过获取SSO签名公钥接口获取。

关于接入网关身份验证的更多内容请参考统一认证服务

推荐方式

开发测试

在开发调试阶段,我们可以使用Leap提供的调试的授权服务器debug-auth-server。您可以安装在本地环境进行接入测试。

授权服务器可以在本地模拟品高统一认证服务。

安装授权服务器

按照如下方式安装授权服务器:

下载源码工程,或者通过git进行clone:

**[terminal]
git clone https://github.com/leap-guides/gs-oauth2.git

进入gs-oauth2/debug-server目录,启动:

**[terminal]
mvn -Djetty.port=8088 jetty:run

启动后,调用如下接口获取JWT:

**[terminal]
curl -X POST http://localhost:8088/oauth2/jwt \
    -d '{"sub":"user1","aud":"client1","username":"admin","scope":"read,write"}' \
    -H "Content-Type: application/json"

这里,请求体是一个JSON字符串,可以自定义用户信息和应用信息以及授权列表(scope),达到模拟实际场景的效果。

返回结果示例如下:

{
  "jwt_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJ1c2VyMSIsImF1ZCI6ImNsaWVudDEiLCJ1c2VybmFtZSI6ImFkbWluIiwic2NvcGUiOiJyZWFkLHdyaXRlIiwidXNlcl9pZCI6ImNsaWVudDEiLCJleHAiOjE1MDAyOTE0MDV9.FFNeAUAZHNWuE-KQWq06LCUXqAnqgzN3B1z9QPcND98FkVqEwlpE9nRdZPBxpH9YEBeV_2Fllrzhc1Y2GXo23H2ctzlWYGZJkBinohjam58waXnZEBr0m-bmQF_N87YzjPVGtV1mda1DO16LIHkmJ6XBTCJ-jpIdEdD2qp0dAnY"
}

使用这个返回的JWT做为访问令牌,利用Postman调用正在开发的API即可进行调试,如下:

API收到这个请求之后,可以从如下地址获取调试授权服务器的签名公钥:

**[terminal]
curl http://localhost:8088/oauth2/publickey

注: 如果使用品高的开源SDK,只需要将获取公钥的地址配置成http://localhost:8088/oauth2/publickey即可进行模拟调试,真正上线时将统一认证服务器改成生产环境的公钥获取地址即可。

如:

String ssoUrl = "http://sso.example.com";
String localUrl = "http://localhost:8088";
SSOConfig ssoConfig = new SSOConfig(ssoEndpoint);
// 单独配置公钥获取地址,正式上线前注释掉这行代码
ssoConfig.setPublicKeyEndpointUrl(localUrl+"/oauth2/publickey");

SSOClient client = new SSOClient();
client.setConfig(ssoConfig);
上一篇:API权限定义 下一篇:API测试