当前位置: 首页 > 知识库问答 >
问题:

Okta oauth2 with external IdP

孟建木
2023-03-14

我有一个带有Express服务器的Angular应用程序,Okta充当IdP。这已经设置好并且运行良好。现在,我需要从使用Amazon Cognito的外部应用程序支持SSO。他们通过为我们提供clientId和Secret来启用我们的OAuth2 Auth代码流应用程序。

我想了解的是,我应该在哪里用AccessToken交换authCode,以及我应该如何为在Okta中通过SSO来的用户管理会话。我有几个选择:

>

  • 我尝试在angular应用程序中使用“angular-oauth2-oidc”库,但在使用AWS Cognito调用/授权endpoint时遇到了CORS问题。此外,在前端通道中用accessToken交换authCode似乎不是最安全的方式。

    对于SSO用户,我可以在express中编写一个新的路由处理程序来管理令牌交换,并将此路由作为对Cognito的初始授权调用中的回调url。然而,我的express服务器已经使用了“express stormpath”sdk,它处理Okta充当IdP的常见情况下的会话管理。如何让express使用Cognito IdP在同一位置管理本地Okta用户会话和SSO用户会话。

    我也尝试过建立Okta联盟到外部IdP。但是,我不确定如何将授权呼叫路由到外部IdP,而Okta本身充当我们内部用户的IdP。

    我更倾向于3,在3中,我只与Okta交谈,它负责管理内部用户(Okta IdP)的身份验证,以及来自外部IdP(Cognito)的SSO用户。

    任何帮助在这里将不胜感激...

    谢谢,RK

  • 共有1个答案

    厉令
    2023-03-14

    这是一个非常多的问题,但这里有一些提示:

    1a.您需要将SPA的域作为受信任的源添加到Okta,如我撰写的步骤7所示

    1b。当你说“不安全”时,你需要更明确地表达你的担忧和你的意思。

    如果您只想将Okta作为SPA集成,请尝试运行我的初始代码示例。

    2a.你需要根据自己的目标制定一个策略。我个人对SPA最佳整体架构的看法总结在下面的博客文章中,但这里有很多需要了解的地方,有些人可能会有不同的看法:

    • 架构目标
    • 在浏览器中访问令牌
    • 刷新Cookie中的令牌

    2b。如果您正在构建一个SPA,您可能应该避免使用旧的web后端会话管理功能,尽管有些人会使用它们。

    3a。我同意你的看法,这是首选方案。目标是构建您的应用程序,使其使用来自一个提供商的令牌,而不考虑登录方法。

    3b。当您重定向到Okta时,您需要执行以下操作之一:

    • 在构建授权请求时,将idp参数发送到Cognito颁发者Id。
    • 配置Okta以提示用户使用登录方法,以便Okta或Cognito可以用作身份提供者。在Okta中配置idp连接后,默认情况下可能会发生这种情况

    联盟屏幕截图

    我快速浏览了一下,我并不是说这很容易,甚至是不可能的,因为遇到供应商限制是很常见的。但是,这是该技术应该如何工作。这种复杂性最好存在于授权服务器中,而不是存在于应用程序代码中。

    在Cognito中创建一个OAuth客户端:

    然后从如下URL获取Cognito的元数据:

    • https://cognito-idp.eu-west-2.amazonaws.com/eu-west-2_qqJgVeuTn/.well-known/openid-configuration

    然后填写Okta需要的endpoint:

    这将生成IDP值并为您提供重定向URL:

    然后在 Cognito 中输入生成的值,以完成配置:

     类似资料:

    相关问答

    相关文章

    相关阅读