java - MSAL4J 集成 Windows 身份验证 - MSAL4J 代码中的空引用异常
问题描述
我正在尝试为一个简单的 Java 控制台应用程序做一个 POC,使用此处的链接https://github.com/Azure-Samples/ms-identity-java-desktop/tree/master/中的演示代码原样访问 Graph API 集成 Windows 身份验证流程
代码因以下异常而中断。Java 似乎在集成身份验证方面存在问题,并且 Null Reference 异常没有给出任何可能出现问题的提示。非常感谢任何帮助或建议。
注意:我的 Java 版本是“1.8.0_261”,我知道应用程序注册步骤正在运行,因为我从 .NET 客户端对其进行了测试。我还能够使用 MSAL for Java 使用户名/密码流正常工作,但集成身份验证存在此问题
[ForkJoinPool.commonPool-worker-1] ERROR com.microsoft.aad.msal4j.PublicClientApplication - [Correlation ID: ec8337fa-d27e-4f39-83f5-a1f99984d469] Execution of class com.microsoft.aad.msal4j.AcquireTokenByAuthorizationGrantSupplier failed.
java.lang.NullPointerException
at com.microsoft.aad.msal4j.WSTrustResponse.parse(WSTrustResponse.java:74)
at com.microsoft.aad.msal4j.WSTrustRequest.execute(WSTrustRequest.java:48)
at com.microsoft.aad.msal4j.WSTrustRequest.execute(WSTrustRequest.java:89)
at com.microsoft.aad.msal4j.AcquireTokenByAuthorizationGrantSupplier.getAuthorizationGrantIntegrated(AcquireTokenByAuthorizationGrantSupplier.java:126)
at com.microsoft.aad.msal4j.AcquireTokenByAuthorizationGrantSupplier.execute(AcquireTokenByAuthorizationGrantSupplier.java:40)
at com.microsoft.aad.msal4j.AuthenticationResultSupplier.get(AuthenticationResultSupplier.java:59)
at com.microsoft.aad.msal4j.AuthenticationResultSupplier.get(AuthenticationResultSupplier.java:17)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(Unknown Source)
at java.util.concurrent.CompletableFuture$AsyncSupply.exec(Unknown Source)
at java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
更新:从提琴手跟踪,我能够看到我的 .NET 应用程序正在使用 NTLM,并且演示文档说 MSAL4J 需要 Kerberos。我假设我的环境中没有打开 Kerberos。
解决方案
MSAL Java 期望 Kerberos 票证可用。您可以在测试时通过运行Kinit生成一个,它是 JDK 的一部分。
请注意,在运行 kinit 之前,计算机必须加入域,并且用户应该是密钥分发中心的主体。
推荐阅读
- ios - iOS Unity Cloud Build + Firebase 数据库
- php - 从 wordpress 帖子中获取全尺寸图片
- html - HTML5/CSS3 - 左边距问题
- azure - Azure 文件共享和软链接
- hive - Hive Join 卡在 Map 阶段
- sql - Sql查询选择同一日期的数据
- azure-active-directory - 通过 REST API 调整与 Intune 相关的 RBAC 资源
- python - 大熊猫合并两列被视为“集合”
- python - 使用python制作具有非数字x轴的直方图
- azure-devops - 是否可以在 Visual Studio Team Services 图表中的两个查询之间进行划分?