我正在尝试登录我的Java API后端应用程序托管在Azure和受活动目录保护。
在这篇文章中,我读了这个调用来接收令牌:
但是如何找出哪个状态和哪个nonce设置为我自己的API后端应用程序?得到https://login.windows.net/developertenant.onmicrosoft.com/oauth2/authorize?response_type=id_token&client_id=aeadda0b-4350-4668-a457-359c60427122&redirect_uri=https%3A%2F%2Flocalhost%3A44326%2F&state=8f0f4eff-360f-4c50-acf0-99cf8174a58b&nonce=8b8385b9-26d3-42a1-a506-a8162bc8dc63HTTP/1.1
仅使用上述示例中的状态和nonce,就可以得到具有所谓的flowToken
的响应。这是我必须发送的令牌类型吗?如参考文章中所述?请看这部分:
位置:https://localhost: 44326/# id_token = eyJ0eXAiOiJKV1QiLC(剪)gu1OnSTN2Q2NVu3ug&状态= 8 f0f4eff - 360 f - 4 -网- acf0 - 99 cf8174a58b& session_state = e4ec5227 - 3676 - 40 - bf - bdfe - 454 de9a2fdb2
我只是想有一个前端应用程序安全连接到后端应用程序自动无需输入用户凭据。
请不要告诉我使用ADAL。因为这就是我已经尝试过的,但没有成功的方法。如您所见,
由于授权大流包含多个url重定向,这在SPA上很难实现。你需要自己在客户端Azure Active Directory (AD)中实现OAuth2隐式授权流,这也是ADAL为JS完成的。您可以参考https://learn.microsoft.com/en-us/azure/active-directory/active-directory-authentication-scenarios#single-page-application-spa获取有关工作流程的更多信息。
在SPA中使用AAD最简单的方法是在JS中使用ADAL。根据CORS策略拒绝访问azure托管API应用程序的问题,您可以尝试设置保护后端服务器的AAD应用程序的配置。即
尝试使用theEndpoints
变量中的客户端id设置为adalAuthenticationServiceProvider.init
函数。它在我的测试项目中运行良好。
如有任何问题,请随时与我联系。