Identity Server 4 设备码流用户码长

Identity server 4 device code flow user code lenght

有什么方法可以更改身份服务器 4 上设备流授权的用户代码长度吗? 关于 documentation 他们描述设备流程的设置如下:

The user code type to use, unless set at the client level. Defaults to Numeric, a 9-digit code.

用户密码长度默认设置为9位,这是一个相当长的密码,对用户体验非常不友好。

您可以实现自己的生成器。默认生成器是 NumericUserCodeGenerator 并生成一个从 100000000 到 999999999 的随机数。

要使用另一个生成器,您需要在 DI 中实现并注册此接口:IUserCodeGenerator。这个接口有两个属性和一个方法:

  • UserCodeType(字符串):为您的自定义代码类型指定一个名称。
  • RetryLimit(int):如果生成的代码已经为另一个流程生成过,则再次生成代码,直到代码唯一或达到此次数。如果在尝试次数中未能生成唯一代码,则会抛出 InvalidOperationException。如果减少代码的长度或复杂性,则应增加此值。
  • GenerateAsync:return 您在此处生成的代码。

使用相同名称 (Client.UserCodeType) 的 属性 中的 UserCodeType 值配置您的客户端,否则他们将继续使用默认生成器。