我正在将IdentityServer4与AspNetCore.Identity一起使用。我的客户端正在使用RequestClientCredentialsTokenAsync函数登录。如何保护自己免受过多的登录尝试?
MaxFailedAccessAttempts
属性,但不执行任何操作。
似乎您在弄糊涂。因此,让我从terminology开始。
什么是客户?
A 客户端是软件,它从以下位置请求令牌IdentityServer。
什么是用户?
A 用户是人类,它是使用注册的客户端进行访问资源。
<< [client已注册,允许某些grant types:
机器到机器的通信
:总是以客户端的名义请求令牌,存在。并且当涉及到no 交互用户
用户
时:交互式客户端。这是最常见的客户端方案类型:Web应用程序,具有的SPA或本机/移动应用程序。当您谈论互动用户
RequestClientCredentialsTokenAsync
时,这表明您正在使用ClientCredentials
流。注册客户端以允许客户端凭据授予类型的流程。如该流程中所述,没有交互式用户存在。MaxFailedAccessAttempts
属性。这是lockout options的一部分:获取或设置允许访问失败的次数假设已启用锁定,这是为什么此属性无法正常工作的答案。锁定选项与用户将被锁定。默认为5。
客户端凭据
流无关,因为没有用户在场。现在回答您的问题:如何保护自己免受过多的登录尝试?
A客户端登录名
与用户登录名不同。没有机制可以锁定客户端。如果要为客户端使用此功能,则必须扩展IdentityServer。但是考虑到您的问题,提到AspNetCore.Identity
,看来您应该实现user可以登录的正确流程。看看samples。