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相关推荐

  1. Azure基础:什么是Azure AD ?(23)

    在谈论标识和访问时,你需要了解两个基本概念: 身份验证 (AuthN) 和 授权 (AuthZ). 身份验证和授权支持出现的其他一切情况. 它们在标识和访问过程中按顺序发生. 让我们简单了解一下身份验 ...

  2. 【壹刊】Azure AD(二)调用受Microsoft 标识平台保护的 ASP.NET Core Web API (上)

    ---------Grant_Allen 是一位博客园新晋博主,目前开始专注于Azure方向的学习和研究,是我认识不多的.打算长时间研究Azure的群友,因此打算帮他开个专栏,同时也希望并祝愿他能一直 ...

  3. 无责任Windows Azure SDK .NET开发入门(二):使用Azure AD 进行身份验证

    <編者按>本篇为系列文章,带领读者轻松进入Windows Azure SDK .NET开发平台.本文为第二篇,将教导读者使用Azure AD进行身分验证.也推荐读者阅读无责任Windows ...

  4. 【壹刊】Azure AD(三)Azure资源的托管标识

    一,引言 来个惯例,吹水!???????????????????? 前一周因为考试,还有个人的私事,一下子差点颓废了.想了想,写博客这种的东西还是得坚持,再忙,也要检查.要养成一种习惯,同时这也是自我 ...

  5. 【壹刊】Azure AD B2C(一)初识

    一,引言(上节回顾) 上一节讲到Azure AD的一些基础概念,以及如何运用 Azure AD 包含API资源,Azure AD 是微软提供的云端的身份标识和资源访问服务,帮助员工/用户/管理员访问一 ...

  6. Azure AD Conditional Access

    1. 什么是AAD Conditonal Access 2. AAD 条件访问的发展 3. AAD条件访问前提 1. 什么是AAD Conditonal Access 条件访问是AAD用来控制应用程序 ...

  7. 【壹刊】Azure AD 保护的 ASP.NET Core Web API (下)

    一,引言 上一节讲到如何在我们的项目中集成Azure AD 保护我们的API资源,以及在项目中集成Swagger,并且如何把Swagger作为一个客户端进行认证和授权去访问我们的WebApi资源的?本 ...

  8. 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 ...

  9. Azure - AD B2C自定义策略和身份体验框架

    AAD B2C服务有三个关键组成部分: 用户目录.这个目录存储关于本地用户和联邦用户的信息,可以用Microsoft Graph访问. 安全令牌服务(STS),其工作是发布令牌和其他身份验证货币,并验 ...

最新文章

  1. PL/SQL编程:用while-loop-end循环算出5的阶乘
  2. BYTE,WORD,DWORD的大小及一些特殊的高低位宏(取高位 取低位)
  3. 产品方法论之:菜鸟做加法,高手做减法!
  4. ABAP中怎样获取随机数
  5. JAVA——HttpClient封装工具类
  6. 执行SQL-MapperProxy.invoke()
  7. CSS每日学习笔记(3)
  8. Linux线程属性及优先级设置
  9. 最受白领欢迎的12大办公软件
  10. 混合线路接入时,360、QQ管家等测速显示电信IP或任意线路的IP
  11. 巴菲特对合伙人提过3个要求
  12. CentOS6.2下安装中文输入法
  13. Vi的多文件间的复制和文本替换
  14. 测试按键延迟软件,怎么测试键盘延迟-灵猫键盘DIY大师测试键盘响应速度的方法 - 河东软件园...
  15. mysql查询结果作为一个表_例题:数据库查询结果作为一个表
  16. Super Point 笔记(二)
  17. OPENCV计算机视觉图像处理频域傅里叶 DFT 变换低通滤波逆变换IDFT
  18. js设置元素垂直居中
  19. php中控制段落的行距,CSS段落间距调整 P标签段落距离如何设置
  20. Pytorch的grad、backward()、zero_grad()

热门文章

  1. 护士资格证考试机考可以用计算机吗,2017护士资格证考试人机对话机考流程
  2. 用python画一幅美瞳,今日份来自程序员的浪漫
  3. 【飞桨特色模型挑战赛】CTRGCN的轻量化
  4. 前端资源(css,js,图片,接口等)加载过程
  5. Java接口implements
  6. 心电监护仪数据图解_心电监护仪的使用(完整).ppt
  7. windows/prefetch文件夹能删吗?里面都是些什么文件,有什么作用??
  8. 常用算法(七)——克鲁斯卡尔算法
  9. cfree下面显示运行程序错误_七夕用python给男朋友写的小程序,感动哭了。
  10. Oracle实例名,服务名等概念区别与联系