[Authentication Fundamentals] [Azure AD]1.基础概念--Token,Claims
Notes:该系列文章是看Azure的Youtube官网的系列视频[Azure AD Authentication Fundamentals]之后的学习笔记
本节来讲一下为什么需要Token,Token是什么,以及什么是Claims
1.Token的诞生
Token诞生的诞生是为了解决CSRF问题的(对CSRF感兴趣的可以看这篇博客)。与cookie不同的是,token是不会自动被带上的,这个特性就能预防这种攻击。
两者的另一个不同点是,cookie一般存储的是sessionID,可以理解成一个身份证号,服务器会根据这个sessionID找到存储在服务器对应的session,session包含着用户身份的信息,相当于看到了身份证,而token存的往往不是一个sessionID,而是包含更多的身份信息,相当于身份证本身,每次请求就直接出示身份证了, 因此token的信息一般都会加密的。
Token的组成
token一般会携带用户的身份Id,以及过期的时间,加密算法,签名,这是最基本的。最常见的token格式是JWT(Json Web Token),JWT是json格式的,因此也是跨平台的,JWT的组成是:header+payload+ signature
- Header包含加密算法的类型和这个令牌的类型
{"typ":"jwt""alg":"HS256"
}
- Payload包含用户的信息
{"iss":"fy""exp":"12345678"...
}
- Signature将header+payload的内容通过某一个密钥secret进行签名
最后将这三部分都用base64进行编码,然后用“.”拼接起来,
最后变成:
base64(Header).base64(Payload).base64(Signature)
比如:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
其实这三部分分别放到base64解码器,能分别得到对应header和payload部分的明文信息,signature因为是加密过的,所以你也看不出来是啥。
如果payload的内容被篡改了,其实服务器收到之后是可以识别的,因为signature是根据原来的payload加密的,新的payload和原来的signature信息对不上,就知道是被篡改了。
但是不要把敏感的信息放在payload里面,这里有个jwt编码解码的网站,提供了一个例子
网页左边可以粘贴需要编码的JWT,右边会显示对应的解码后的信息,可以发现header和payload 是明文可以被看见的,因此我们不要把敏感的信息放在payload里面。
2.Claim是什么
翻译过来就是声明,断言,在payload里面的每一对键值对都是一等一对claim,Claim可以有很多种,JWT官方提供了7个:
iss (issuer):签发人
exp (expiration time):过期时间
sub (subject):主题
aud (audience):受众
nbf (Not Before):生效时间
iat (Issued At):签发时间
jti (JWT ID):编号
具体的就是对个token的描述,你想自定义啥就加entry到Claim这个HashMap里面就行
JWT的工具会自带七组默认的参数,可以直接写,自定义的claim就自己放到hashMap里面就好了。
[Authentication Fundamentals] [Azure AD]1.基础概念--Token,Claims相关推荐
- Azure基础:什么是Azure AD ?(23)
在谈论标识和访问时,你需要了解两个基本概念: 身份验证 (AuthN) 和 授权 (AuthZ). 身份验证和授权支持出现的其他一切情况. 它们在标识和访问过程中按顺序发生. 让我们简单了解一下身份验 ...
- 【壹刊】Azure AD(二)调用受Microsoft 标识平台保护的 ASP.NET Core Web API (上)
---------Grant_Allen 是一位博客园新晋博主,目前开始专注于Azure方向的学习和研究,是我认识不多的.打算长时间研究Azure的群友,因此打算帮他开个专栏,同时也希望并祝愿他能一直 ...
- 无责任Windows Azure SDK .NET开发入门(二):使用Azure AD 进行身份验证
<編者按>本篇为系列文章,带领读者轻松进入Windows Azure SDK .NET开发平台.本文为第二篇,将教导读者使用Azure AD进行身分验证.也推荐读者阅读无责任Windows ...
- 【壹刊】Azure AD(三)Azure资源的托管标识
一,引言 来个惯例,吹水!???????????????????? 前一周因为考试,还有个人的私事,一下子差点颓废了.想了想,写博客这种的东西还是得坚持,再忙,也要检查.要养成一种习惯,同时这也是自我 ...
- 【壹刊】Azure AD B2C(一)初识
一,引言(上节回顾) 上一节讲到Azure AD的一些基础概念,以及如何运用 Azure AD 包含API资源,Azure AD 是微软提供的云端的身份标识和资源访问服务,帮助员工/用户/管理员访问一 ...
- Azure AD Conditional Access
1. 什么是AAD Conditonal Access 2. AAD 条件访问的发展 3. AAD条件访问前提 1. 什么是AAD Conditonal Access 条件访问是AAD用来控制应用程序 ...
- 【壹刊】Azure AD 保护的 ASP.NET Core Web API (下)
一,引言 上一节讲到如何在我们的项目中集成Azure AD 保护我们的API资源,以及在项目中集成Swagger,并且如何把Swagger作为一个客户端进行认证和授权去访问我们的WebApi资源的?本 ...
- azure web应用部署_Java Web应用程序中的Azure AD SSO,ADFS SSO配置
azure web应用部署 Azure AD单点登录 (Azure AD SSO) The Single Sign-On feature is getting popular among develo ...
- Azure - AD B2C自定义策略和身份体验框架
AAD B2C服务有三个关键组成部分: 用户目录.这个目录存储关于本地用户和联邦用户的信息,可以用Microsoft Graph访问. 安全令牌服务(STS),其工作是发布令牌和其他身份验证货币,并验 ...
最新文章
- PL/SQL编程:用while-loop-end循环算出5的阶乘
- BYTE,WORD,DWORD的大小及一些特殊的高低位宏(取高位 取低位)
- 产品方法论之:菜鸟做加法,高手做减法!
- ABAP中怎样获取随机数
- JAVA——HttpClient封装工具类
- 执行SQL-MapperProxy.invoke()
- CSS每日学习笔记(3)
- Linux线程属性及优先级设置
- 最受白领欢迎的12大办公软件
- 混合线路接入时,360、QQ管家等测速显示电信IP或任意线路的IP
- 巴菲特对合伙人提过3个要求
- CentOS6.2下安装中文输入法
- Vi的多文件间的复制和文本替换
- 测试按键延迟软件,怎么测试键盘延迟-灵猫键盘DIY大师测试键盘响应速度的方法 - 河东软件园...
- mysql查询结果作为一个表_例题:数据库查询结果作为一个表
- Super Point 笔记(二)
- OPENCV计算机视觉图像处理频域傅里叶 DFT 变换低通滤波逆变换IDFT
- js设置元素垂直居中
- php中控制段落的行距,CSS段落间距调整 P标签段落距离如何设置
- Pytorch的grad、backward()、zero_grad()
热门文章
- 护士资格证考试机考可以用计算机吗,2017护士资格证考试人机对话机考流程
- 用python画一幅美瞳,今日份来自程序员的浪漫
- 【飞桨特色模型挑战赛】CTRGCN的轻量化
- 前端资源(css,js,图片,接口等)加载过程
- Java接口implements
- 心电监护仪数据图解_心电监护仪的使用(完整).ppt
- windows/prefetch文件夹能删吗?里面都是些什么文件,有什么作用??
- 常用算法(七)——克鲁斯卡尔算法
- cfree下面显示运行程序错误_七夕用python给男朋友写的小程序,感动哭了。
- Oracle实例名,服务名等概念区别与联系