需要针对Azure AD的简单程序身份验证

时间:2019-05-20 20:38:04

标签: angular authentication asp.net-core-mvc authorization azure-active-directory

我们有一个针对ASP.NET Core后端运行的Angular应用程序。我们希望在Angular应用程序上向用户显示一个登录屏幕,该屏幕收集用户名和密码,并将其发送到后端的控制器方法。

然后,该控制器方法需要在后端以编程方式针对Azure AD对用户进行身份验证。如果他们成功进行了身份验证,我们将从我们自己的数据库中读取其角色,并以编程方式添加声明。最后,我们将构建一个JWT令牌来存储其身份并将其返回给客户端。

然后Angular应用会将令牌添加到其标头中,然后核心应用将使用该令牌对API请求进行身份验证。

简而言之,我们要针对Azure AD进行身份验证,并针对自己的数据库进行授权。我们不想将它们转发到Azure网页进行登录,然后让Azure将它们转发回我们的应用程序。我们希望后端完成所有工作,以使UX尽可能无缝。

我认为这将非常容易。 Microsoft提供了大量文档,其中包含有关如何将ADAL.NET与Azure AD一起使用的各种示例,但没有一个可以满足我们的需要。

谢谢。

2 个答案:

答案 0 :(得分:1)

似乎您想在Angular应用中收集用户凭据并将其发布到.net核心后端,然后在后端应用中完成身份验证。

您可以使用Resource Owner Password Credentials Grant。但这不建议,因为ROPC流程需要高度的信任度和用户曝光度,并且仅在无法使用其他更安全的流程时才应使用此流程。

也:

  
      
  • Microsoft身份平台终结点仅支持Azure AD租户的ROPC,不支持个人帐户。这意味着您必须使用特定于租户的终结点(https://login.microsoftonline.com/{TenantId_or_Name})或organizations终结点。
  •   
  • 被邀请到Azure AD租户的个人帐户不能使用ROPC。
  •   
  • 没有密码的帐户无法通过ROPC登录。对于这种情况,我们建议您为您的应用使用其他流程。
  •   
  • 如果用户需要使用多因素身份验证(MFA)登录应用程序,则会被阻止。
  •   

参考:https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth-ropc

答案 1 :(得分:-1)

我不确定您是否因为需要.NET后端而被100%出售。但是在这种情况下,您可以使用msaljs裁掉中间人。他们有专门用于Angular的入门模板和文档