内容

高级设计文档

MOBILE 工具(Node.js 的 Azure AD 身份验证)

版本 1.0(草案)

目录

  1. 简介 4
  2. 建筑表示(逻辑视图)5
  3. 技术过程 7
  4. 建筑目标和制约因素 8
  5. 尺寸和性能 9
  6. 问题和关注 9

高级设计(HLD)

  1. 简介本文档提供了高级概述,并解释了 Node.js(移动工具)的 Azure AD 身份验证过程的整体架构。它解释了移动应用程序,Web-API,文档数据库和 Azure Active Directory 之间的技术组件及其交互。最后,移动用户将如何登录系统并执行操作。该文档提供了体系结构目标的高级描述,系统支持的用例以及为最佳实现用例而选择的体系结构样式和组件。1.1。目的高级设计文档(HLD)提供了 MOBILE APP 的全面架构概述。1.2。范围本 HLD 的范围是描述 Preludesys 团队开发的 MOBILE APP 的架构。

1.3。定义,缩略语和缩写

  • HTTP - 超文本传输​​协议
  • Azure AD - Azure Active Directory
  • Web-API - Web 应用程序接口
  • REST API - 具象状态转移
  • JSON - JavaScript 对象表示法
  • ADAL - Azure Active Directory 身份验证库
  • iOS - Apple 设备的操作系统
  • Android - 适用于 Google 设备的操作系统
  • OAuth2 / OpenID-授权的开放标准
  • 用户 - 这是具有 Azure Active Directory 成员的组织用户。
  • 创建者(流程所有者) - 这是可以创建/修改文档的用户
  • Reader - 此用户可以读取/查看数据
  • 管理员 - 此用户可以读取,修改和删除任何 DTCPII 工具流程规范,流程审核,流程模板以及管理其他用户权限/角色。管理员可以将管理权限委派给系统中的其他用户。

1.4。参考

1.5。概述

本文档提供了以下组件的技术概述。

  • Node.JS 模块
  • 自定义 Web API
  • ADAL 库
  • Azure Active Directory
  • 文件 DB
  1. 架构表示(逻辑视图) StackOverflow 文档 解决方案分为两个组件。一个是可在移动设备上运行的客户端应用程序,另一个是在 Azure 环境中运行的服务器端组件。

移动应用程序(Node.js 客户端)Node.js 是轻量级响应用户界面。移动应用程序可以简单地用本地语言编写,也可以使用像 Cordova(aka PhoneGap)这样的混合解决方案。此用户界面将通过调用服务器端 API 获取数据并执行业务逻辑。如果移动应用程序需要部分业务逻辑,则必须在 iOS 的 Objective-C 和 Android 的 Java 中重写。虽然 Cordova 为某些代码重用提供了解决方案,但它无法直接利用 Node 或其生态系统。

服务器端组件 Node.js 服务器节点是 JavaScript Web 服务器运行时。这充当移动应用程序的 Web 服务器。它使用 JSON 作为数据交换格式,JSON,可以由两端进行本地解析。Node 以其处理并发的方式与大多数 Web 应用程序运行时不同。Node 不依赖于使用线程来实现并发,而是依赖于在单个进程中运行的事件驱动的循环。Node 支持异步(非阻塞)模型。Web API 这是在 Azure 上作为 Web API 运行的 REST API 解决方案。它运行在 Document DB 之上,并作为 Document DB 的保护层。来自 Microsoft Open Web Interface for .NET(OWIN) 组件的 ASP.NET 工具和安全中间件,可以直接保护 Web API。使用 azure AD OAuth Bearer 2.0 访问令牌保护端点。

  1. 技术流程 StackOverflow 文档

3.1。身份验证身份验证归结为在向服务器发送消息时要求呼叫者包含某种可以验证其身份或检索其属性的凭据。然后,服务器使用该信息进行授权,确定是否应授予访问权限以及以何种方式授予访问权限资源通常会将大多数身份验证功能卸载到外部服务提供程序(通常称为权限或身份提供程序)。这些提供商负责处理繁重的任务,例如入职用户,分配凭证,处理生命周期流(例如密码恢复),提供用户身份验证的 UI,多个协议的凭证验证,多个身份验证因素管理,欺诈检测等。有了这些功能,剩下的唯一身份验证任务是验证在所选权限下验证是否成功。这通常涉及检查安全令牌,安全令牌是在成功验证后由权限发布给调用者的数据片段。安全令牌通常根据特定格式制作,通过密钥进行数字签名,该密钥将明确标识发布机构,并包含将令牌唯一地绑定到目标资源的一些数据。当资源收到请求时,它会查找附带的令牌。如果找到满足所需验证属性的那个,则对调用者进行身份验证。在该详细程度,该模式是如此通用,它可以描述许多不同的身份验证方法。我将通过将高级角色分配给具体实体来将其应用于此场景。资源资源将是我需要保护的 ASP.NET Web API 2 项目。你可以更精细地应用身份验证要求。

3.2。自定义 Web API 和安全端点服务器将配置 Web API 以将其身份验证需求卸载到 Windows Azure AD,即每个 Windows Azure 订户可用的平台即服务(PaaS)。Windows Azure AD 专门用于支持基于云的应用程序工作负载。该服务存储有关用户(属性和凭据)和组织结构的信息。它可以与 Windows Server Active Directory 同步数据,只在云中提供连接。3.3。OAuth 令牌格式 OAuth 2.0 验证过程不强制要求任何特定的令牌格式,但 REST 场景的 JSON Web 令牌(JWT)格式(bit.ly/14EhlE8)已成为事实上的标准。Windows Azure AD 和 Microsoft OWIN 组件都支持 OAuth 2.0 流中的 JWT 格式。JWT 获取和验证的机制都由中间件处理,令牌格式对应用程序代码是透明的。3.4。Node.js 模块与 ADAL 库 Node.js 模块是一个移动界面,包含 UI 组件和身份验证模块,使用 ADAL 库从 Active Directory 获取安全令牌。node.js 库的 ADAL 使 node.js 应用程序可以轻松地向 Azure AD 进行身份验证,以便访问 Azure AD 受保护的 Web 资源。

3.5。文档数据库设置和配置

3.6。使用 Azure AD Connect 进行 Azure AD 同步这超出了范围,因为业务用户已经是 Office 365 的一部分,这意味着他们已经与 Azure Active Directory 同步。

  1. 架构目标和约束服务器端移动工具将托管在作为 Web 应用程序运行的 Azure 云平台上与客户端的所有通信必须符合公共 HTTPS,TCP / IP 通信协议标准。客户端用户将能够通过 Android 和 iOS 设备访问移动工具。

4.1。安全

为了能够对用户进行身份验证,你必须使用 Azure Active Directory(AAD) 注册 Node.js 应用程序。这分两步完成。首先,你必须注册你的移动服务并公开其权限。其次,你必须注册你的 iOS 应用并授予其访问权限 4.2。坚持

将使用 Azure Document DB 数据库解决数据持久性问题。

4.3。可靠性/可用性

4.4。性能

没有与系统性能相关的特定约束。预计系统应在标准数据库和 Web 服务器脚本超时(20 秒)内响应任何请求,系统性能也取决于可用硬件,PSU 网络和 Internet 连接功能。此外,上传/下载时间可能取决于数据大小,而数据大小又取决于用户输入。因此,只有在系统部署和测试之后才能确定实际性能。

  1. 尺寸和性能

  2. 问题和担忧