关于app登录认证

app的登录认证也都是从web借鉴过来的,其实和web没什么区别。

比较传统的是 cookie + session ,后台要维护用户的 session,客户端通过 cookie 携带 session_id 来标识一个用户。这种方式要在后台维护 session。

而现在接口一般都是 REST API,http 本身也是无状态的,所以现在app一般采用 token 的方式来进行登录认证。

用户第一次登录时后台根据用户信息(一般是用户ID)生成一个 token 返回给客户端,之后客户端每个请求都携带上这个 token (一般通过 header),服务端通过验证 token 来唯一标识一个用户。

如果用户的 token 泄露,用户的信息也就都泄露了,为了安全现在 HTTPS 基本也是标配了。

token 的生成和验证可以自己实现,也可以用现成的解决方案,推荐 JWT (JSON WEB TOKEN)

JWT 是一个字符串由 3 部分组成 header payload signature,中间通过 . 隔开

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJuaW5naGFvLm5ldCIsImV4cCI6IjE0Mzg5NTU0NDUiLCJuYW1lIjoid2FuZ2hhbyIsImFkbWluIjp0cnVlfQ.SwyHTEx_RQppr97g4J5lKXtabJecpejuef8AqKYMAJc

header 存储加密算法
payload 存储用户信息,一般包括用户ID
signature 是用header 中的加密算法 对 header 和 payload 用 secret 进行加盐加密后的签名

secret 存储在服务端,secret 一旦泄露用户信息就泄露了。

服务端生成 jwt 后返回给客户端,客户端每次请求都带着 token, 服务端收到 token 后会取出 header 和 payload 重新签名跟 token 中签名进行对比,若一致认证成功,从 payload 中取出用户信息。若不一致说明 token 被篡改过认证失败。

客户端一般通过请求头 Authorization 携带 token

 'Authorization': 'Bearer ' + token

payload 中不能存储敏感信息,因为 header 和 payload 都只是进行了简单的 base64 编码

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载本文需注明出处:微信公众号EAWorld,违者必究。 本文目录: 一、单体应用 VS 微服务 二、微服务常见安...
    72a1f772fe47阅读 8,840评论 3赞 25
  • 本文目录:一、单体应用 VS 微服务二、微服务常见安全认证方案三、JWT介绍四、OAuth 2.0 介绍五、思考总...
    挨踢的懒猫阅读 18,144评论 5赞 29
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,276评论 19赞 139
  • 1. 微服务架构介绍 1.1 什么是微服务架构? 形像一点来说,微服务架构就像搭积木,每个微服务都是一个零件,并使...
    静修佛缘阅读 6,878评论 0赞 39
  • JWT(Json Web Token)定义了一种使用Json形式在网络间安全地传递信息的简洁开放的标准(RFC 7...
    zhixin9001阅读 2,037评论 0赞 4

友情链接更多精彩内容