如何设计安全可靠的开放接口---之AppId、AppSecret

【如何设计安全可靠的开放接口】系列

1. 如何设计安全可靠的开放接口—之Token
2. 如何设计安全可靠的开放接口—之AppId、AppSecret
3. 如何设计安全可靠的开放接口—之签名(sign)
4. 如何设计安全可靠的开放接口【番外篇】—关于MD5应用的介绍
5. 如何设计安全可靠的开放接口—还有哪些安全保护措施
6. 如何设计安全可靠的开放接口—对请求参加密保护
7. 如何设计安全可靠的开放接口【番外篇】— 对称加密算法

前言

前面我们介绍过了token机制,它可以解决单点登陆、跨域等问题,避免每次都需要用户登陆,不过并不是每个对外开放的接口都是需要用户登陆的,如果是这样,那我们就要想其他的方式来对用户身份进行验证了,一般我们会使用AppId的方式,实际上你也可以认为它是一种token机制,只不过换一个名字而已。

AppId的使用

因为AppId实际上就是一个标识,所以一般只要能保证系统内全局唯一即可,不过,为了能够防止有人拿着别人的AppId来请求,所以通常AppId都会配对一个AppSecret,可以理解为AppId的密码,最终的接口请求内容会根据AppIdAppSecret并按照一定的规则来生成一套签名,当请求方带着签名值去请求提供方时,提供方就会验证这个签名,只有验证通过才会继续处理。

AppId的生成

正如前面所说,AppId生成只要保证全局唯一即可,所以这里就不过多介绍了。

AppSecret生成

AppSecret的生成也很简单,只要与AppId能关联起来保证唯一即可。

PS:AppSecret后续会用于生成Sign(签名),因此一定要注意AppSecret的保密性,并且不能在网络中进行传输。

appSecret生成代码示例


public class AppUtils {

    static Map<String, String> appMap = Maps.newConcurrentMap();

    public static void main(String[] args) throws NoSuchAlgorithmException {
    	// 方式一演示
        buildSimpleAppSecret("abc");
        System.out.println(getAppSecret("abc"));
    }

    /**
     * 构建简单的appSecret,比如:使用UUID
     *
     * @param appId
     */
    public static void buildSimpleAppSecret(String appId) {
        appMap.put(appId, UUID.randomUUID().toString());
    }

    private static String getAppSecret(String appId) {
        return String.valueOf(appMap.get(appId));
    }
}

总结

AppIdAppSecret的生成都比较简单,总的来说只要保证唯一、且能够匹配的上即可,需要注意的就是AppSecret就像是密码一样,是需要保密的,接口请求方与接口提供方可以通过私信沟通的方式来约定AppIdAppSecret,当然做的比较好的是,接口提供方通过专门的工具让接口请求方自行生成AppSecret

另外, AppIdAppSecret必须要结合sign(签名)使用,否则就没有意义,下节我们就来介绍sign

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码拉松

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值