不改代码加鉴权的野路子

156 阅读2分钟

大家好,我是Code乐手马晓龙,欢迎来到我的频道。 接上篇文章,这篇文章介绍一个使用阿里云给api接口加鉴权认证的野路子,不废话直接上方案。

一、方案说明

使用阿里云的函数计算充当API网关,所有接口请求打到函数计算,接口认证鉴权使用阿里云函数计算的认证逻辑。 代码开发可使用阿里云sdk进行快速开发。

flowchart LR;
	test[阿里云函数计算]
    api1(服务1)
    api2(服务2)
    api3(服务3)
	外部请求-->test
	test-->api1
    test-->api2
    test-->api3

二、搭建流程

1.创建函数计算服务

使用自定义运行时创建函数计算,这个我选用的是falsk + python3.9

serverless2.jpg

2.函数计算编写服务中转逻辑

代码逻辑很简单,我这里是直接进行接口中转,也可以添加一些处理逻辑,像添加一些头信息等。


from flask import Flask
from flask import request
import requests
import os

app = Flask(__name__)

@app.route('/<path:path_url>', methods=['GET', 'POST'])
def hello_world(path_url):
        url_prefix = 'api服务地址'
        # print(path_url)
        # print(request.data)
        return requests.post(url_prefix+path_url,headers={token_key:token_secret}, data=request.data).text

if __name__ == '__main__':
        app.run(host='0.0.0.0',port=9000)

3.添加http触发器

函数计算的服务默认不对外输出接口服务,需要我们添加一个http触发器使能http服务,并且使能认证功能。

serverless1.jpg

4.提供对外接口

添加完http触发器后,会显示该该http服务的接口地址,有公网地址、内网地址以及测试地址。测试过程中我们可以先禁用掉认证逻辑,这样直接在postman中即可调用该服务进行测试,正式上线后再开启认证服务即可。

serverless3.jpg

5.外部调用方法

http触发器使能认证后,可以使用阿里云的sdk结合access_key和acess_secret进行接口的调用,具体使用方法可以参考阿里云官方文档

三、总结

这样就使用阿里云的函数计算搭建了一个我们的api网关层,不需要自己编写复杂的认证逻辑。当然这是一个野路子的方法,公司中正式上线的服务还是不建议这么粗糙的处理。