IdentityServer密码长度超长会导致跳转到登录页

应用系统项目的安全要求越来越高,基本都是采取https等加密证书传输,无法使用https的,也是要求不能明文传输内容,因此做一些等保要求,密码需要加密后才能传输给服务端,所以前端会采取一些密码手段,保证一定的安全性。

项目集成的IdentityServer3实现账户和密码登录,如果前端做AES加密,同时要求密码长度不少于8位,这样把密码加密后,再通过传输,整个Password密码的长度会超过100个字符。然后在登录的时候,即使输入正确的密码,发现系统还是会跳转到登录页面,好像没有起到什么用,包括输入错误的密码。

问题原因:

1、可以查看IdentityServer3源码:InputLengthRestrictions

 Password的InputLengthRestrictions长度是100。

2、AuthenticationController的方法LoginLocal里有句判断:

  if (model.Username.Length > options.InputLengthRestrictions.UserName || model.Password.Length > options.InputLengthRestrictions.Password)
            {
                Logger.Error("username or password submitted beyond allowed length");
                return await RenderLoginPage(signInMessage, signin);
            }

 也就是如果密码长度超过100会自动判断到登录页面。

解决方案:

将密码的InputLengthRestrictions设置长一点,比如1000字符等,如下图:

可以在项目初始化的时候,配置IdentityServerOptions属性,设置InputLengthRestrictions.Password = 1000即可。

IdentityServerOptions.InputLengthRestrictions.Password = 1000;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值