【问题标题】:Identity server 4 device code flow user code lenght身份服务器4设备码流用户码长
【发布时间】:2022-01-16 19:57:55
【问题描述】:

有没有办法改变身份服务器4上设备流授权的用户代码长度? 关于documentation 他们描述了设备流的设置如下:

要使用的用户代码类型,除非在客户端级别设置。默认为 数字,9 位代码。

默认情况下,用户代码长度设置为 9 位,这是一个相当长的代码,对用户体验确实不友好。

【问题讨论】:

  • 用户码不是设备自己生成的吗?而不是 IdentityServer?但我可能在这里错了......

标签: .net oauth-2.0 identityserver4


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2020-08-14
    • 1970-01-01
    • 2018-07-01
    • 2020-01-28
    • 2019-07-19
    • 2015-06-23
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多