多租户ADAL JS SPA以及Azure AD Web应用程序后端

时间:2016-09-08 18:25:45

标签: angularjs azure authentication adal adal.js

我目前正在尝试实施一个多租户Azure AD应用程序,该应用程序将使用Microsoft Graph API来监视和分析租户域成员的Office 365“元数据”。例如,应用程序可能会随着时间的推移监视One Drive用户空间。该应用程序的体系结构将包括AngularJS SPA客户端以及Web应用程序后端。我们的想法是,除了Azure AD身份验证之外,Web应用程序还允许进行本地注册(例如,使用电子邮件地址和密码进行传统注册)。例如,在本地注册的情况下,用户可能能够将Azure AD租赁与本地帐户相关联。

我很难理解各种身份验证机制应该如何工作。例如,我认为在Azure AD的情况下应该有两个级别的身份验证:一个用于客户端SPA用户的身份验证,另一个用于后端用于连续调用Microsoft API的身份验证,请求刷新令牌等。

  • 如何使用various Azure AD authentication scenarios实现此体系结构Microsoft已经提供了示例?
  • 如果我最初倾向于在Azure AD中注册两个应用程序(例如,SPA注册为本机应用程序,比如说,以及自行注册的Web应用程序),用户将如何允许访问这两个应用程序,这个工作流程看起来像什么?另外,用户请求的流程是什么样的? SPA会使用其Azure AD令牌向后端发出请求,但后端会如何接收其身份验证令牌并调用Microsoft API?
  • 我如何才能最好地将Azure AD身份验证和本地注册合并到我的应用程序中?

1 个答案:

答案 0 :(得分:0)

一般来说,您可以将每个用户与后端服务器/数据库中Azure AD租户中的实体相关联。由于Azure AD中的每个用户都在实体对象中具有多个唯一属性。您可以使用https://msdn.microsoft.com/en-us/library/aa389388(v=vs.85).aspx中提到的用户emailobjectId作为用户表格中的外部列。

当您的用户通过Claims in Azure AD Security Tokens对您的网站进行身份验证时,您可以通过Authentication标头获取后端服务器中的访问令牌。您可以使用访问令牌来请求受Azure AD保护的资源。并且访问令牌是ADAL.JS令牌,您可以直接解码以获得用户基本声明,如前所述。您可以检索存储在用户表中的声明,并匹配服务器中注册的特殊用户,以请求受自己保护的资源。