提问者:小点点

将IdentityServer 4与ASP.NET核心身份一起使用有什么附加价值?


TL;DR - 标题:)

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

我不想使用云或外部服务,因为关闭所有与用户相关的数据对我来说是重中之重(包括密码)。

从我读到的来看,似乎ASP.NETCore Identity提供了与身份验证和授权相关的所有功能和流程。我可以自己管理整个用户群,包括散列密码,以及与用户相关的所有数据。这是抽象和具体的集合(如果需要,我可以扩展)。

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

我的问题有两部分:

  1. ASP.NET核心身份和身份服务器4之间有什么?
    身份服务器4是否提供了ASP.NET身份提供的一些(不同的)具体抽象?
    我想知道ASP.NET身份和身份服务器4之间的关系。
  2. 使用IdtyServer 4进行开发的成本是多少?它是直接的,还是实现起来并不简单?
  3. 一个额外的问题:)-还有其他选择吗?你会选择什么?为什么?

下面的问题有一个非常好的答案,它回答了我的很多问题,但我仍然想要一个针对我的问题的答案。

提前谢谢!


共1个答案

匿名用户

好吧,如果现在还不明显的话:你不能用ASP.NET核心身份创建jwt/不记名令牌。

ASP.NET Core Identity使用cookie中间件,这有一些缺点。有了授权中间件,您可以使用bearer/jwt代币,但不能创建自己的代币。那就是ASOS

使用cookie有几个缺点,包括它通常寿命很长,而JWT令牌通常寿命很短(5到10分钟)并通过身份令牌进行刷新。

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

其次,cookie更容易受到XSS的攻击,而承载令牌是按请求发送的,只受XSRF的攻击,XSRF可以更容易地通过反伪造令牌进行保护。另请参阅有关安全堆栈交换的回答。