【问题标题】:is it possible to implement kerberos authentication in azure web app?是否可以在 azure web 应用程序中实现 kerberos 身份验证?
【发布时间】:2020-03-10 01:05:00
【问题描述】:

我们有一个托管在本地 Windows 服务器 (IIS) 服务器上的应用程序

现在我在 azure 上创建了一个 Windows 服务器并为其构建了一个 Web 应用程序。应用程序需要使用 kerbrose 协议通过 Windows 服务器 (DC) 对用户进行身份验证,但我无法从 Microsoft 方面找到任何有关此的文档

上述查询是否可以在 azure web 应用中实现?

【问题讨论】:

    标签: windows azure azure-active-directory azure-web-app-service


    【解决方案1】:

    如果您打算将托管网站的虚拟机加入域,那么正如其他人所提到的,这是不可能的。

    但是,在 Azure 网站中进行 Kerberos 身份验证本身并不是特别困难,但它确实需要手动实施。 Windows 在加入域的机器上为您本机处理所有这些,并且 IIS 公开了该功能。由于您无法加入域,因此您必须手动完成所有繁重的工作并自己请求和验证票证。

    这涉及在 Active Directory 中创建服务帐户并保持帐户密码同步。一旦你有了,你需要向浏览器表明它需要协商身份验证,这是通过 401 响应上的 WWW-Authenticate: negotiate 标头完成的。客户端,如果配置为发送票证,将在后续响应的Authorization: Negotiate YII... 请求标头中发送票证。此时,您需要将协商标头和原始服务帐户密码推送到可以验证 Kerberos 票证的 something 中。 Windows SSPI 将为您执行此操作,但这很痛苦。我建立了一个库来为你做这件事:Kerberos.NET。 YMMV 与最适合您的。

    综上所述,切换到更现代的身份验证机制(如 OAuth/OpenIDConnect/SAML)可能更有益。

    【讨论】:

    • 感谢您回答我们现在正在使用 Azure AD 并已断开我们的 AD 域服务器,所以它仍然可以吗?根据此文档“docs.microsoft.com/bs-latn-ba/azure/active-directory/hybrid/…”,它提到需要使用 AD 域服务器,但我们现在不想使用 AD DS。
    • 在这种情况下,您没有能够发出 Kerberos 票证的 Active Directory 服务器。这是 Kerberos 身份验证的要求。在这种情况下,选项是启动 AAD DS、重新打开本地 AD 服务器或切换到现代身份验证。
    【解决方案2】:

    不,这是不可能的。 Windows 身份验证适用于本地部署。对于 Azure 网站,Azure Active Directory 显然是最佳选择。从 AD 同步到 Azure Active Directory 也很容易设置。

    如果您仍然想绝对使用 Windows 身份验证并在 Azure 上托管您的网站,您可以创建 Windows VM 并在其中托管您的网站。然后,您需要将 VM 加入您的 AD。为此,两个 VM 必须位于同一网络中。因此,如果您的虚拟机在本地,您将需要创建一个site-to-site VPN

    有关更多信息,请关注此SO,该SO 也对此进行了讨论。

    【讨论】:

    • 这不是真的。 Windows 身份验证不仅适用于本地部署。这更难做到,但这并不意味着它是不可能的。
    • 如果我使用 Azure 广告,那么可以使用 azure Web 应用进行 karbrose (SSO) 身份验证?
    【解决方案3】:

    根据您是否必须允许与本地 Active Directory 关联的用户访问,有多种方法。

    你应该看看这个服务:https://docs.microsoft.com/en-us/azure/active-directory-domain-services/

    它将在 Azure 中提供一个 Active Directory,您可以在其中将您的 VM 加入域,然后使用 Kerberos 作为身份验证协议(应该像在本地一样工作)。

    另一种选择是在您的虚拟网络中创建一个新的 Active Directory(通过您创建 AD 的 1 或 2 个小型 Windows Server 虚拟机)。

    如果您使用 Active Directory 域服务,那么您可以通过同步或联合您的本地 AD 将其扩展到您的本地 Active Directory。

    这里有关于这些场景的更多信息: https://docs.microsoft.com/en-us/azure/active-directory/hybrid/whatis-hybrid-identity

    对于 Azure 应用服务 - Web 应用,您可以将其连接到您的 Azure Active Directory (AAD) 并使用混合身份模型来允许源自本地 AD 的用户访问它: https://docs.microsoft.com/en-us/azure/app-service/configure-authentication-provider-aad

    希望这会有所帮助,这是您正在研究的一个相当复杂的话题。

    【讨论】:

    • 我们有一些限制,无法使用 Azure AD。 Web 应用程序应该使用 VM AD 对用户进行身份验证是否可能?
    • 如果您在 VM 上创建新的 AD,那么您可以将您的网络服务器 (IIS) VM 加入其中(只要存在网络连接)。如果要使用应用服务,则必须将在 VM 上创建的新 AD 与 AzureActiveDirectory 连接,并将应​​用服务应用连接到该 AAD。无法将应用服务中的应用直接与 AD 服务器连接。仅通过 AAD。
    猜你喜欢
    • 2011-06-13
    • 2018-08-11
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多