首页 > 解决方案 > ORDS RESTful 服务 + 带有身份验证的 Angular

问题描述

因此,我没有太多运气找到有关如何执行此操作的大量信息,所以我们开始吧。我正在使用 Oracle Apex + Angular,我希望我的前端内置 Angular,然后 Oracle Apex 作为后端和前端的中间人,使用 RESTful API(希望我做对了,我仍在学习这一切是如何工作的) .

到目前为止,我已经成功设置了 RESTful 服务,并且正在从我的 Angular 前端调用它并显示数据。我什至让基本身份验证工作。但是,显然在其中硬编码用户名和密码并不是很安全,所以我试图了解如何允许用户登录/注销并获取 Bearer 令牌(一小时后过期)然后传入而是在发出 GET 请求时。

据我所知,似乎我会创建一个登录页面,使用输入的信息调用正确的 URL,然后返回用于发出请求的令牌(或不基于登录信息是否正确) . 但是,我担心安全性,不知道这是否是一种安全的方法?即使数据库中的所有数据都只是测试虚拟数据,我也希望正确且尽可能安全地进行知识和实践。

如果这是一种安全且正确的方法,请告诉我,因为我不知道。如果不是,如果您能告诉我原因以及正确执行此操作方法的总体思路,那就太棒了!

这是我发现给我有用信息的教程:https ://blogs.oracle.com/developers/ords-oauth-20-authentication-with-oracle-apex-v2

标签: angularoracleoauth-2.0oracle-apexrestful-authentication

解决方案


本页详细介绍了 ORDS 中可用的各种身份验证选项。

OAuth 通常用作第三方身份验证(机器对机器),因此我认为它不太适合您的用例。但大多数第一方身份验证方案都不是。

我有一个建议,它有点详细,所以我只给出一个粗略的轮廓。

  1. 创建 Apex 应用程序并使用它来管理您的用户/密码/授权
  2. 让您的用户通过您的 Angular 应用程序登录 Apex 应用程序 - 这将是棘手的部分。最简单的方法是使用 Apex 应用程序登录页面,并在登录后将其重定向到您的 Angular 应用程序。或者,您可以创建一个动态过程,该过程可以将来自 Angular 的用户/密码作为 API 调用,运行该APEX_AUTHENTICATION.LOGIN过程,并返回会话 ID 和 cookie - 即,使用 Apex 应用程序作为身份验证后端,而用户永远不会看到 Apex页面......这是可能的,但我还没有看到有人这样做。
  3. 一旦您的 Angular 应用程序具有 Apex session_id 和 cookie,您就可以对 ORDS 使用第一方身份验证 - 只需将 cookie 和Apex-SessionHTTP 标头连同您对 RESTful API 的调用一起传递(此处的一些文档)。

为模糊的答案道歉,但你的用例有点不寻常,我不确定什么是好的答案。


推荐阅读