.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访问授权流程;

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis中,使用token来管理过期时间是一种常见的做法。当客户端请求服务时,服务器会生成一个唯一的token,并将其存储在Redis中作为key,同时存储一些与token相关的信息,如用户ID、过期时间等作为value。通过设置过期时间,可以有效地控制token的生命周期并提升系统的安全性和性能。 当一个token过期时,服务器会检查其是否存在于Redis中。如果存在,则说明该token还在有效期内,服务器可以继续验证请求,并更新token的过期时间,延长其有效期。这样做的好处是避免了频繁地向数据库查询token信息,降低了系统的负载压力和响应时间。 在进行过期更新时,可以使用Redis提供的expire命令来设置新的过期时间。通过expire命令,我们可以指定一个新的过期时间(以秒为单位),当时间达到时,Redis会自动将该key删除。同时,我们还可以使用set命令更新token的value,以便存储一些新的信息或者刷新其过期时间。 另外,为了保证系统的性能和避免出现脏数据,可以采取定期清理过期token的策略。通过定期的清理工作,我们可以及时地清除过期的token,释放相关的存储空间,提高系统的可用性和性能。 综上所述,通过使用token来管理过期时间,并在过期时及时地更新它们,可以有效地提升系统的安全性和性能。而Redis提供的expire和set命令可以方便地实现过期更新的功能。定期清理过期token则是保证系统健康运行的重要步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值