我打算开发一个单页面应用程序,它有一个Web API作为后端,代表用户调用其他一些Web API。但我很难做到这一点。
我从MS看了这个list of Azure AD scenarios,但似乎没有一个适合我的情况。我认为我的场景是SPA和来自该链接的“Web Application to Web API”场景的混合。
根据我的理解,我必须首先完成SPA-Client从Azure AD Auth Endpoint检索授权代码和ID令牌,然后将它们发送到我的后端。然后,后端将请求Azure AD令牌端点获取所需的访问令牌。
这是对的吗?但我怎么能这样做(使用adal.js)?我只使用隐式流找到客户端的示例,其中跳过获取授权代码并直接使用访问令牌结束。这有可能吗?
答案 0 :(得分:1)
你的理解非常接近。在Azure Portal中配置方案后(请参阅code sample以获取有关配置方案的帮助),您将登录用户并向Web API请求访问令牌。然后,当Web API收到此访问令牌时,它可以执行On-Behalf-Of request到Azure AD请求访问下游Web API。成功后,Azure AD将向Web API发出可用于下游API的新访问令牌。
在支持方面,单页应用程序需要使用ADAL.js登录用户并获取访问权限。在Web API方面,Azure AD通过ADAL .NET和ADAL Java支持On-Behalf-Of flow。一个细微差别是您可能希望保护端点并验证Web API上的令牌,Azure AD已经为.NET构建了一个OWIN中间件,但需要一个与Java Web API等效的开源。
Here是On-Behalf-Of流程的绝佳示例。它有一个单页面应用程序和一个调用.NET Web API的本机应用程序。