Spiga

标签为微服务的文章

微服务架构(四):身份验证与授权

2018-03-23 21:30:31

摘要:什么是身份认证 身份认证是指当客户端访问服务端资源时,验证客户端是否合法的一种机制 什么是授权 授权就是指当客户端经过身份认证后,能够有限的访问服务端资源的一种机制 为什么要使用身份验证和授权 为了保证服务端资源的安全,我们要理解必须从真实项目中去理解 身份认证和授权方式有哪些 Base认证 Base64编号认证 == https Digest认证 MD5消息摘要认证 == https Bearer认证 就是基于token(电子身份证)认证,讲用户信息等其他信息转换成为token,然后以token进行认证 token认证是一种无状态的认证方式,能够无限扩展,特别适合做单点登录 3.1 OAuth 2.0 ==== 授权方式的认证 3.2 JWT的也是一种身份认证 token 分两种类型 引用类型token == OAuth 2.0 无用户相关信息 自包含token 有用户相关信息 JWT === 地址,电话,id,等 在实际分布式项目中,大部分都是使用Bearer来进行身份认证和身份授权 在分布式项目或者微服务项目中,为了保证系统统一登录(SSO登录), 使用OpenID协议标准来规范身份认证功能 === 规范 同时使用OAuth 2.0协议标准来规范权限访问 === 规范 为了将身份认证(单点登录)和授权结合起来,所以出现了OpenID Connect协议标准 === 接口 OpenID Connect = OpenID + OAuth 2.0 SSO+OAuth 2.0可以实现单点登录和授权 IdentityServer4 也可以实现单点登录和授权 然后综合实现了这些框架就是今天要讲的IdentityServer4 身份认证服务器 如何在项目中使用IdentityServer4 IdentityServer4 是什么 IdentityServer是基于OpenID Connect协议标准的身份认证和授权程序,它实现了OpenID Connect 和 OAuth 2.0 协议。 IdentityServer4 功能 保护你的资源 使用本地帐户或通过外部身份提供程序对用户进行身份验证 提供会话管理和单点登录 管理和验证客户机 向客户发出标识和访问令牌 验证令牌 IdentityServer4 内部概念 下面对以下几个转用术语进行解释 用户…… 阅读全文

微服务架构(三):API网关

2018-03-18 18:31:04

摘要:什么是API网关 就是用来限制客户端访问服务端api一到门槛,在图例中已经进行了展示 什么是API API是Application Programming Interface缩写,翻译成中文就是应用程序接口。在实际微服务中可以理解一个个功能方法。就比如你一个用户服务的微服务,可以对外提供 API 接口为,查找用户,创建用户等。 什么是网关 网关, wiki 上定义。 在计算机网络中,网关(英语:Gateway)是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理 为什么要使用微服务网关 大概有4四种情况 聚合微服务增多,导致客户端不好维护 聚合微服务进行集群 2.1 增加和修改聚合微服务集群,都要修改客户端,导致客户端不稳定 2.2 服务集群,无法解决复杂均衡的问题 客户端访问多个聚合微服务 3.1 如果需要对客户端身份验证和授权,会导致每个服务都进行授权 3.2 如何客户端访问过大,无法限制客户端流量,导致系统宕机 3.3 如果客户端访问微服务系统,每个微服务之间进行调用。会导致耗时操作很难统计。 3.4 如果客户端访问微服务系统,如何统计客户端的调用日志 总结 路由 负载均衡 限流 认证 授权 链路监控 熔断降级 Service Fabric 如何在项目中使用API网关 API网关类型 Netflix Zuul +java实现 Kong nginx +lua脚本实现 Tyk go语言开发,收费版本 Ocelot aspnetcore开发的 如何在项目中使用Ocelot Ocelot是什么 简单的来说Ocelot是一堆的asp.net core middleware组成的一个管道。当它拿到请求之后会用一个request builder来构造一个HttpRequestMessage发到下游的真实服务器,等下游的服务返回response之后再由一个middleware将它返回的HttpResponseMessage映射到HttpResponse上。 Ocelot内部概念 上游 Ocelot为上游:Upstream 下游 Ocelot下面映射的服务为下游:Downstream 主要功能 路由 1.1 接受客户端请求 1.2 奖客户端请求转换成下游地址 1.3 调用下游服务,并返回…… 阅读全文

微服务架构(一):注册中心

2018-03-10 11:27:00

摘要:注册中心 什么是注册中心 我们要搞清楚这个问题,咋们得从一个实际的场景中去学习,我们以购物场景为例来说明,在购物和场景中,总共涉及到三个角色,消费者,商店,商场。 在这个场景中,我们以画图来解决 为什么要使用注册中心 优点 解耦 服务消费者个服务提供者解耦,各自变化,不互相影响 扩展 服务消费者和服务提供者增加和删除新的服务,对于双方没有任何影响 中介者设计模式 这是一种多对多关系的典范 注册中心类型 zookeeper 一个被广泛使用的分布式的高性能服务 consul 一个发现和配置服务的工具,提供API注册和发现服务,为了确保操作性,consul会执行健康检查 etcd 一个高可用,分布式的,一致性key-value结构,用于共享配置信息和服务发现K8s使用了etcd eureka 这个注册中心已经闭源了,建议不要使用了 在微服务中如何使用consul 什么是Consul Consul是一个用来实现分布式系统的服务发现与配置的开源工具。是由go语言开发。他主要由多个组成部分: 服务发现:客户端通过Consul提供服务,类似于API,MySQL,或者其他客户端可以使用Consul发现服务的提供者。使用类似DNS或者HTTP,应用程序和可以很轻松的发现他们依赖的服务。 检查健康:Consul客户端可以提供与给定服务相关的健康检查(Web服务器返回200 ok)或者本地节点(“内存利用率低于90%”)。这些信息可以监控集群的运行情况,并且使访问远离不健康的主机组件。 键值对存储:应用程序可以使用Cousul的层级键值对。 多数据中心:Consul有开箱及用的多数据中心。 Consul 的角色 client: 客户端, 无状态, 将 HTTP 和 DNS 接口请求转发给局域网内的服务端集群. server: 服务端, 保存配置信息, 高可用集群, 在局域网内与本地客户端通讯, 通过广域网与其他数据中心通讯. 每个数据中心的 server 数量推荐为 3 个或是 5 个. agent 组成 consul 集群的每个成员上都要运行一个 agent,可以通过 consul agent 命令来启动。agent 可以运行在 server 状态或者 client 状态。自然的,运行在 server 状态的节点被称为 server 节点;运行在 client …… 阅读全文