仅使用 Angular 框架(不是 AngularJS,也没有 Mid-Tier)对 Oracle Cloud 进行身份验证

Authentication to Oracle Cloud using ONLY Angular Framework (not AngularJS and no Mid-Tier)

这是我第一次使用 Oracle 云(或与此相关的任何云),我正在做一个 self-learning 练习,其中我创建了一个 Angular 应用程序(不是 AngularJS) 并且我想在我的 Oracle 云 Object 存储桶中上传图像。我正在假设我想要实现的目标只有 Angular 是可能的(即:不需要 mid-tier,比如 PHP、C#、Java等)。

我现在需要创建“授权”header(据我所知)用于验证 PUT 请求,但我无法使其正常工作。根据我阅读 Request Signature documentation 的理解,似乎我实际上可能无法纯粹在 Angular 中做到这一点,并且需要某种 mid-tier,正如文档仅显示的那样mid-tier 技术的代码示例。

我想知道的是,仅使用 front-end 框架(如 Angular)调用 Oracle 云 Object 存储 API 在技术上是否可行?我试过使用 CryptoJS 并使用类似 HmacSHA256 的东西来生成签名,但每次执行 API 调用时,Oracle Cloud 都会不断收到以下错误:

error:
     code: "NotAuthenticated"
     message: "The required information to complete authentication was not provided."

根据[请求签名文档],我唯一需要的 header 是 (request-target)host日期,所以我只包括了这些。

如果仅使用 Angular(不使用 mid-tier)在技术上可以实现身份验证,那么我将相当有信心创建签名是不正确,那时我要寻求的是帮助创建该签名以进行身份​​验证。如果不是,我想我的实验到此结束。

提前感谢大家的帮助!

在大约一个月没有回复后,我决定在完成自己的调查工作后回答我自己的问题。

否;在没有中间层的情况下,仅使用 Angular 框架无法向 Oracle 云验证自己的身份。 Oracle 自己关于这个主题的官方文档也指向了这个结论。

身份验证过程需要使用据我所知不以纯粹 Angular 形式存在的资产。一个特别需要的是 OpenSSL 加密扩展,根据我自己的调查工作表明需要一个中间层。这些 OpenSSL 依赖项仅存在于中间层环境中,例如 PHP 或 .NET。

这当然很有意义,因为让 Angular 进行所有身份验证是非常不安全的,因为它会在客户端(浏览器)暴露一些非常重要的信息,这些信息可用于执行恶意活动.尽管正如我在最初的 post 中所说,这更像是一个练习,看看是否有可能仅使用 Angular 来让它工作,而不是这样做是否真的正确或安全。