欢迎访问深圳敏捷云计算科技有限公司!

使用甲骨文云OCI API网关和OpenID Connect保障网络应用程序的安全性

2024-01-15 原创文章

在企业的数字化转型旅程中,将遗留网络应用与现代身份认证提供商整合,通常意味着需要修改旧有应用程序代码并更改用户界面。与其在新的自定义开发上花费时间和资源,不如投资于一种架构,让你可以专注于业务逻辑,而非身份验证流程。

一些遗留应用程序并不直接支持OpenID Connect。随着它们转移到云端,你可以使用Oracle Cloud Infrastructure(OCI)API网关作为网络接入点,来协调用户、身份提供者和应用程序之间的认证。OCI API网关可以在网络上以标准化的方式执行访问控制,而不是要求所有应用程序直接添加OpenID Connect流程。开发人员可以利用OCI API网关现代化遗留应用程序,同时增强现代应用程序。

架构

架构方面,OCI API网关是OCI中的一项无服务器、全面管理的服务,可用于保护API端点和网络应用程序。OCI API网关提供安全功能,如速率限制、授权执行、动态路由、SSL执行等。OCI API网关可以被用来保护需要OpenID认证支持的遗留网络应用程序。OCI API网关可以作为托管在OCI私有子网中的网络应用程序的集中式安全模块。OCI API网关与身份提供商无关,可与任何支持的OAuth 2.0提供商(如Okta、Google、Amazon和Auth0等)集成。

OpenID Connect协议是OAuth 2.0协议之上的一个简单身份层。OpenID Connect使不同类型的应用程序(如浏览器、移动应用程序和桌面客户端)能够以安全、集中和标准化的方式支持认证和身份管理。利用OpenID Connect协议的应用程序依赖于身份提供商来安全地处理认证流程并验证用户身份。OpenID Connect通过将用户管理集中到身份提供商(如Oracle Cloud Infrastructure Identity and Access Management)来实现不同应用程序的单点登录。

OCI API网关作为网络接入点,协调用户、身份提供商和应用程序之间的认证。将OCI API网关放置在应用程序和客户端之间,使其能够拦截请求并处理OpenID Connect授权流程。下图展示了这一参考架构。


该流程类似于下图所示的流程



  1. 客户端应用程序通过OCI API网关请求访问后端服务。
  2. OCI API网关将客户端引导至身份认证提供商。
  3. 客户端在身份认证提供商处进行认证。如果认证成功,客户端将获得一枚授权令牌。
  4. 身份认证提供商携带访问令牌将客户端重定向至OCI API网关。
  5. OCI API网关与身份认证提供商确认访问令牌的有效性。
  6. 如果令牌验证成功,OCI API网关将流量路由至适当的后端服务,并将完成的响应返回给客户端。

在客户端已经获得授权的情况下,该流程类似于下图所示的流程。

  1. 在获取令牌后,浏览器会缓存令牌,用于后续对同一应用程序的请求。
  2. OCI API网关会与身份认证提供商一起验证令牌,以确保客户端有权访问后端服务。
  3. 如果客户端获得授权,OCI API网关会将请求路由到适当的后端服务,并将完成的响应返回给客户端。

该架构包括以下组件:

区域:

Oracle Cloud Infrastructure(OCI)区域是一个地理区域,包含一个或多个数据中心,称为可用性域。区域彼此独立,可能相隔很远(跨越国家甚至大陆)。

可用性域:

可用性域是区域内独立、自成一体的数据中心。每个可用性域中的物理资源与其他可用性域中的资源隔离,提供故障容忍。可用性域不共享基础设施,如电力或冷却系统,或内部可用性域网络。因此,一个可用性域的故障不太可能影响该区域内其他可用性域。

故障域:

故障域是可用性域内的硬件和基础设施分组。每个可用性域包含三个故障域,拥有独立的电力和硬件。当你将资源分布在多个故障域时,你的应用程序可以承受物理服务器故障、系统维护和故障域内的电力故障。

虚拟云网络(VCN)和子网:

VCN是您在Oracle Cloud Infrastructure区域中设置的可定制的、软件定义的网络。像传统数据中心网络一样,VCN让您完全控制您的网络环境。VCN可以有多个不重叠的CIDR块,您可以在创建VCN后更改这些块。您可以将VCN分割为子网,这些子网可以定位到一个区域或一个可用性域。每个子网由不与VCN中其他子网重叠的连续地址范围组成。您可以在创建后更改子网的大小。子网可以是公共的或私有的。

API网关:

Oracle API网关使您可以发布具有私有端点的API,这些端点可在您的网络内部访问,并且可以根据需要向公共互联网公开。端点支持API验证、请求和响应转换、CORS、认证和授权以及请求限制。

身份和访问管理(IAM):

Oracle Cloud Infrastructure身份和访问管理(IAM)是Oracle Cloud Infrastructure(OCI)和Oracle Cloud应用程序的访问控制平面。IAM API和用户界面使您能够管理身份域及其内部资源。每个OCI IAM身份域代表一个独立的身份和访问管理解决方案,或不同的用户群体。

FastConnect:

Oracle Cloud Infrastructure FastConnect提供了一种在您的数据中心和Oracle Cloud Infrastructure之间创建专用、私有连接的简单方法。与基于互联网的连接相比,FastConnect提供更高带宽选项和更可靠的网络体验。

OCI和Azure互联:

Oracle Cloud和Microsoft Azure互联是Oracle的首个多云产品。它在全球特定的Azure和Oracle Cloud Infrastructure(OCI)数据中心之间提供直接网络连接。它使Azure管理员和开发人员能夜将其应用程序连接到OCI中运行的应用程序和服务,无需创建专用链接或通过公共互联网发送其应用程序流量。

推荐

以下推荐可作为起点。您的需求可能与此处描述的架构不同。

OCI API网关

您可以利用OCI API网关来暴露REST API,并为您的网络应用程序启用单点登录支持。OCI API网关还可以被指定为应用程序的集中式安全模块,将安全实施转移到OCI API网关上。这样可以最小化与实施、维护和复杂性相关的成本。

考虑因素

部署此参考架构时,请考虑以下因素。

跨站请求伪造(CSRF)保护

  • 攻击者可以通过利用浏览器cookie的存在发起CSRF攻击,导致用户向网络应用程序(如OCI API网关)提交意外命令。如果应用程序因浏览器cookie的存在而确定用户已成功认证,则应用程序执行该命令可能导致破坏性后果。
  • 当您定义OAuth 2.0内省端点的验证策略类型和OAuth 2.0的验证失败策略类型时,您指定了OCI API网关如何存储使用OpenID Connect授权流程获取的新JWT令牌。
  • 如果您想将新的JWT令牌存储在会话cookie中,请选择“使用cookie进行会话”。为了防止潜在的CSRF攻击,当OCI API网关将令牌存储在会话cookie中时,它还会在X-CSRF-TOKEN响应头中返回一个CSRF令牌。对OCI API网关的后续请求(除了GET请求)必须在X-CSRF-TOKEN请求头中包含CSRF令牌,以及会话cookie中的JWT令牌。 跨源资源共享(CORS)
  • 网络应用程序和应用程序中使用的其他REST API可能需要支持CORS,因为请求是通过OCI API网关从网络浏览器重定向的。

开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴

作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。

Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。

利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。

Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门。

如您想咨询 Oracle 的相关业务,可联系搜索微信号:lhh1843812463woshiwhw123

或者可以进入以下群组进行咨询:

微信公众号

微信技术交流社群: