用户名随意,测试密码:空
§ 参考资料
.
├──Server/
│ ├──Common/
│ ├── Authorization/
│ ├── IToken.cs
├── JwtToken.cs
├── JwtAuth.cs
├── TokenConfig.cs
├── Exceptions.cs
懒得写了,详见IToken.cs
数据库存储格式:MD5( [原始密码] )
前端加密格式:MD5( MD5( [原始密码] ).[服务端随机串] ),用于登陆时传入后端
后端校验:[前端加密密码] == MD5( [数据库存储密码].[服务端随机串] )
【注意】:MD5和SHA-1被认为不再安全,微软推荐使用SHA-2系列(SHA-256、SHA-512等)加密算法( https://msdn.microsoft.com/zh-cn/library/92f9ye3s(v=vs.110).aspx#哈希值)
Token对象构成:
public class JwtToken : IToken
{
#region 服务端存储的信息,对客户端隐藏
public 随机加密盐 Salt { get; set; }
...
#endregion
#region 提供给客户端的信息
public 头部 Header { get; set; }
public 载荷 Payload { get; set; }
#endregion
}
Token加密串:Base64Url( [Header] ).Base64Url( [Payload] ).Base64Url( HMAC( Base64Url( [Header] ).Base64Url( [Payload] ) , [Salt] ) )