【问题标题】:.NET Core 2 Api with Azure AD and Windows Authentication.NET Core 2 Api 与 Azure AD 和 Windows 身份验证
【发布时间】:2019-02-27 04:54:46
【问题描述】:

我在 .NET Core 2 中构建了自己的 API,并将其上传到 Azure。我们正在使用 AD Connect,我将我的应用程序配置为使用 AAD 身份验证,如下所述:https://docs.microsoft.com/en-us/azure/app-service/app-service-mobile-how-to-configure-active-directory-authentication

我们只想在公司网络内部使用该应用程序,每个人都已经使用他的 AD 凭据登录。 因此,我们应该可以使用 SSO。 但是,我不知道如何配置我的 .NET Core 2 应用程序来使用它。在互联网上,我找到了很多关于 OpenId 或 OAuth 2.0 等的信息,但这对我没有帮助,因为我们只需要普通的 Windows 身份验证。

任何想法,我必须如何正确配置我的 .NET Core 2 应用程序?

我已经添加了这项服务:

        services.AddAuthentication(auth =>
        {
            auth.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            auth.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
            auth.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        })
        .AddCookie()
        .AddOpenIdConnect();

并添加了身份验证中间件:

        app.UseAuthentication();

很可能,我的配置不能这样工作。任何想法或有用的链接,我如何存档,我想要什么?

【问题讨论】:

  • 与名称 suggtests 不同,AzureAD 在域控制器或其他基于 LDAP 的系统中使用的意义上并不是真正的 AD。 Azure AD 实际上是一个 OpenID 提供者,用于发布 JWT 令牌。因此,您不能只通过 NTLM 登录(这并不意味着您不能使用 NTLM,但是您需要 Weblistener iirc(不适用于 Kestrel)
  • 不仅仅是网络监听器,您也可以在 IIS 后面托管并获得集成身份验证。
  • 好吧,我可以使用 Weblistener。有没有可以发布的链接,我可以在其中查看如何配置我的应用程序?

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


【解决方案1】:

我们只需要普通的 Windows 身份验证。

如果我理解正确,您只想使用本地 AD 帐户凭据进行身份验证。如果您只是想要这个,您可以通过 AAD Connect 进行混合配置。根据您发布的链接文档,您正在使用 Easy Auth 将您的应用程序与 Azure AD 集成。 所以,你不需要添加关于身份验证的代码逻辑。

我必须如何正确配置我的 .NET Core 2 应用程序?

由于你使用的是EasyAuth,所以你不需要在你的app里面配置认证逻辑代码。

任何想法或有用的链接,我如何存档,我想要什么?

对于您的场景,实现起来很简单,可以让您使用本地AD帐户登录应用程序。

  1. 通过 AAD Connect 将您的本地 AD 与 Azure AD 集成。设置 AAD 连接并使用一个 SSO 选项对其进行配置。例如直通身份验证。此外,您可以使用 ADFS 进行身份验证,其体验更像是内部部署。这完全取决于您的情况。

  2. 将您的本地 AD 同步到 AAD。

  3. 将您的应用发布到 Azure Web 应用服务。为其配置 Easy Auth。

  4. 通过您的本地帐户登录应用程序对其进行测试。

参考:

Azure AD Connect user sign-in options

Configure your App Service app to use Azure Active Directory login

如果这有帮助,请告诉我!

【讨论】:

  • 好的,我阅读了一些有关 Easy Auth 的信息,现在我按照您的建议做了所有事情。在我的代码中,我删除了有关身份验证的所有内容。我什至从我的 WebConfig 中删除了“forwardWindowsAuthToken”选项。但是,受以下身份验证保护的控制器:[Authorize(Roles = "mg.ourdomain.com\\Domain Users")] 确实返回错误 500。不受保护的控制器操作有效。 Easy Auth 的配置运行良好,用户在尝试导航到控制器操作方法后被要求允许应用程序权限。但我仍然有一个错误 500...
  • 嗨,@大卫。您是否使用 AAD 连接配置了混合环境?
  • 嘿,我现在启用了我的日志,我看到以下错误消息: System.InvalidOperationException: No authenticationScheme is specified, and there is no DefaultChallengeScheme found.现在我将谷歌,实际上是什么混合环境:-)
  • 我们所有的用户都已成功同步到 AAD Connect。密码哈希也会同步。
猜你喜欢
  • 1970-01-01
  • 2020-07-27
  • 2020-03-09
  • 1970-01-01
  • 1970-01-01
  • 2021-01-03
  • 2020-10-15
  • 2018-11-24
  • 2021-03-16
相关资源
最近更新 更多