Windows Server中的Active Directory 联合身份验证服务(AD FS)使你可以向正在开发的应用程序添加基于 OpenID Connect 和 OAuth 2.0 的身份验证和授权。 这些应用程序可以直接针对 AD FS 对用户进行身份验证。 有关详细信息,请阅读 面向开发人员的 AD FS 方案。
通常可通过两种方式针对 AD FS 进行身份验证:
- MSAL 连接到 Microsoft Entra ID,后者再与 AD FS 建立联合身份验证关系。
- MSAL 直接连接到 AD FS 颁发机构。
MSAL4J 支持这两种流程。
MSAL 连接到 Microsoft Entra ID,后者再与 AD FS 建立联合
MSAL4J 支持连接到 Microsoft Entra ID,后者可让受管理的用户(在 Microsoft Entra ID 中管理的用户)或联合用户(由其他身份提供者(如 AD FS)管理的用户)登录。 MSAL4J 不知道用户是联合的。 对于它来说,它与 Microsoft Entra ID 通信。
在本案例中使用的机构是普通的机构(机构主机名 + 租户、通用机构或组织)。
为联合用户以交互方式获取令牌
使用 AuthorizationCodeParameters 或 DeviceCodeParameters 调用 AcquireToken 时,用户体验通常为:
- 用户输入其帐户 ID。
- Microsoft Entra ID会短暂显示一条消息:“正在将你转到你所在组织的页面”。 用户重定向到标识提供者的登录页。 登录页通常使用组织的徽标进行自定义。
- 此联合方案中支持的 AD FS 版本包括 AD FS v2、AD FS v3(Windows Server 2012 R2)和 AD FS v4(AD FS 2016)。
MSAL 直接连接到 AD FS 颁发机构
MSAL4J 支持使用 AD FS 2019 直接进行身份验证。 在这种情况下,可以在初始化客户端时向 MSAL4J 提供 ADFS 特定的颁发机构 URL。 授权机构值应类似于 https://adfs.contoso.com/adfs。
使用 AcquireToken 配合 IntegratedWindowsAuthenticationParameters 或 UsernamePasswordParameters 获取令牌
使用 AcquireToken 配合 IntegratedWindowsAuthenticationParameters 或 UsernamePasswordParameters 获取令牌时,MSAL4J 会根据用户名获取要联系的标识提供者。 MSAL4J 在联系标识提供者后收到 SAML 令牌。 MSAL4J 然后将 SAML 令牌作为用户断言(类似于代理流)提供给 Microsoft Entra ID,以换回 JWT。