将IdentityServer 4与ASP.NET Core Identity一起使用有什么附加价值?

时间:2017-03-01 16:55:01

标签: authentication oauth-2.0 asp.net-core identityserver4 asp.net-core-identity

TL; DR - 标题:)

背景故事: 我正在构建一组应用程序(包括RESTful API和几个客户端 - 纯Web应用程序和移动应用程序)。 所有核心API都将用ASP.NET Core编写。 我想解决身份验证授权问题。

我不想使用云或外部服务,因为保持关闭所有用户相关数据是我的首要任务(包括密码)。

根据我的阅读,似乎ASP.NET Core Identity提供了与所需的身份验证和授权相关的所有功能和流程。我可以管理整个用户群,包括散列密码,以及我自己与用户相关的所有数据。它是抽象和混凝土的集合(如果需要,我可以扩展)。

我还读到我可以与IdentityServer 4集成。根据我的理解,它给了我额外的安全层,我可以将其用作安全令牌服务(STS)并为我提供OAuth 2.0授权和OpenID身份验证的实现,这很棒,但是...是吗?我只是想了解使用它的好处是什么。

我的问题分为两部分:

  1. ASP.NET核心身份和IdentityServer 4之间有什么关系?
    IdentityServer 4是否提供ASP.NET身份提供的抽象的一些(不同的)混凝土? 我想知道ASP.NET Identity和IdentityServer 4之间的关系。
  2. 使用IdentityServer 4进行开发的成本是多少?它是直截了当的,还是实现起来并不简单?
  3. 奖金问题:) - 那里有其他选择吗?你会选择什么?为什么?
  4. the following question有一个很好的答案,它回答了我的很多问题,但我仍然想要一个特定于我的问题的答案。

    提前致谢!

1 个答案:

答案 0 :(得分:7)

好吧,如果现在不明显:你不能使用ASP.NET Core Identity创建jwt / bearer令牌。

ASP.NET Core Identity使用cookie中间件,它有一些缺点。使用授权中间件可以使用bearer / jwt令牌,但是您无法创建自己的令牌。这就是ASOS& Identity4缩小了差距。

使用cookies有几个缺点,包括它通常很长时间,而JWT令牌通常有短暂的生命周期(5到10分钟),并通过身份令牌刷新。

因此,如果某人通过窃听流量获取了承载令牌,则该令牌仅在短时间内有效,并且攻击者无法在没有ID令牌的情况下刷新它。

其次,cookie更容易受到XSS的影响,而持有者令牌是按请求发送的,并且只容易受到XSRF的攻击,而XSRF可以通过AntiForgery令牌更容易受到保护。另请参阅安全堆栈交换中的此answer