-1

这是我第一次使用 Oracle 云(或任何云),我正在做一个自学练习,我创建了一个 Angular 应用程序(不是 AngularJS),我想在我的 Oracle 云对象存储中上传图像桶。我正在假设只有 Angular 才能实现我想要实现的目标(即:不需要中间层,如 PHP、C#、Java 等)。

我现在需要创建“授权”标头(据我所知)用于验证 PUT 请求,但我无法使其正常工作。根据我阅读请求签名文档的理解,似乎我实际上可能无法纯粹在 Angular 中做到这一点,并且某种中间层是必要的,因为文档只显示了中间层技术的代码示例。

我想知道的是,在技术上是否可以仅使用 Angular 这样的前端框架来调用 Oracle 云对象存储 API?我尝试使用CryptoJS并使用 HmacSHA256 之类的东西来生成签名,但是每次执行 API 调用时,Oracle Cloud 都会不断收到以下错误:

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

根据 [Request Signature documentation],我需要的唯一标头是(request-target)hostdate,所以我只包括这些标头。

如果仅使用 Angular(不使用中间层)实现身份验证在技术上是可行的,那么我会相当有信心我正在做的创建签名的操作是不正确的,以及我当时将寻求的在创建该签名以进行身份​​验证方面有一些帮助。如果不是,我想这就是我的实验结束的地方。

提前感谢大家的帮助!

4

1 回答 1

0

在大约一个月没有回应之后,我决定在完成自己的调查工作后为自己的问题提供答案。

不; 在没有中间层的情况下,仅使用 Angular 框架向 Oracle Cloud 进行身份验证是不可能的。甲骨文自己关于该主题的官方文档也指向这一结论。

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

这当然是完全合理的,因为让 Angular 进行所有身份验证是非常不安全的,因为它会在客户端(浏览器)上暴露一些非常重要的信息,这些信息可能会被用来执行恶意活动。虽然正如我在原帖中所说,这更像是一个练习,看看是否有可能让它只与 Angular 一起工作,而不是这样做是否真的正确或安全。

于 2020-02-13T05:29:27.057 回答