我正在使用 identityServer4 和 AspNetCore.Identity。 我的客户端正在使用RequestClientCredentialsTokenAsync函数登录。 如何保护自己免受过多的登录尝试?
MaxFailedAccessAttempts
属性,但它不执行任何操作。
看来你把事情搞糊涂了。因此,让我从术语开始。
什么是客户端?
客户端是一种请求令牌的软件身份服务器。
什么是用户?
用户是使用注册客户端访问的人 资源。
客户端已注册,允许某些授权类型:
机器对机器通信:
令牌始终代表客户端请求,不存在交互式用户。
当涉及用户时:交互式客户端。
这是最常见的客户端方案类型:Web 应用程序、 具有交互式用户的SPA 或本机/移动应用程序。
当您谈论RequestClientCredentialsTokenAsync
时,这表明您正在使用客户端凭据流。注册客户端以允许客户端凭据授予类型的流。
如此流程中所述,不存在交互式用户。
现在关于MaxFailedAccessAttempts
属性。这是锁定选项的一部分:
获取或设置在用户被锁定,假设已启用锁定。默认值为 5。
这是为什么此属性不起作用的答案。锁定选项与客户端凭据流无关,因为不存在用户。
现在回答您的问题:我如何保护自己免受过多的登录尝试?
客户端登录与用户登录不同。没有锁定客户端的机制。如果您希望客户端使用此功能,则必须扩展IdentityServer。
但是考虑到你的问题,提到AspNetCore.Identity,你似乎应该实现用户可以登录的正确流程。看看样本。