上一章谈到的认证方式,最后的表格里忘记说明了灾备的情况,也就是说如果PTA+SSSO失效时,可以用密码哈希来访问Office 365,但是这需要跑一个PowerShell命令来做切换。
从ADFS迁移到PHS(密码哈希)或者PTA的流程如下:
另外,如果有使用自定义认证申明,那么需要把这些声明转换为Azuer AD的有条件访问策略。
接下来我们看一下“新式身份认证”(modern authentication),认证的流程图如下:
图片来源–https://www.ucprimer.com/tech-blog/modern-authentication-with-polycom-vvx-phones-using-adfs
这种认证方式使用的时新的协议,比如OAuth(并不是微软自己的协议)和Open ID Connect
- 用户登录Azure AD,提供用户名和密码
- SaaS(Exchange Online, SharePoint Online或者其他自己企业集成到公司的App)返回授权码(authorization code)。
这个授权码并不是给到用户,而是给到特定的SaaS Apps,让它们有权限去访问客户的资料,比如Outlook拿到授权码可以访问用户的邮箱 - Azure AD会根据这个授权码返回两个令牌:访问令牌和刷新令牌
- 用户使用访问令牌去访问需要的服务,比如SharePoint Online
- 一段时间后,用户如果还需要访问SharePoint Online,SharePoint Online回去检查这个访问令牌是否过期(注:访问令牌的有效期只有1个小时)
- 如果已经过期,那么用户需要向Azure AD获取一个新的访问令牌,但是这次要令牌时不需要认证的(输入用户名密码),除非
a. 密码过期
b. 账户被删
c. 公司部署了有条件访问策略
d. 等等等
更新令牌的有效期比较长,用户再次去找Azure AD获取令牌的时候,就可以提供这个刷新令牌,Azure AD会看用户的属性是否有变化,比如上面提到的3点,如果没有变化就直接颁发访问令牌
可以通过下表来更好的理解新式身份验证:
这里就提一个情况,因为访问令牌的有效期时1个小时,所以如果有用户离职,他的账户被删掉了,但是1个小时内,他/她仍然是可以访问服务的。
那么更新令牌的有效期是如何工作的?比如是上面写的90天,如果用户现在把电脑关机,然后第二天开机,更新令牌就从关机当日的89天,又变为90天了。所以如果用户没有出现去休个三个月的长假的情况(或者上面提到的密码过期等情况)那么更新令牌的有效期其实是无限的。更新令牌也是针对每个服务的,Exchange Online有自己的更新令牌,Teams也有自己的更新令牌。
现在来看看这个主更新令牌是什么。这个是针对Azure AD混合部署加入的设备,或者注册在Azure AD的设备。也就是说如果我在Azure AD里把这台电脑注册了(Win10以后的机器),那么Azure AD会为设备颁发一个主更新令牌。
有了这个主更新令牌,就不用每个服务都保留一个更新令牌了,但是每个服务还是有各自的访问令牌的。
这个好处是显而易见的,之前提到了访问每个服务都需要访问令牌,也就是都要输入一遍用户名密码,但是有了这个主更新令牌就只需要输入一次用户名密码(有点儿类似ADFS的感觉)。
另外一种Azure 支持的认证方式 SAML/WS-FED Federated。这种认证方式一边适用于位于Office 365里的其他App,比如SalesForce,Box(与Azure AD集成的App,这些App有些支持OAuth,有些不支持)
这里没有访问令牌和更新令牌的概念:
图片来源:https://www.ibm.com/support/knowledgecenter/en/SSCT62/com.ibm.iamservice.doc/concepts/c_azure_ad.html
流程:
- 用户访问服务
- 重定向给Azure AD,因为是这个App是Azure AD集成的
- Azure AD认证用户,并颁发SAML令牌(SAMK就是一个.xml文件,包含用户信息和一些声明,比如邮箱,部门等等)
- 这个令牌也是由Azure AD的签名证书签名的
- App会检查令牌是否是由有信任机构签名和颁发的
- 如果是,允许用户访问资源
那么在认证后,App会给用户一个cookie,除非cookie过期,在此之前用户再次访问无需认证。所以如果你清楚预览器缓存,历史记录等等以后,再次访问的话就需要认证了。