简介
AAD(Azure Active Directory/Azure AD)是微软基于云身份验证和访问控制的解决方案,通过SSO登录其他o365应用(word/outlook/teams...)
微软在2023年7月把AAD重命名为Microsoft Entra ID,官网:https://www.microsoft.com/zh-cn/security/business/identity-access/microsoft-entra-id
- 启用AAD: https://www.microsoft.com/zh-cn/security/business/identity-access/azure-active-directory-enable
- license类型: free, Premium P1, Premium P2,大部分功能在P2中有:https://www.microsoft.com/zh-cn/security/business/microsoft-entra-pricing?rtc=1
基础
加入AAD
- 设备标识是 Microsoft Entra ID 中的一个对象,类似于用户、组或应用程序。 设备标识为管理员提供信息,供其在做出访问或配置决策时使用。
- 三种方法加入AAD来获取设备标识:
- Microsoft Entra registration: 无需用企业帐户登录到设备即可注册到 Microsoft Entra ID, 使用本地帐户登录, 一般使用场景是在移动设备上访问azure上资源
- Microsoft Entra join: 需要企业帐户登录到设备, 设备所有权属于企业,适合仅使用azure验证的企业,主要通过azure来管理设备
- Microsoft Entra hybrid join: 需要有本地AD连接来进行登录验证,适用于已有本地AD的企业,经常作为过渡到Microsoft Entra join的临时阶段。使用本地AD组策略进行管理
SecurityToken
- Access token(OAuth2):
- 简介: JWT格式,访问令牌使客户端可以安全地调用受保护的Web API, Web API使用访问令牌执行身份验证和授权。
- 存活时间: 默认时间可变,范围介于 60-90 分钟之间
- Refresh token:
- 简介: JWT格式,当access token过期时,可以使用刷新令牌获取新的访问和刷新令牌。Refresh token在access token下发时一起获得
刷新令牌可以因超时和吊销而随时撤销。 应用必须通过向用户发送交互式登录提示以再次登录来处理登录服务的吊销 - 存活时间: 默认生存期24 小时
- ID Token:
- 简介: JWT格式,包含有关用户的信息。 它们可以与访问令牌一起发送,也可以代替访问令牌发送。 使用 ID 令牌中的信息,客户端可以验证用户是否是其声称的身份
- 存活时间: 默认1小时
Claim
- 简介: Claim是security token中的键值对部分,应用程序授权时必须验证access token中的某些键值对(Claim)
- Claim校验: 为了确保授权逻辑安全,必须验证claim以下信息
(1)验证受众(目标app): 验证access token中的aud键值是否与Web API 匹配
(2)验证租户(tenant): 验证令牌中的tid键值是否匹配用于通过应用程序存储数据的租户ID
(3)验证使用者: 验证令牌使用者(如用户或仅应用令牌的应用程序本身)是否已获得授权,可以检查sub或oid键值,或可检查使用者是否属于具有roles、groups、wids 声明的相应角色或组。
(4)验证参与者(客户端应用程序): 代表用户的客户端应用程序也必须获得授权。使用 scp键值(范围)来验证应用程序是否有权执行操作。
Primary refresh token(PRT)
- 简介: 在加入AAD且注册的设备上,通过登录验证的会向win发放PRT(类似TGT),用于在这些设备上使用的应用程序之间实现SSO。PRT存储于win的lsass中
- 组成:
(1)设备 ID:PRT 将颁发给特定设备上的用户。设备 ID 声明用于根据设备状态或合规性来确定条件性访问的授权。
(2)会话密钥:会话密钥是 Microsoft Entra 身份验证服务生成的加密对称密钥,作为PRT 的一部分颁发。 当使用 PRT 为其他应用程序获取令牌时,会话密钥将用作所有权证明。 - 存活时间:默认14天,只要用户设备联网持续活跃,PRT会自动更新
- PRT相关关键组件
(1)云身份验证提供程序 (CloudAP):CloudAP 是 Windows 登录的新式身份验证提供程序,用于验证登录到 Windows 10 或更高版本设备的用户。 CloudAP 提供一个插件框架,可基于该框架构建标识提供者,以便使用该标识提供者的凭据完成 Windows 身份验证。
(2)Web 帐户管理器 (WAM):WAM 是 Windows 10 或更高版本设备上的默认令牌代理。 WAM 也提供一个插件框架,可基于该框架构建标识提供者,并为依赖该标识提供者的应用程序启用 SSO。
(3)Microsoft Entra CloudAP 插件(请求PRT组件 ):基于 CloudAP 框架构建的 Microsoft Entra 特定插件,用于在 Windows 登录期间使用 Microsoft Entra ID 验证用户凭据。当用户e,它还会缓存 PRT 以启用缓存的登录。
(4)Microsoft Entra WAM 插件(请求access token组件 ):基于 WAM 框架构建的 Microsoft Entra 特定插件,支持对依赖 Microsoft Entra ID 进行身份验证的应用程序进行 SSO。
(5)Dsreg:Windows 10 或更高版本上的 Microsoft Entra 特定组件,用于处理所有设备状态的设备注册过程。可通过dsreg /status
命令查看加入azure和PRT情况
(6)受信任的平台模块 (TPM):TPM 是内置于设备的硬件组件,为用户和设备机密提供基于硬件的安全功能。 - 获取场景:
(1)Microsoft Entra joined或Microsoft Entra hybrid joined:当用户使用其组织凭据登录时,在Windows登录期间发出PRT(hybrid joined是异步发,joined是同步发)。在这个场景中,Microsoft Entra CloudAP插件是PRT的主要认证组件。Microsoft Entra CloudAP插件使用用户提供的凭据从Microsoft Entra ID请求PRT
(2)Microsoft Entra registration:当用户在其Windows 10或更新的设备上添加辅助工作帐户时,会请求PRT - 获取过程: