【问题标题】:How can I get Azure AD Authentication from .Net Core program for Angular app如何从 .Net Core 程序获取 Angular 应用程序的 Azure AD 身份验证
【发布时间】:2020-11-23 02:19:24
【问题描述】:

我有一个托管 Angular 10 应用程序的 .Net Core 3.1 程序。 Angular 应用程序有一个登录页面,用户可以在其中输入用户名和密码,这些用户名和密码将发送到 .Net Core 中的登录函数,该函数返回一个 oAuth 令牌,用于从 Angular 对 api 的所有调用。只有在针对数据库检查用户名和密码后,才会返回令牌。我想在登录表单上有一个“使用 Microsoft 登录”按钮,用户可以单击该按钮,而不是输入用户名和密码。我希望 .Net 核心应用程序然后调用 Azure Active Directory 并获取令牌。如果用户已经登录到 Azure AD,它只会返回令牌,如果没有,它会询问用户他们的 Active AD 凭据,然后在成功登录后返回令牌。.Net Core 程序然后可以询问 Azure AD令牌(而不是检查数据库中的用户名和密码),如果没问题,它会将 oAuth 令牌返回给 Angular 应用程序。除了 .Net Core 中的代码之外,我很清楚大部分内容可以执行以下操作:

  1. 查看用户是否已登录 Azure AD,如果没有则提示用户登录 Azure AD
  2. 向 Azure AD 发出请求,为经过身份验证的用户发送令牌

请帮忙。

【问题讨论】:

  • 我们可以直接将 Azure AD auth 与 Angular 应用程序集成:docs.microsoft.com/en-us/azure/active-directory/develop/…
  • 感谢@JimXu 的回复。我找到了如何从 javascript 执行此操作的示例,但我想知道如何从 .Net Core 执行此操作。如果用户登录到 Azure AD,我希望他们自动登录,这样他们就不会收到 Angular 登录页面的提示。

标签: angular azure .net-core azure-active-directory


【解决方案1】:

使用 Azure AD 登录用户时,会出现 specific flow you should follow。就像 Angular 库一样,Microsoft.IdentityModel library 可以隐藏大部分复杂性。由于您使用的是 Angular,因此在 SPA 中处理登录部分会更简单,但您不必这样做。

有一个示例应用专门使用 Angular 和 .NET Core 实现 AAD 身份验证:https://github.com/Azure-Samples/ms-identity-javascript-angular-spa-aspnetcore-webapi

还有一个教程介绍了几个不同的场景,包括您可能想要探索的示例应用程序:https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/

您的 API 中有两个登录端点,您走在正确的道路上。主要问题是让您的 API 处理实际登录。如果您需要让 Azure AD 对用户进行身份验证,您应该始终让 Azure AD 在浏览器中处理该操作。由于他们的 Microsoft 登录不仅适用于您的站点,因此用户在任何时候将其提供给您都会带来巨大的安全风险。如果他们的帐户启用了 2 因素,即使您有他们的用户名和密码,您的 API 也无法进行身份验证。

如果用户已登录 Azure AD,但未专门登录您的站点,则不会要求他们再次登录。他们可能会短暂看到弹出窗口或重定向,但 Azure AD 会立即将他们发送回您的站点,并带有您的 API 令牌。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 2021-03-16
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2022-10-25
    • 2019-11-30
    • 1970-01-01
    相关资源
    最近更新 更多