【权限设计系列】「认证授权专题」微服务常见安全认证方案

这篇具有很好参考价值的文章主要介绍了【权限设计系列】「认证授权专题」微服务常见安全认证方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HTTP 基本认证

HTTP Basic Authentication(HTTP 基本认证)是 HTTP 1.0 提出的一种认证机制,这个想必大家都很熟悉了,不再赘述。

HTTP 基本认证的过程如下
  1. 客户端发送HTTP Request给服务器。
  2. 因为Request中没有包含 Authorization header,服务器会返回一个 401 Unauthozied 给客户端,并且在 Response 的 Header “WWW-Authenticate” 中添加信息。
  3. 客户端把用户名和密码用BASE64加密后,放在Authorization Header中发送给服务器, 认证成功。
  4. 服务器将Authorization Header中的用户名密码取出,进行验证,如果验证通过,将根据请求,发送资源给客户端。
基于 Session 的认证

基于Session的认证应该是最常用的一种认证机制了。用户登录认证成功后,将用户相关数据存储到Session中。

  • 单体应用架构,默认Session会存储在应用服务器中,并且将 Session ID 返回到客户端,存储在浏览器的Cookie中。

  • 分布式的架构,Session 存放于某个具体的应用服务器中自然就无法满足使用了,简单的可以通过 Session 复制或者 Session 粘制的方案来解决。

Session的复制机制

Session 复制依赖于应用服务器,需要应用服务器有 Session 复制能力,不过现在大部分应用服务器如 Tomcat、JBoss、WebSphere 等都已经提供了这个能力。除此之外,Session 复制的一大缺陷在于当节点数比较多时,大量的 Session 数据复制会占用较多网络资源。

Session 粘滞是通过负载均衡器,将统一用户的请求都分发到固定的服务器节点上,这样就保证了对某一用户而言,Session 数据始终是正确的。

不过这种方案依赖于负载均衡器,并且只能满足水平扩展的集群场景,无法满足应用分割后的分布式场景。

微服务架构的认证能力

在微服务架构下,每个微服务拆分的粒度会很细,并且不只有用户和微服务打交道,更多还有微服务间的调用。这个时候上述两个方案都无法满足,就要求必须要将 Session 从应用服务器中剥离出来,存放在外部进行集中管理。可以是数据库,也可以是分布式缓存,如 Memchached、Redis 等。这正是 David Borsos 建议的第二种方案,分布式 Session 方案。

【权限设计系列】「认证授权专题」微服务常见安全认证方案

基于 Token 的认证

随着 Restful API、微服务的兴起,基于 Token 的认证现在已经越来越普遍。Token 和 Session ID 不同,并非只是一个 key。

Token 一般会包含用户的相关信息,通过验证 Token 就可以完成身份校验。像 Twitter、微信、QQ、GitHub 等公有服务的 API 都是基于这种方式进行认证的,一些开发框架如 OpenStack、Kubernetes 内部 API 调用也是基于 Token 的认证。基于 Token 认证的一个典型流程如下:

【权限设计系列】「认证授权专题」微服务常见安全认证方案

用户输入登录信息(或者调用 Token 接口,传入用户信息),发送到身份认证服务进行认证(身份认证服务可以和服务端在一起,也可以分离,看微服务拆分情况了)。

  1. 身份验证服务验证登录信息是否正确,返回接口(一般接口中会包含用户基础信息、权限范围、有效时间等信息),客户端存储接口,可以存储在 Session 或者数据库中。

  2. 用户将Token放在 HTTP 请求头中,发起相关 API 调用。

  3. 被调用的微服务,验证 Token 权限。

  4. 服务端返回相关资源和数据。

基于 Token 认证的好处如下
  • 服务端无状态:Token 机制在服务端不需要存储 session 信息,因为 Token 自身包含了所有用户的相关信息。

  • 性能较好,因为在验证 Token 时不用再去访问数据库或者远程服务进行权限校验,自然可以提升不少性能。

  • 支持移动设备。

  • 支持跨程序调用,Cookie 是不允许垮域访问的,而 Token 则不存在这个问题。文章来源地址https://www.toymoban.com/news/detail-413894.html

