【问题标题】:can we use okta sdk for all identity providers?我们可以为所有身份提供者使用 okta sdk 吗?
【发布时间】:2022-01-13 08:09:24
【问题描述】:

我想在我的 APP 中集成所有可能的身份提供程序,例如 Auth0 SSO OIDC、Onelogin SSO OIDC、Google SSO OIDC 等。

那么这可以用来实现吗?

https://github.com/okta/okta-auth-js

【问题讨论】:

    标签: javascript reactjs npm single-sign-on openid-connect


    【解决方案1】:

    通常的流程是:

    • 选择授权服务器 (AS),例如 Okta
    • 您的应用只与 AS 交互
    • AS 为您管理与 IDP 的连接

    您的应用在与 AS 交互时使用安全库:

    • API 可能使用JOSE 来验证 JWT 访问令牌并从 AS 获取公钥
    • React SPA 可能使用不同的库,例如您提到的 Okta 库 - 稍后会详细介绍

    一个好的目标是保留基于标准 OAuth 消息的应用程序代码,这样您就可以将 AS 切换到不同的 AS,而代码更改为零或只有少量更改。 Okta 库在这里看起来不错 - 类似于 oidc-client。

    身份提供者

    Okta 系统及其库非常基于标准,但不幸的是,并非所有 IDP 都如此。因此,如果您使用 Okta 库连接到 OneLogin 或 Google,您可能会发现不兼容和问题。如果您使用 AS,它会为您处理这些。

    要求

    如果你正在构建 React SPA,那么你还应该明确你想要在浏览器中的行为:

    • Okta 库使用传统的 SPA 流程并将令牌存储在浏览器中。使其可靠工作的唯一方法是将刷新令牌存储在本地存储中,这并不是最安全的选择。

    有关更安全的方法(但也是更复杂的流程),请参阅我的 Token Handler 博客文章。

    无论如何,希望以上所有内容都能为您提供一些有用的背景知识,供您选择自己的技术。

    【讨论】:

      【解决方案2】:

      如果您想支持多个 IdP,请尝试使用通用 SDK,而不是特定身份提供商提供的 SDK。

      这里是一个例子:https://github.com/IdentityModel/oidc-client-js

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-28
        • 2018-08-30
        • 2018-09-06
        • 1970-01-01
        • 2017-09-13
        • 2015-05-31
        • 1970-01-01
        • 2018-05-31
        相关资源
        最近更新 更多