实用云,提供最全最实时的云市场资讯

手机站:/m

云服务存储_阿里云_人工智能都有哪些

时间:2021-02-23 17:03编辑:实用云来源:实用云当前位置:主页 > 服务器 >

云服务存储_阿里云_人工智能都有哪些

我们如何解决身份验证和授权Reshef Mann 2015年7月13日在AppsFlyer上,我们为客户(应用程序广告商)提供了一个分析仪表板,以衡量他们的广告表现运动。最初这个系统是作为一个单一的Python web应用程序创建的,但是随着时间的推移和我们的系统的发展,我们开始体验由单一应用程序强加给我们的限制所带来的痛苦。说出一个少数:应用程序必须作为一个整体部署每个端点必须符合web框架架构(在我们的例子中是金字塔)授权必须在每个端点上声明,从一开始我们在后端使用面向服务(事件驱动)的架构。我们希望将面向web应用的客户的面向服务的好处保持为好吧。那个在单一应用程序墙之外的第一个实现是我们的保留报告。它是在Clojure中开发的,它确实让我们想从这个单一的应用程序中解脱出来脚镣。那个在开发保留报告的过程中,我们显然必须实现身份验证和授权。然而,要使它成为整体的一部分,它必须与金字塔网络当前的认证机制兼容应用程序输入为了实现这一点,我们回顾了金字塔源代码,并在Clojure中实现了流。我们还必须实现自动注销和金字塔网络应用程序的所有行为。这种身份验证机制需要嵌入到我们将要创建的每个服务中。将它作为一个库可以解决这个问题,但这意味着对该库的每次更新都可能需要升级和重新部署所有服务。在添加,我们必须将nginx配置为在金字塔网络应用程序和新的保留报告之间正确路由服务解决方案为了简化我们的生活,我们决定创建一个名为Bouncer的中心服务。顾名思义,企业云服务器,它位于我们系统的入口,决定谁可以访问,他/她可以在哪里访问进入。保镖可以描述为验证(和授权)反向代理。它从Gogeta项目中获得灵感,并通过身份验证和授权。用于为了节省从每个后端服务访问中心用户数据服务的需要,bouncher在发送到后端服务的HTTP请求中添加了一个用户数据头。这有助于降低后端的复杂性和外部依赖性服务。我们为Bouncher创建了一个客户端库,每个后端服务都可以使用该库提供一个易于使用且一致的API,以便与Bouncher通信,以便:注册后端服务位置让Bouncher知道后端服务解析用户数据头并将其添加到请求对象设计概念输入流为了执行其工作,Bouncher依赖于外部数据,如用户和应用程序数据库,其中保存有关可以登录系统的用户及其与应用程序的关系的域数据。我们没有采用传统的可能带有缓存的请求/应答体系结构,而是采用了一种持续监听数据库更新的体系结构,并处理适合我们的用例的数据在内存中的表示形式。稍后我将详细说明(提示:规则引擎)。当我们使用CouchDB来存储我们的域数据时,我们可以使用它的changes feed作为输入溪流。另一个传入数据流是路由配置。我们使用consur在后端服务和bouncher之间传递这些数据,怎么做淘客,并使用consur的阻塞查询来模拟实时输入流。惯例为了尽可能减轻后端服务的负担,我们决定将授权约定作为基础。路由使用Clout语法。我们定义了保留关键字,当在后端服务定义的路由中使用这些关键字时,将在保镖级别限制对该路由的访问。例如,其中一个关键字是:app-id。当在路由中使用时,它将代理对后端服务的调用,前提是登录的用户可以访问该应用程序,否则将发回401未经授权的HTTP响应。我们相信这将涵盖大多数授权案例(80/20原则),对于需要细粒度授权控制的后端端点,bouncher添加一个保存用户记录的标题数据。声明性访问控制随着我们的域模型的发展和越来越复杂,访问控制要求越来越高,比如只向子用户提供对属于该帐户的几个应用程序的访问权限,或者将其数据访问限制在特定的日期范围内,我们希望授权规则尽可能的可维护。为了实现这一点,我们使用了一个名为clarararules的规则引擎,它允许我们保持这些规则的简洁性。让我们回顾一下这些组件,并用几个组件描述它们的职责文字。事件stream向主用户和应用程序数据库(我们域中的主要实体)打开一个HTTP流。它将HTTP流转换为核心.异步在中使用的通道进程域保持作为系统使用的域模型的内部表示。数据存储在一个嵌入式关系数据库(H2数据库引擎)中,以进行丰富的查询。它还公开了域模型中更改的内部状态的实时更改流。域组件的传入流是系统中实体的新状态,其输出流是模型的特定于域的事件。例如,新的输入事件可能如下所示:{"type":"user",软件企业管理,"user id":"xyz123","is admin?":false,…}域将与存储在域模型中的当前状态进行比较。假设它是:{"type":"user","user id":"xyz123",即时通讯云平台,"is admin?":true,…}通过比较这两种状态,它将推断用户不再是管理员,并将向其输出流发送UserAdminPrivilegesRevoked事件。输出流的订户将能够响应相应地,保镖是授权系统的核心。它订阅上述域的输出流,并更新其内部规则引擎使用的事实。它公开的外部API是一个简单的函数,它接收用户记录和他想要访问的url,并返回用户是否被授权或不是。ProxyThis是HTTP反向代理。它检查用户是否被:authenticatedAuthenticated有权访问目标URL如果满足这些条件,企业应用管理,请求将被定向到后端服务,因为它是由服务规范注册的组件。英寸如果用户未通过身份验证,则会显示auth应用程序提供的登录页面组件服务不断地从consur侦听后端服务位置和配置的端点的更新网址.认证AppA简单的web应用程序,提供登录表单处理程序和注销处理程序,以便未经身份验证的用户能够登录。摘要那么,对于Bouncer来说,未来会有什么变化?我们的下一个任务是为帐户管理员提供一个用户界面,在这个界面中,他们将能够为用户和用户组提供对某些资源的细粒度访问。我希望在这篇文章的后续文章中继续讲述保镖的故事,所以请继续关注。关于Reshef Mann过去10年来,Reshef一直在各种网络上工作Intel、SAP和Jajah(被Telefonica收购)和Xsighs等初创公司的技术和分布式系统。Reshef拥有Technion信息系统学士学位。跟随Reshef Mann

上一篇视频云存储方案_国内_大数据应用公司

下一篇服务器排名_怎么选择_云服务器在哪里

世界之最排行

世界之最精选