到了这里,关于【权限设计系列】「认证授权专题」微服务常见安全认证方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot为WebSocket添加安全认证与授权功能

    作者:禅与计算机程序设计艺术 19年初,Spring 推出了 Spring Websocket 技术,这是一种基于WebSocket协议的消息通信框架,用于快速开发WebSocket API。在实际应用中,WebSocket 可以很好的降低服务器负载、节省带宽资源并提供实时数据传输。但是,由于WebSocket本身没有身份验证机制、

    2024年02月09日
    浏览(40)
  • PHP中如何实现安全的用户认证与授权?

    在Web开发中,用户认证与授权是两个至关重要的环节。认证是指验证用户身份的过程,确保只有合法的用户才能访问系统资源;而授权则是确定已认证用户具有哪些操作权限的过程。在PHP中,实现安全的用户认证与授权需要考虑多个方面,包括用户密码的存储、登录验证的机

    2024年04月29日
    浏览(36)
  • Kafka三种认证模式,Kafka 安全认证及权限控制详细配置与搭建

    Kafka三种认证模式,Kafka 安全认证及权限控制详细配置与搭建。 Kafka三种认证模式 使用kerberos认证

    2024年02月04日
    浏览(51)
  • 实施PCIDSS认证:确保您的身份验证和授权在安全环境中运行

    作者:禅与计算机程序设计艺术 “Payment Card Industry Data Security Standard”(PCI DSS)是一个美国信息安全标准,是20世纪90年代末由美国国家信用卡行业组织(National Institute of Standards and Technology,NIST)提出的安全标准。它是防止信用卡交易被不法侵入者窃取、篡改或泄露个人信息

    2024年02月05日
    浏览(48)
  • 吊打面试官系列之:什么是 认证、鉴权、授权、权限控制,这一篇必须安排的明明白白。

    小屌丝 :鱼哥,啥是认证,啥是鉴权? 小鱼 :嗯?? 做了这么多年码农,这个还不知道呢? 小屌丝 :唉~~ 没整明白啊,能不能给我讲一讲啊 小鱼 :好吧,正好今晚有时间,我就把 认证、鉴权、授权及权限控制这点事,都给你说一说。 小屌丝 :奈斯啊。 定义:

    2024年02月04日
    浏览(49)
  • CDH数仓项目(三) —— Kerberos安全认证和Sentry权限管理

    本文基于《CDH数仓项目(一) —— CDH安装部署搭建详细流程》和《CDH数仓项目(二) —— 用户行为数仓和业务数仓搭建》和搭建CDH数仓。本章节主要介绍基于CDH数仓的Kerberos认证和Sentry权限管理 Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进

    2023年04月22日
    浏览(54)
  • 学习笔记三十一:k8s安全管理:认证、授权、准入控制概述SA介绍

    认证基本介绍:kubernetes主要通过APIserver对外提供服务,那么就需要对访问apiserver的用户做认证,如果任何人都能访问apiserver,那么就可以随意在k8s集群部署资源,这是非常危险的,也容易被黑客攻击渗透,所以需要我们对访问k8s系统的apiserver的用户进行认证,确保是合法的符

    2024年02月06日
    浏览(38)
  • 开放平台实现安全的身份认证与授权原理与实战:学习OAuth2.0之PKCE

    随着互联网的不断发展,我们的生活中越来越多的服务都需要我们的身份认证和授权。例如,我们在使用某些网站或应用程序时,需要通过账号和密码进行身份认证,以便于保护我们的个人信息和数据。同时,当我们使用某些第三方应用程序时,这些应用程序需要我们授权访

    2024年04月16日
    浏览(38)
  • 开放平台实现安全的身份认证与授权原理与实战:整理OAuth2.0各种开发指南

    OAuth 2.0 是一种基于标准 HTTP 的身份验证和授权机制,它允许用户授予第三方应用程序访问他们在其他服务(如社交网络、电子邮件服务器或云存储服务)的数据。OAuth 2.0 的目标是提供一种简化的方法,使得用户可以安全地授予第三方应用程序访问他们的数据,而无需将他们的密

    2024年04月27日
    浏览(44)
  • 最强的单点登录认证系统,基于RBAC统一权限控制,实现用户生命周期管理,开源、安全

    MaxKey 单点登录认证系统,谐音马克思的钥匙寓意是最大钥匙,是 业界领先的IAM-IDaas身份管理和认证产品 ,支持OAuth 2.x/OpenID Connect、SAML 2.0、JWT、CAS、SCIM等标准协议,提供 安全、标准和开放 的用户身份管理(IDM)、身份认证(AM)、单点登录(SSO)、RBAC权限管理和资源管理等。 MaxKey注

    2024年02月03日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包