.net WebAPI访问授权机制及流程设计(header token+redis)

背景:

1.需要在.net5 WebAPI中添加访问授权机制,即实现在登录时颁发用户凭证,后续需要通过凭证访问其他接口,如果凭证不合法,不能正常访问接口;

2.网站嵌入到winform客户端中,利用winform可以获取客户端的mac地址的权限,将mac地址作为权限中的一部分,即将mac地址和账号绑定来实现账号只能在指定客户端电脑上使用;

3.为了防止在登录后获取token后在其他客户端上使用,利用IP绑定token;

实现:

首先在登录成功后,将客户端的IP作为加密key,username(登录账号)+guid+cpu序列号为加密内容进行加密,加密结果作为token凭证颁发给用户;

后续Api访问授权过滤流程:

1.     正式环境,先对请求来源进行限制,如http请求header中的referer,检查是不是在系统设置的白名单中;如不在,拒绝访问;

2.     其次,在header中取token,如果取不到,拒绝访问;

3.     获取客户端IP,将IP进行处理作为长度32的字符串(现在是除去非数字,右侧用0填充);

4.     将32位字符串作为key对称解密token,解密失败则拒绝访问;

5.     解密出来的字符串,内容格式为:username + "|" + guid+"|"+cpuid;guid作为Redis的key去取值,取不到,拒绝访问;

6.     从Redis中取出来的Value,内容格式为:username+"|"+keeplogin+"|"+cpuid;cpuid为该账号登录时所在客户端的cpu序列号

7.     用"_hw_" + username作为key去Redis中取Value,如果为空拒绝访问;

8.     7中取到的Value为限制账号绑定的cpu序列号,为”all”时代表不限制,可以随意客户端访问;不为“all”时,判断7中Value是否包含6中cpuid,如不包含,则拒绝访问;

访问流程图:

注意:加密方式和加密内容可以根据具体的业务限制去做,这里只是列举了一种寄宿在winform中的网站API访问授权流程;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值