实施 Okta - Angular SPA + SpringBoot + Oauth2

问题描述

希望我的问题对你有帮助。

我需要将 OKTA 作为公司计划的一部分实施,我正在寻找有关我当前情况的一般指导。

我已经有两组高效的 Oauth2 实现(使用 spring-security-oauth2),实际上,有两个不同版本的 SpringBoot(1.X 和 2.X)。作为身份验证阶段的一部分,使用 Spring LdapAuthenticationProvider 将身份验证委托给企业 Active Directory。登录是由 oauth 服务器使用 Spring MVC 使用 html 模板完成的。权限和用户详细信息由存储在 Oracle 数据库中并通过 jdbc 检索的自定义用户和授权遗留模型实现。 在前面,我有多个 Angular 客户端(AngularJs 和 Angular),每个客户端在后面都有自己的 Springboot 微服务,每个客户端都在 Oauth 服务器上执行令牌自省。 当前的 Oauth 流类型是隐式的(我知道即使 Spring Security Oauth 作为 spring Proyect 也已被弃用) 所以,我一直在追赶 Oauth(我附上了一张图片,其中包含我的应用程序目前在安全方面所做的步骤,当然还有一定程度的抽象)并阅读了一点 OIDC,据了解,这是一个薄层这适用于处理用户身份的 oauth。

实际的问题是,在没有太多干扰的情况下与 OKTA 连接的最佳方法是什么。我还没有达到可能拥有不同版本的 Spring 会迫使我采用一种特定方式的技术点。例如,是否会像在每个 Oauth WebSecurityConfigurer 中编写额外的身份验证提供程序一样简单?升级所有应用程序的 SpringFramework 版本并从那里开始使用最新的启动器(我知道有一个 okta 一个)会更健康,特别是 1.X 中的那些。关于我附上的图表,Okta 发生在哪里?

希望得到任何指导。

enter image description here

解决方法

Okta 将替换您图片中下方的三 (3) 个框:授权服务器、Active Directory 和登录对话框。此外,它还将替换一些数据库(第 10 和 11 行)。

以下是我的推荐:

  1. 从这个开始:简单英语的 Oauth2 和 OIDC (https://www.youtube.com/watch?v=996OiexHze0)
  2. 试试:https://www.oauth.com/playground/
  3. 在 Okta 上设置一个免费的开发者帐户并尝试一个 OIDC 示例。

在“最小化干扰”方面:

  • 由于迁移到 Okta 是确定的,您需要将用户及其配置文件从 AD 和 DB 迁移到 Okta。
  • 如果客户端和资源服务器上的实现是标准的,那么更改将是最小的(添加一些读取 oidc/用户信息声明)。