代码之家  ›  专栏  ›  技术社区  ›  barii

使用哪种授权

  •  0
  • barii  · 技术社区  · 6 年前

    我们的应用程序目前是用.NETFramework+Razor和传统的成员身份验证编写的。

    我正在尝试使它现代化,所以我一直致力于.NETCore+react解决方案,但它必须与现有的应用程序配合。

    所以目前,我们有旧的monolit和其他.net核心API,由react调用。反应器嵌入剃须刀内。

    现在我需要选择使用什么身份验证。我猜不能使用成员资格和其他基于会话的身份验证,因为在多个域中有多个应用程序。所以我需要代币。

    我真的不确定我可以或应该使用哪种解决方案。我知道像bearer token、.NET Identity、OAuth+OpenId这样的流行语,但是在这种情况下,我能用它们中的任何一个来保护API和“传统的”razor应用程序吗? 我应该把代币存放在哪里?我应该将它存储在razor应用程序的会话中,并将其传递给React吗?

    我需要一个解决方案,用户凭据存储在我们自己的数据库中,而不是谷歌或Facebook的单一登录列表。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Train    6 年前

    你要求的太多了。我建议从头开始温习这个话题。如果你只知道流行语,你不会很快到达任何地方。我可以给你一些快速的建议,但如果你不熟悉的基本知识,这不会真的有帮助。你的答案没有快速的解决办法。

    我建议 OAuth和OpenId连接 实现这种分离的协议。另外,看看 IdentityServer ,它是一个开源产品,可以轻松地在web应用程序和HTTP API中实现单点登录和访问控制(身份验证)。

    • OpenId连接以验证用户
    • OAuth限制这些轻量级方法调用的协作

    现在这个解决方案的问题是,在这个轻量级方法调用和系统的其余部分之间存在高度的信任。原则 会建议实施分层策略,这样,如果这一层遭到破坏,另一层就是下一道防线。剩下的就交给你了。