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

Posted

技术标签:

【中文标题】ORDS RESTful 服务 + 带有身份验证的 Angular【英文标题】:ORDS RESTful Service + Angular with Authentication 【发布时间】:2021-07-05 10:22:45 【问题描述】:

所以我没有太多运气找到有关如何执行此操作的信息,所以我们开始吧。我正在使用 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

【问题讨论】:

【参考方案1】:

This page goes into some detail about the various authentication options available in ORDS.

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

我有一个建议,有点详细,所以我只给出一个粗略的大纲。

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

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

【讨论】:

在进一步研究之后,Oracle 提供了一项 Identity Cloud 服务,听起来它可以满足您的要求,但并不那么复杂。至少听起来这将是我想要的并允许安全,而不必传递用户和密码。 ateam-oracle.com/… 和 medium.com/scrum-and-coke/… 链接非常有用。

以上是关于ORDS RESTful 服务 + 带有身份验证的 Angular的主要内容,如果未能解决你的问题,请参考以下文章

使用带有摘要身份验证、jquery ajax 调用的 RestFul PHP Web 服务

带有电话号码验证要求的 RESTful 身份验证

表单身份验证、ASP.NET MVC 和 WCF RESTful 服务

如何防止经过身份验证的用户欺骗 RESTful API 调用

带有身份验证的 Rails Web 服务???用户登录??

带有 RESTful 身份验证的 Symfony2 应用程序,使用 FOSRestBundle 和 FOSUserBundle