没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
全文可编辑 word 文档 页眉与背景水印可删除
1
asp net core 2.1 中如何使用 jwt(从原理
到精通)
为什么使用 Jwt
最近,移动开发的劲头越来越足,学校搞的各种比赛都
需要用手机 APP 来撑场面,所以,作为写后端的,很有必要
改进一下以往的基于 Session 的身份认证方式了,理由如下:
移动端经常要保持长时间(1 到 2 星期)在线,但是
Session 却不好在服务端保存这么久,虽然可以持久化到数
据库,但是还是挺费资源
移动端往往不是使用的网页技术,所以藏在 Cookie 里面
的 SessionId 不是很方便的传递给服务端
服务端暴露给客户端的接口往往是 RESTful 风格的,这是
一种无状态的 API 风格,所以身份认证的方式最好也是无状
态的才好
所以我选择了使用 Jwt (Json Web Token) 这个技术。Jwt
是一种无状态的分布式的身份验证方式,与 Session 相反,
Jwt 将用户信息存放在 Token 的 payload 字段保存在客户端,
通过 RSA 加密的方式,保证数据不会被篡改,验证数据有效
全文可编辑 word 文档 页眉与背景水印可删除
2
性。
下面是一个使用 Jwt 的系统的身份验证流程:
可以看出,用户的信息保存在 Token 中,而 Token 分
布在用户的设备中,所以服务端不再需要在内存中保存用户
信息了
身份认证的 Token 传递时以一种相当简单的格式保存在
header 中,方便客户端对其进行操作
原理
jwt 对所有语言都是通用的,只要知道秘钥,另一一种
语言有可以对 jwt 的有效性进行判断;
jwt 的组成;Header 部分 Base64 转化.Payload 部分
Base64 转化.使用 HS256 方式根据秘钥对前面两部分进行加
密后再 Base64 转化,其中使用的 hs256 加密是 header 部分
指定的,也可以通过官网的查看,如下图:
全文可编辑 word 文档 页眉与背景水印可删除
3
原理就这么简单,那究竟用怎样使用 C#来实现呢,又怎
么确定它的正确性呢?,请继续
使用 C#实现
我 们 定 义 一 个 今 天 方 法 , 其 中 需 要 使 用 到
Microsoft.IdentityModel.Tokens.dll,asp.net core 2.1
再带,如果其他版本,没有自带,需要 nuget 一下这个类库
/// <summary>
/// 创建 jwttoken,源码自定义
/// </summary>
/// <param name="payLoad"></param>
全文可编辑 word 文档 页眉与背景水印可删除
4
/// <param name="header"></param>
/// <returns></returns>
public static string
CreateToken(Dictionary<string, object> payLoad,int
expiresMinute, Dictionary<string, object> header =
null)
{
if (header == null)
{
header = new Dictionary<string, object>(new
List<KeyValuePair<string, object>>() {
new KeyValuePair<string, object>("alg",
"HS256"),
new KeyValuePair<string, object>("typ",
"JWT")
});
}
//添加 jwt 可用时间(应该必须要的)
var now = DateTime.UtcNow;
payLoad["nbf"] = ToUnixEpochDate( now);//可用
时间起始
payLoad["exp"] =
剩余24页未读,继续阅读
资源评论
mmoo_python
- 粉丝: 0
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功