近期在维护一个地图微服务,需要给 api 接口加上鉴权,调用方有前端浏览器,安卓端和其他微服务。
参考了一下业内的鉴权方式,如天地图,百度地图和高德地图。这几家的鉴权方式都是大同小异,对于调用方需要区分是浏览器应用还是服务端应用,若是浏览器就采用 ak+域名白名单的方式鉴权,若是服务端就采用 ak+sk 加签的方式鉴权。
我也想采用这个思路,但是有两个疑问:
1.我服务内的同一个接口如何区分过来的请求是来自服务端或者是浏览器呢,这里做判断之后要用上述两种不同的方式去鉴权。
2.若一个无权限的服务端应用获取了其他浏览器应用的 ak ,自己加上 referer 和 user-agent 等 header ,伪装成浏览器应用请求接口,貌似这种鉴权方案就无法应对了。(因为我在浏览器拿到申请了天地图服务的 ak ,在本地用 postman 就可以轻易得加上上述的 header 头,成功请求到天地图的地图瓦片)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.