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 服务
表单身份验证、ASP.NET MVC 和 WCF RESTful 服务
如何防止经过身份验证的用户欺骗 RESTful API 调用
带有 RESTful 身份验证的 Symfony2 应用程序,使用 FOSRestBundle 和 FOSUserBundle