Java 无法使用MSAL4J用户名密码流验证MS图形
我有一个Java Spring启动应用程序,不是web应用程序,只有后端应用程序,我正试图从中调用Microsoft Graph API通过我的应用程序发送邮件 代码运行Cron调度程序,每天在固定时间发送邮件。我的应用程序没有UI,我无法要求用户手动登录 Java代码使用服务帐户进行身份验证。服务帐户是工作帐户而不是个人帐户 我正在使用这个库,我已经在Azure Active Directory中设置了相关的步骤,正如上面提到的那样 我只有授权访问权限,没有应用程序访问权限。并且,我正在使用来使用服务帐户进行身份验证 这是我正在使用的样本 我可以从组织公司网络VPN中的笔记本电脑本地运行代码 现在,当我将应用程序部署到我的组织公司网络之外的AWS kubernetes群集时,我从MSAL4J库中得到以下错误:Java 无法使用MSAL4J用户名密码流验证MS图形,java,azure-ad-graph-api,msal,Java,Azure Ad Graph Api,Msal,我有一个Java Spring启动应用程序,不是web应用程序,只有后端应用程序,我正试图从中调用Microsoft Graph API通过我的应用程序发送邮件 代码运行Cron调度程序,每天在固定时间发送邮件。我的应用程序没有UI,我无法要求用户手动登录 Java代码使用服务帐户进行身份验证。服务帐户是工作帐户而不是个人帐户 我正在使用这个库,我已经在Azure Active Directory中设置了相关的步骤,正如上面提到的那样 我只有授权访问权限,没有应用程序访问权限。并且,我正在使用来
org.xml.sax.SAXParseException: The element type "br" must be terminated by the matching end-tag "</br>".
at java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:261) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339) ~[na:na]
at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:122) ~[na:na]
at com.microsoft.aad.msal4j.MexParser.getPolicy(MexParser.java:76) ~[msal4j-1.4.0.jar!/:1.4.0]
at com.microsoft.aad.msal4j.MexParser.getWsTrustEndpointFromMexResponse(MexParser.java:112) ~[msal4j-1.4.0.jar!/:1.4.0]
at com.microsoft.aad.msal4j.WSTrustRequest.execute(WSTrustRequest.java:62) ~[msal4j-1.4.0.jar!/:1.4.0]
at com.microsoft.aad.msal4j.AcquireTokenByAuthorizationGrantSupplier.processPasswordGrant(AcquireTokenByAuthorizationGrantSupplier.java:76) ~[msal4j-1.4.0.jar!/:1.4.0]
at com.microsoft.aad.msal4j.AcquireTokenByAuthorizationGrantSupplier.execute(AcquireTokenByAuthorizationGrantSupplier.java:33) ~[msal4j-1.4.0.jar!/:1.4.0]
at com.microsoft.aad.msal4j.AuthenticationResultSupplier.get(AuthenticationResultSupplier.java:59) ~[msal4j-1.4.0.jar!/:1.4.0]
at com.microsoft.aad.msal4j.AuthenticationResultSupplier.get(AuthenticationResultSupplier.java:17) ~[msal4j-1.4.0.jar!/:1.4.0]
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
MSAL4J库没有任何调试日志,也无法确定导致此错误的原因
有人能帮我找出问题所在吗?我尝试了您使用的示例代码,但没有发现此错误。令牌和用户名打印在控制台上
错误通常是由编码引起的。调试代码并检查XML的编码。端点返回的数据不是有效的XML。这可能是因为您无法从网络外部到达端点
你应该考虑使用,而不是用户名密码。解释为什么不应该使用用户名和密码
切换到客户端凭据可能会解决您的问题,因为您不必调用用户名密码调用的WS-Trust端点。谢谢!可能就是这样,我将尝试实现客户机凭据流。我还尝试了代码,它可以工作