如何解决MSAL4J集成的Windows身份验证-MSAL4J代码内的Null参考异常
我正在尝试为一个简单的Java控制台应用程序做POC,该应用程序使用演示代码AS IS从此处的链接访问Graph API https://github.com/Azure-Samples/ms-identity-java-desktop/tree/master/Integrated-Windows-Auth-Flow
代码因以下异常而中断。 Java似乎在集成身份验证方面存在问题,并且“空引用”异常未给出任何有关可能出问题的提示。任何帮助或建议,我们将不胜感激。
注意:我的Java版本是“ 1.8.0_261”,并且我知道从.NET客户端测试应用程序注册步骤时,它们正在运行。我也可以使用MSAL for Java来获得用户名/密码流,但是Integrated Auth出现了这个问题
[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之前,必须将计算机加入域,并且用户应是密钥分发中心的负责人。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。