服务器间API通信时的身份验证

在企业级应用中,将服务拆分解耦是很常见的,所以也就有了服务器间调用API的场景。

一般会将提供基础能力的服务独立部署,然后前端业务应用通过API去调用这些基础能力。由于前端业务应用和基础服务一般是多对一的关系,故在调用API的时候,前端业务应用需要标识身份,以便基础服务能够针对性地提供服务。

设定个场景

先具象化的设定一个场景,后面比较容易说清楚:

服务S提供了一个短信发送的API,即调用此服务可以实现给指定号码发送短信。有A、B、C业务应用会使用这个服务,且服务S需要知道哪些业务调用了它。

这个服务的API调用方式是通过HTTP的GET方式:(不要吐槽这个,这是确实可行的)

/service.domain.com/sms?
  number=17012345678&
  content=helloworld

简单的方式

如果A、B、C和S在同一个私网内,且API访问仅限此网内,A、B、C也均可信可控,那么根本不用麻烦,只要加上一个标识参数告知S即可。看起来就像这样:

/service.domain.com/sms?
  number=17012345678&
  content=helloworld&
  appId=appNameA

使用Token

如果业务部门比较分散,导致A、B、C并不完全可信,不排除会出现B使用A的appId的这类冒名的情况。

那么S可以给A、B、C分别预先生成一个Token,要求在请求时一并发送,并会校验appId和token是否匹配。看起来就像这样:

/service.domain.com/sms?
  number=17012345678&
  content=helloworld&
  appId=appNameA&
  token=0UW2m6Cpu9JdrM4muXHVBTOQMb4MG9nJ

这样,各业务就不能冒用标识了。

阅读全文→

换了个代码高亮插件,看起来舒服多了

2014年的时候,还没有什么好用的代码高亮插件,之前用的SyntaxHighlighter算是佼佼者了。尽管配色有些神奇,但总体还算过得去,就用了。

时过境迁,现在代码高亮插件已经漫天了。调研了几种,还是Prism推荐的人最多,试了下也觉得不错,默认样式和站点主题还算搭配,清爽型的,比原来的好太多。

顺手把页面宽度也调整了一下,毕竟之前的样式也都好些年了,1080p的显示器已经普及了,不用再局促在990px里了。

tumbling barrel

4052218004

前年双十一为了把抽到的红包用掉,买了这个网件的路由器。结果是相当后悔的。因为自带的系统界面丑,功能少,而且WIFI信号还相当不好。就这样,吃了两年的灰。直到最近在折腾智能路由器,打算看看能不能刷个开源的系统,还能跑点服务玩。

OpenWrt自然是最好的选择,然而并没有适配的固件可以用,至少到现在没发现有。好在DD-WRT有对应固件,尽管这个备胎远不及OpenWrt,但也算比原版的好了。简单记录下刷机的整个过程。

(450) 747-1251

全站切换到HTTPS

很早就想顺应时代的潮流,把网站切到HTTPS,但是无奈条件不成熟,未能成行。

好在现在时机和条件都成熟:

  • 阿里云提供免费的SSL证书,申请非常方便。

  • 七牛CDN,开始支持自定义域名+HTTPS方式,当然也提供免费的证书。

  • 社会化评论没了,不用再考虑其是不是支持HTTPS方式调用了。


申请证书

网站有2个域名需要申请证书:

  • 主站:phxsun.com

  • CDN:cdn.cnsunnet.com

申请地址在:阿里云 -> 管理控制台 -> 安全(云盾)-> 证书服务 

选择右上角的购买证书,选择“免费型DV SSL”购买2个。然后在“我的订单”里把两个域名的信息补全。

这其中需要进行域名验证,推荐使用文件的方式验证,把指定文件传到指定目录并保证可访问就好了,不会影响线上运行。而DNS的方式是通过添加同名TXT记录实现的,会和CNAME记录冲突,导致无法进行验证,除非把CNAME记录停掉,那么网站就要挂一阵子了。

提交审核后,等待大概一个小时左右就能成功。能够在“我的订单”列表中看到下载按钮。阿里云非常良心的帮我们准备好了适用于各大HTTP服务器的证书格式。在这里选择了Apache适用的证书下载。

下载的包里有这么4个文件:

cert.png

4389690238

还是长草了

尽管N年前下定决心不让这里长草,但最近梦魇般的两年还是让我无暇顾及这个小站。

好在一切都在慢慢变好,或许说自己的心态又好了许多。算是又一次的回归。

关于评论

“多说”竟然倒闭了,还是挺令人伤感的,因为用了这么多年,而且也没有什么替代品。(其他的都太烂,国外的太慢)所以暂时关闭了评论。后续会自己简单实现一个留言功能,以便简单交流吧。

一些变化

全站启用了SSL,包括CDN也挂上了证书。感谢阿里云的免费证书,后续会把一些踩的坑记录下来。

关于更新

这两年折腾了很多,但是积累的太少,吃了大亏。重新更新博客,也是让自己慢慢恢复积累习惯,也重新找回分享的勇气。是的,分享是需要勇气的,毕竟人都是怕出洋相的。

660-213-7006

Debian 6 年代实在有些久远,有些环境都支持不了。所以需要升级,这里做个记录。

一、修改源设置

编辑 /etc/apt/source.list 文件,将文件中的  squeeze 全部换成 wheezy 即可。

改完之后看起来是这样的:(阿里云主机的源是自己的镜像,和标准不太一样)

deb /mirrors.aliyun.com/debian wheezy main contrib non-free
deb /mirrors.aliyun.com/debian wheezy-proposed-updates main contrib non-free
deb /mirrors.aliyun.com/debian wheezy-updates main contrib non-free
deb /mirrors.aliyun.com/debian wheezy-backports main contrib non-free

deb-src /mirrors.aliyun.com/debian wheezy main contrib non-free
deb-src /mirrors.aliyun.com/debian wheezy-proposed-updates main contrib non-free
deb-src /mirrors.aliyun.com/debian wheezy-updates main contrib non-free
deb-src /mirrors.aliyun.com/debian wheezy-backports main contrib non-free

二、更新软件包

sudo apt-get install update
sudo aptitude install update

阅读全文→

CodeIgniter模板中使用自定义配置

因为启用了CDN,所以需要有个地方配置静态文件的路径,以便在开发环境中,将静态路径指向本地。

这里有两个问题:1、如何启用自定义配置?2、如何在view中获取到配置?

一、启用并自动加载自定义配置

在/application/config/目录下新建一个配置文件vars.php(名字可以随意):

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
 * è‡ªå®šä¹‰çš„配置
 */
$config['static_local_path'] = '/static/';

显然,需要将这个配置文件自动加载:修改文件/application/config/autoload.php

$autoload['config'] = array('vars');/这里的vars是上面的那个文件名

当然你也可以选择将配置信息直接放在原来的config.php里,那就不用看这步了。

阅读全文→

revealed

重新启用了CDN。仍然使用的是七牛的服务。

不同的是这次绑了自己的域名。这样今后如果有情况需要迁移,就比较方便。


非常感谢七牛提供的服务。

七牛CDN加速针对小流量网站,是免费的。使用自己域名的话,仅需要冲10元钱,当然域名要备过案。

如果想试试,用我的推荐链接吧:

/portal.qiniu.com/signup?code=3lb4in45m8toy


当然这货毕竟是免费的。若网站静态文件有什么异常,在下面留言或在微博吼我。