如果我的用户已经在 okta 上,Authn/Authz 如何在 AWS 中工作

How Authn/Authz work in AWS if I already have my users on okta

如果我的问题没有完全理解,请原谅我,因为我是 AWS 和云世界的新手。我们的组织目前使用 Okta 作为一些用户的身份存储,我们还有另一组用户使用我们内部开发的 OIDC/OAuth 兼容 IDP 进行身份验证。 Okta 可以根据电子邮件域区分用户。

今天,我们的 Web 应用程序将 OIDC 授权代码流与 Okta 一起用于身份验证,并且 okta 内部知道将调用联合到适当的外部 IDP 以进行身份​​验证。所有这一切都很好。

现在我们计划在 AWS 的云上托管我们的一个 Web 应用程序和 REST API,我们想知道我们如何利用 AWS 中当前的 okta 设置来实现这一切。请注意,我们不希望我们的用户体验从今天开始改变,因为他们的登陆登录页面是 okta。另请注意,我们希望我们的用户自动配置为基于此身份验证访问我们在 AWS 中的服务。这意味着我们不会使用 IAM 在 AWS 中显式创建用户,而是他们应该根据身份验证自动访问我们的 UI 和 API。

有人可以帮忙吗?

谢谢

我不认为我完全理解您对 AWS 的要求。最简单的方法是仅将 AWS 用作您的应用程序的托管平台,同时让您的用户通过 Okta 进行身份验证。最简单的场景,如果用户不对您的 AWS 执行任何操作(管理或使用受 AWS 策略保护的对象)。

如果你需要后者,那么你需要创建一个与Okta集成的Cognito池。然后 AWS 内部的所有访问都将基于 Cognito 池权限。

Okta 可以轻松地与 AWS 上的服务交互。关键是能够将 Okta 生成的 JWT 传递给你的服务代码,这样你就可以验证它并知道谁在登录。目前还不清楚你的环境到底是什么样子,但我这样做的方式是“懒惰的”创建”。我将我的用户存储在我的 AWS RDS 中,但按需创建它们。因此,当用户进来时,我验证令牌并从令牌中获取“子”(主题)。这成为我的数据库中的一个键,以指示用户是谁。 Okta 已将此值分配给每个用户。

收到用户令牌时,我会根据主题检查我是否已经拥有该用户。如果是这样就好了。如果它们是新的,那么我将使用令牌中的数据在数据库中创建它们 and/or 来自 Okta 的 /userinfo 端点。