【问题标题】:SSO based on API app and session based app基于 API 应用和基于会话的应用的 SSO
【发布时间】:2021-10-05 23:12:35
【问题描述】:

我有两个使用相同数据库的不同门户网站。 第一个是内置在 asp .net 中的遗留 Web 门户,第二个是使用 Angular 制作的,它在后端使用 API 并使用基于 JWT 令牌的身份验证。 现在我想以这样一种方式实现 SSO,即用户登录到 ASP .NET 门户并单击一个按钮,该按钮将用户带到 Angular Web 门户,而无需再次登录 Angular 应用程序。 同样,当用户从 ASP .NET 注销时,他也应该从 Angular 应用程序中自动注销。 任何想法如何实现此自定义 SSO?

【问题讨论】:

    标签: asp.net ruby-on-rails angular jwt single-sign-on


    【解决方案1】:

    两个门户共享同一个数据库非常简单。

    只需通过单击按钮将任何唯一令牌或标识符传递到另一个门户。 然后您可以根据令牌/标识符识别用户并直接登录。

    只需要确保每个用户的标识符都是唯一的。

    例子:

    在数据库中,您有如下用户记录:

    User Id: 1, name: xyz, UUID: 123-123-456
    User Id: 2, name: abc, UUID: 123-123-455
    

    现在虽然链接会有这样的东西:

    https://somedomain.com/page-path?token=123-123-456

    【讨论】:

    • 此解决方案存在巨大的安全风险,因为任何人都可以从 url 获取令牌并访问门户
    • 是的,你是对的,但你可以在这里扭转。在生成 .net 端的 URL 时动态生成 UUID,一旦在另一端验证,就删除该 UUID。这样,这将仅对单次有效
    • 您也可以设置过程以在一段时间后自动删除 UUID。比如 2 分钟或 5 分钟后
    • 如果我们删除UUID,我们将如何授权每个API!
    • UUID 用于单次授权,然后您必须使用基于令牌的身份验证进行内部身份验证,如设备令牌授权、JWT 或 OAuth
    猜你喜欢
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    相关资源
    最近更新 更多