测试Kerberos和NTLM身份验证API:分步指南

Kerberos 是很多公司广泛使用的安全认证协议,对于需要认证的端点测试来说必不可少。然而,全球最知名的 API 测试工具 Postman 目前并不支持测试使用 Kerberos 认证的端点,这对于很多公司来说无疑是不友好的。

幸运的是,我发现了一款​​可以实现 Kerberos 身份验证的免费软件 - Apidog。本文将详细介绍如何使用 Apidog 测试经过 Kerberos 身份验证的端点,旨在以不高的成本增强您的测试流程。

什么是 Kerberos?

Kerberos 是麻省理工学院 (MIT) 开发的一种网络安全认证协议,目前已成为微软 Windows 内置的认证技术,并被许多组织用于单点登录 (SSO),将用户身份数据安全地传输到应用程序。

Kerberos 身份验证如何工作?

Kerberos 身份验证是一个复杂的过程,我们必须了解几个组成部分:

  • KDC:密钥分发中心,包括AS和TGS组件。在Windows环境中,此角色通常由域控制器承担。
  • AS:认证服务器,负责初次认证,验证用户身份,颁发TGT。
  • TGT:票证授予票证(Ticket Granting Ticket),由AS颁发给通过初始认证的用户,用于向TGS请求特定的服务票证,而不需要重新输入密码。
  • TGS:票证授予服务(Ticket Granting Service),KDC 的一个组件,负责验证 TGT,并为具体服务颁发服务票。
  • 为了更好地理解这些组件之间的关系,我们可以将 Kerberos 身份验证过程简化为以下步骤:

  • 当用户登录时,客户端向AS发送认证请求。
  • 在验证用户身份后,AS 会发出 TGT。
  • 当用户需要访问特定服务时,他们使用TGT向TGS请求服务票证。
  • TGS 验证 TGT 并为用户尝试访问的特定服务颁发服务票证。
  • 用户使用此服务票来访问所需的服务。
  • 在这个过程中,KDC作为一个整体,包含AS和TGS两个主要功能组件,而TGT和服务票证则是这个过程中用来证明身份和授权访问的关键凭证。

    这种设计使得用户只需进行一次初始认证(获取TGT),并在TGT的有效期内多次请求不同的服务票证,在实现单点登录(SSO)功能的同时,保持了高安全性。

    How does Kerberos Authentication work

    Kerberos 身份验证的好处

    使用 Kerberos 作为身份验证服务具有许多优势,特别是在安全性方面:

  • 集中式身份验证服务:所有身份验证都由中央服务器(KDC)管理,简化了用户管理和安全策略实施,并有助于对身份验证尝试进行审计​​和监控。
  • 相互认证:Kerberos 提供相互验证,客户端和服务器都验证彼此的身份。
  • 单点登录(SSO):用户只需认证一次即可访问多项服务,避免密码传输,增强安全性。
  • 票证有效期有限:实际密码永远不会通过网络发送;而是使用加密票证。票证带有时间戳,并且有效期有限,由管理员控制。无需用户干预的自动票证更新可增强安全性,同时又不影响便利性。
  • 减少服务器负载:用户只需进行一次身份验证即可访问多项服务,服务器无需为每个请求处理密码验证,从而提高了整体系统性能。
  • 这些优势使得Kerberos成为企业级身份验证的首选,尤其是在安全性、效率和用户体验至关重要的Windows环境和大型网络中。

    在 macOS 上使用 Apidog 测试经过 Kerberos 身份验证的 API

    让我们逐步了解使用 Apidog 在 macOS 上测试经过 Kerberos 身份验证的 API 端点的实际步骤。

    步骤 1:准备

    采用 Kerberos 身份验证的公司通常会在其 AD 中为每个员工设置帐户。这些组织向员工提供与 Kerberos 相关的必要信息,这些信息通常包括:

  • 帐户:通常基于员工姓名,通常格式为 firstname.lastname 或公司指定的其他格式。假设我有一个名为 scarlett@APIDOG.LOCAL 的帐户。
  • 密码:用于登录的个人密码。出于安全原因,通常需要在首次登录时更改。
  • Kerberos 域:通常是公司域名的大写版本。例如:APIDOG.LOCAL。
  • KDC 服务器地址:这是 Kerberos 密钥分发中心的地址。它通常是域控制器的完全限定域名 (FQDN) 或 IP 地址。示例包括 ills7i8hyt2.apidog.local 或 192.168.1.100。
  • 这些信息使员工能够使用 Kerberos 协议进行身份验证,从而授予他们安全访问各种公司网络资源和服务的权限。

    需要注意的是,由于浏览器限制,Apidog 的网页版不支持此功能。因此,**请确保您已下载最新版本的 Apidog 桌面客户端**。

    步骤2:修改本地DNS

    使用 Kerberos 身份验证的端点通常在内部网络内访问。因此,我们需要配置 DNS 服务器以指向 AD 服务器地址。此配置有助于后续访问这些端点。

    步骤3:配置/etc/krb5.conf文件

    `krb5.conf` 文件是 Kerberos 的主要配置文件,通常位于 `/etc/krb5.conf`。在这里您可以配置 KDC 服务器地址、AS 和 Kerberos 领域主机名的映射。

    通过在终端中输入以下命令来检查此文件是否存在于您的机器上:

    cat /etc/krb5.conf

    如果显示“没有此文件或目录”,则需要创建此文件。

    如果您安装了 nano,您可以直接在 nano 中创建和编辑文件。当然,您可以随意使用您熟悉的任何文本编辑器。

    nano /etc/krb5.conf

    然后,在文件中保存以下配置内容:

    [libdefaults]
        default_realm = APIDOG.LOCAL  # Your Kerberos realm name, typically the uppercase form of your organization's domain name
    
    [realms]
        EXAMPLE.COM = {
            kdc = ills7i8hyt2.apidog.local # KDC server address, assumed here to be the FQDN of the domain controller
            admin_server = ills7i8hyt2.apidog.local # Usually the same as the KDC
        }
    
    [domain_realm]
        .apidog.local = APIDOG.LOCAL  # Mapping between domain name and Kerberos realm name, left side is lowercase
        apidog.local = APIDOG.LOCAL

    保存后,您已成功在您的机器上配置了“/etc/krb5.conf”文件,可以继续下一步。

    步骤 4:登录 AD 账户

    macOS 附带了用于 Kerberos 的 CLI 和 GUI 工具。GUI 工具称为 Ticket Viewer。我们可以使用这些工具中的任何一个来登录。

    在 Spotlight 搜索中输入“Ticket Viewer”打开 Ticket Viewer。选择“添加身份”,输入公司提供的账户和密码,即可成功登录 AD。请注意,登录账户有时间限制;到期后,您需要点击刷新按钮来“续订”身份。

    Log in to AD Account

    或者,您也可以直接使用 CLI 登录:

    # Obtain a Ticket for an AD account
    kinit 
    # Check local Tickets
    klist

    登录成功后,您可以在Apidog中测试端点。

    步骤 5:在 Apidog 中配置 Auth

    打开 Apidog 并创建“新请求”。

    Configure Auth in Apidog

    输入您要测试的 API 端点 URL,然后点击下面的“Auth”,并选择“Kerberos”作为类型。

    Enter the API endpoint URL

    可以看到配置Kerberos认证只需要填写一个SPN(Service Principal Name),SPN主要由KDC服务器地址和Kerberos realm name组成,在输入框中输入`HTTP` + `/` + `KDC服务器地址` + `@` + `Kerberos realm name`。

    SPN

    填写完毕后,点击发送。您应该会看到成功的响应,然后就可以继续测试了。

    a successful response

    如果遇到“401”错误,建议验证以下几点:

  • DNS 配置:确保 DNS 设置已正确配置。
  • Kerberos 设置:验证 Kerberos 配置的准确性。
  • 凭证有效性:确认帐户凭证(用户名和密码)有效且处于活动状态。
  • API 访问权限:检查您是否具有访问相关特定 API 所需的权限。
  • 票证过期:检查 Kerberos 票证是否已过期。如果是,您可能需要续订。
  • 401 error

    系统地审查这些元素可以帮助识别和解决身份验证失败的根本原因,从而促进成功的 API 访问。

    在 Windows 上使用 Apidog 测试经过 Kerberos 身份验证的 API

    对于 Windows 用户来说,这是一个好消息!如果您已经是域的一部分,则可以立即开始在 Apidog 中测试经过 Kerberos 身份验证的 API,无需任何复杂的配置。

    还不是域名的一部分?别担心!这是一个简单的过程:

  • 配置您的 DNS 设置
  • 在“连接到工作或学校帐户”部分输入你的凭据来加入域
  • 虽然流程已经简化,但在尝试加入域之前,确保您拥有必要的权限和正确的凭据至关重要。有了这些,您就可以立即启动并运行,并准备在 Kerberos 身份验证环境中利用 Apidog 强大的 API 测试功能。

    使用 Apidog 测试 NTLM 认证的 API

    Windows Server 环境通常同时使用 Kerberos 和 NTLM 身份验证方法。虽然 Windows 2000 中引入的 Kerberos 因其更强大的安全性而成为首选,但 NTLM 仍然因其在小型网络中的速度和与旧系统的兼容性而备受青睐。

    许多公司同时使用这两种协议,当 Kerberos 出现故障时,NTLM 可作为备份,确保最佳的灵活性。

    Apidog 支持两种身份验证方法,其中 NTLM 配置特别简单 - 只需一步,并且在 Windows 和 macOS 系统上的工作方式相同。

    步骤 1:准备

    NTLM 身份验证不需要那么多信息;我们只需要公司提供的账户和密码。

    并且,不要忘记确保您已经下载并注册了最新版本的 Apidog。

    步骤2:修改本地DNS

    与 Kerberos 身份验证一样,由于端点通常在内部访问,因此我们需要将 DNS 服务器配置为 AD 服务器地址。

    步骤 3:在 Apidog 中配置 Auth

    令人惊喜的是,NTLM认证不需要任何额外的配置,我们可以直接在Apidog中进行配置并完成测试。

    在“身份验证”部分,选择“NTLM 身份验证”作为类型。您将看到两个需要填写的文本框:用户名和密码。只需输入您的帐户凭据即可。

    Testing Kerberos-Authenticated APIs with Apidog on Windows

    点击“发送”,就大功告成了!太简单了!

    结论

    在本文中,我们探讨了如何使用 Apidog 测试 Kerberos 和 NTLM 身份验证 API。事实证明,Apidog 是一种多功能且用户友好的工具,可用于测试这两种身份验证方法。它提供了一个简单的 Kerberos 身份验证配置过程,这对于在其他 API 测试工具中遇到困难的组织尤其有益。

    由于 API 安全性继续成为组织关注的重点,像 Apidog 这样简化安全身份验证方法测试的工具变得越来越有价值。无论您使用的是尖端的 Kerberos 实现还是维护依赖 NTLM 的系统,Apidog 都能提供所需的功能,确保您的 API 正确且安全地运行。