MSAL4J 作用域
MSAL 的主要功能是什么?
从安全令牌服务(STS)获取令牌,以便客户端应用程序访问受保护的资源。
什么是 MSAL4J?
MSAL 适用于许多编程语言和平台。 MSAL4J 设计用于Java虚拟机上运行的任何应用程序。
MSAL 遵循哪些标准协议进行令牌获取?
MSAL 正在实现 OAuth2 协议的自定义版本。 此外,对于某些特定方案,它可以在内部使用其他协议(例如 WS-Trust)。
MSAL 是否是使用 OAuth2 协议获取令牌的常规库?
No. MSAL 是用于Microsoft Entra ID、Active Directory 联合身份验证服务(ADFS)和Azure Active Directory B2C 的客户端库。 ADAL 要求使用一些自定义概念,例如“resource”(资源);这些概念被视为对通用 OAuth2 协议规范的扩展,且不受其他 STS 支持。
API 逐步推出
我是否应该通过将 false 传递给构造函数来关闭颁发机构验证?
这取决于你咨询的是哪类主管部门。 如果是 ADFS,你必须传递 false,因为 ADFS 目前不支持颁发机构验证。 如果是 Microsoft Entra ID,你仍然可以选择传递 false,但建议为 true,特别是如果你从第三方(例如通过 401 质询)获取颁发机构地址。 这是为了保护应用程序和用户不被重定向到恶意终结点以输入其凭据。
我应该调用 AcquireToken 的哪个重载?
这取决于使用的客户端应用程序的类型以及需要令牌的方案。 请参阅 “获取令牌”中记录的指南。
Debugging
使用 MSAL 失败的常见原因是什么?
MSAL 中的问题可能有各种原因。 以下是常见的罪魁祸首:
- 计算机存在连接问题。
- 您的应用程序或用户尚未在 Microsoft Entra ID 或 ADFS 中正确配置。
- 你为当前任务使用了错误的 API(MSAL 为 AcquireToken 方法提供了多个类似的重载版本)。
- MSAL 中有一个错误! 是的,这总是可能的。 如果你确定上述任何项目都不是失败的原因,请向我们报告它,我们将调查并修复 bug(如果存在)。
我可以使用哪些工具来诊断 ADAL 中的问题?
可以使用多种诊断工具:
- MSAL 示例:第一个最佳工具是随 MSAL 一起发布的示例集(库存储库内以及 AzureSamples GitHub 组织中发布的示例)。 尝试查找离应用程序最近的示例,并在计算机上下载并运行它。 如果示例正常工作,则需要遵循应用程序中示例应用的相同步骤。
- MSAL 诊断日志:可以启用日志记录。 这会编写一些日志,其中包含有关 MSAL 内部步骤的信息。 可以分析日志来查找问题。 此外,如果与 MSAL 团队联系,则需要发送日志以帮助进行分析。 可以在官方文档中找到有关如何打开 MSAL 日志的说明
- 网络跟踪信息:使用 Fiddler 之类的工具来记录 MSAL 与服务器之间的所有 HTTP 通信。 在Windows桌面计算机上,使用 Fiddler 特别容易。 如果我们需要参与诊断您的问题,请将网络跟踪文件分享给 MSAL 团队。
MSAL 会以异常形式返回哪些类型的错误,又会向用户报告哪些类型的错误?
大多数错误以异常形式从 MSAL 返回;但是,在某些情况下,MSAL 在浏览器控件上显示错误。 这些情况主要发生在无法验证客户端或无法访问颁发机构服务器时。
MSAL 内部是否内置了某种重试机制?
No. 如果操作失败,MSAL 会通过异常报告错误。 异常包括错误代码,以及如果错误来自颁发机构的状态码。 在这种情况下,开发人员的工作是检查异常中的状态代码(主要反映响应的 http 状态代码),并确定是否重试。 502 通常是保证重试的状态代码。
MSAL 发布模式
MSAL 发布新版本的频率是多少?
没有预先确定的计划。 我们会定期发布维护版本更新,以修复缺陷并帮助客户摆脱阻碍。 主要版本通常需要更长的时间,我们在主要版本正式发布之前会发布多个预览版本。
MSAL 版本的兼容性模型是什么?
目标是在主版本中保持向后兼容性。 为此,我们尝试仅在服务版本(增加次版本号)中修复 bug 或添加新功能。 但是,主要版本之间没有兼容性保证。 我们可能会添加或删除对某些平台或方案的支持,因此,建议在切换到生产代码中之前充分了解更改的范围并全面测试新版本。