我目前正在尝试实施一个多租户Azure AD应用程序,该应用程序将使用Microsoft Graph API来监视和分析租户域成员的Office 365“元数据”。例如,应用程序可能会随着时间的推移监视One Drive用户空间。该应用程序的体系结构将包括AngularJS SPA客户端以及Web应用程序后端。我们的想法是,除了Azure AD身份验证之外,Web应用程序还允许进行本地注册(例如,使用电子邮件地址和密码进行传统注册)。例如,在本地注册的情况下,用户可能能够将Azure AD租赁与本地帐户相关联。
我很难理解各种身份验证机制应该如何工作。例如,我认为在Azure AD的情况下应该有两个级别的身份验证:一个用于客户端SPA用户的身份验证,另一个用于后端用于连续调用Microsoft API的身份验证,请求刷新令牌等。
答案 0 :(得分:0)
一般来说,您可以将每个用户与后端服务器/数据库中Azure AD租户中的实体相关联。由于Azure AD中的每个用户都在实体对象中具有多个唯一属性。您可以使用https://msdn.microsoft.com/en-us/library/aa389388(v=vs.85).aspx中提到的用户email
或objectId
作为用户表格中的外部列。
当您的用户通过Claims in Azure AD Security Tokens对您的网站进行身份验证时,您可以通过Authentication
标头获取后端服务器中的访问令牌。您可以使用访问令牌来请求受Azure AD保护的资源。并且访问令牌是ADAL.JS
令牌,您可以直接解码以获得用户基本声明,如前所述。您可以检索存储在用户表中的声明,并匹配服务器中注册的特殊用户,以请求受自己保护的资源。