ORDS RESTful 服务 + 带身份验证的 Angular

问题描述

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

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

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

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

以下是我找到的教程,其中提供了有用的信息:https://blogs.oracle.com/developers/ords-oauth-20-authentication-with-oracle-apex-v2

解决方法

This page goes into some detail about the various authentication options available in 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-Session HTTP 标头与您对 RESTful API (some documentation here) 的调用一起传递.

对于含糊的答案深表歉意,但您的用例有点不寻常,我不确定什么是好的答案。