通过平台 SSO(预览版)在 macOS 上为 Azure 文件存储 启用 Microsoft Entra Kerberos 身份验证

适用于: ✔️ SMB 文件共享

本文介绍如何通过使用macOS 平台单点登录 (PSSO)(预览版),在 macOS 设备上为 Azure 文件存储 配置 Microsoft Entra Kerberos 身份验证。 通过使用此配置,已加入 Microsoft Entra 的 macOS 设备可以借助基于云的 Kerberos 票证授予票证 (TGT) 无缝访问 Azure SMB 文件共享,且无需提示用户输入凭据。

macOS 平台 SSO 将 Mac 设备与Microsoft Entra ID集成,使用户能够使用硬件绑定密钥、智能卡或Microsoft Entra ID密码使用其Microsoft Entra ID凭据登录。 除了平台 SSO 主刷新令牌(PRT)外,Microsoft Entra ID 还会颁发云 Kerberos TGT,并通过 PSSO 中的 TGT 映射与 macOS 原生 Kerberos 堆栈共享。 当客户端配置(例如,通过 Intune)查询本地域控制器时,还可以获取本地 Kerberos TGT。 此配置允许无缝单一登录Azure 文件存储,而无需提示用户提供交互式凭据。

有关适用于 Azure 文件存储 的 Microsoft Entra Kerberos 身份验证的详细信息,请参阅 Azure 文件存储 SMB 访问的基于标识的身份验证选项概述

先决条件

在 macOS 上使用平台 SSO 配置 Azure 文件存储 访问之前,请先完成以下先决条件。

macOS 设备要求

  • macOS Tahoe 26.5 或更高版本,并安装了最新更新。
  • Microsoft Intune 公司门户 5.2408.0 或更高版本安装在设备上。
  • macOS 设备必须在移动设备管理(MDM)解决方案中注册。
  • macOS 平台 SSO 必须已配置并部署到设备。 如果未配置平台 SSO,请参阅 平台 SSO 文档Intune 部署指南 ,然后再继续操作。

Azure 文件存储要求

权限和工具要求

若要运行本文中所述的应用注册更新脚本,需要:

  • PowerShell 5.1 或 PowerShell 7.x。
  • Microsoft。Graph.Applications PowerShell 模块。 如果没有安装此模块,请运行 Install-Module Microsoft.Graph.Applications -Scope CurrentUser
  • 具有 Application.ReadWrite.All Microsoft 图形 API 权限的 Application AdministratorGlobal Administrator Microsoft Entra 角色之一。

更新应用注册标识符 URI

仅当存储帐户中存在现有文件共享时,才需要执行此步骤。 它不适用于新建的文件共享。 如果存储帐户中没有现有的文件共享,可以跳过此步骤。

为了使 macOS 客户端能够使用 Microsoft Entra Kerberos 和平台 SSO 访问现有Azure文件共享,必须将 CIFS 标识符 URI 更新为小写cifs,否则文件共享装载失败。

为存储帐户启用 Microsoft Entra Kerberos 身份验证时,系统会自动注册一个 Microsoft Entra 应用程序,其标识符 URI 包含 CIFS/<storageaccount>.file.core.chinacloudapi.cn 前缀。 使用 Kerberos 装载 SMB 文件共享时,macOS 要求 cifs 前缀为 小写 。 如果任何标识符 URI 包含大写 CIFS 前缀,则 macOS 客户端无法对共享进行身份验证和装载。

若要更新标识符 URI,请使用 Azure 文件存储 示例存储库中提供的 PowerShell 脚本。 脚本将应用注册中的标识符 URI 从 CIFS/<storageaccount>.file.core.chinacloudapi.cn 更新为 cifs/<storageaccount>.file.core.chinacloudapi.cn。 它通过 CSV 文件支持单应用和批量更新,并创建所有更改的审核日志。

Tip

首先使用 -WhatIf 参数运行脚本,以预览更改,而无需应用这些更改。

更新单个应用注册

<app-registration-id> 替换为您的存储账户的应用注册 ID。 若要查找此 ID,请转到 Microsoft Entra ID>应用注册>所有应用程序,然后搜索你的存储帐户名称。

.\updateappmanifestazurefiles.ps1 -AppId "<app-registration-id>"

若要生成审核日志,请指定 -OutputFile 参数:

.\updateappmanifestazurefiles.ps1 -AppId "<app-registration-id>" -OutputFile "C:\audit\output.csv"

更新多个应用注册

创建一个 CSV 文件,其中包含一个列标题为 AppId 的列,该列包含要更新的每个存储账户的应用注册 ID。 例如:

AppId
12345678-1234-1234-1234-123456789012
87654321-4321-4321-4321-210987654321

然后使用 -CsvFilePath 参数运行该脚本:

$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
$outputFile = "C:\audit\production_update_$timestamp.csv"
.\updateappmanifestazurefiles.ps1 -CsvFilePath "C:\apps.csv" -OutputFile $outputFile

注释

该脚本以 50 毫秒的批处理处理应用,应用之间的延迟为 100 毫秒,批处理之间的延迟为 2 秒。 它适用于多达 20,000 个应用。 对于大型运行,请先使用小子集进行测试,并在大规模运行之前查看审核日志。

验证更新

运行脚本后,验证标识符 URI 是否已成功更新。

  1. Azure 门户中,打开 Microsoft Entra ID
  2. Manage 下,选择 应用注册>All applications
  3. 搜索存储帐户名称并选择匹配的应用程序。
  4. 管理下,选择清单
  5. 确认标识符 URI 现在以小写形式显示 cifs/<storageaccount>.file.core.chinacloudapi.cn

在 macOS 上配置 Kerberos SSO MDM 配置文件

若要在 macOS 上启用 kerberos SSO for Azure 文件存储,请部署一个 Kerberos SSO MDM 配置文件,该配置文件将 macOS 指向 Microsoft Entra ID Cloud Kerberos 领域。 如果用户还需要通过 Kerberos 访问本地部署的 Active Directory 资源,请为本地 AD 域单独部署一个配置文件。

注释

如果计划同时使用 Microsoft Entra ID Cloud Kerberos 和本地 Active Directory 领域,请先部署本地 Active Directory 配置文件,再部署 Microsoft Entra ID Cloud Kerberos 配置文件。

配置 Microsoft Entra ID Cloud Kerberos 配置文件

使用以下设置来配置 Microsoft Entra ID Cloud Kerberos MDM 配置文件。 将所有占位符的值替换为适用于你的租户的正确值。

配置密钥 建议的值 注释
preferredKDCs kkdcp://login.partner.microsoftonline.cn/<tenantId>/kerberos <tenantId> 替换为你的 Microsoft Entra 租户 ID。 可以在Microsoft Entra 管理中心概述页面上找到此值。
PayloadOrganization 你的组织名称
Hosts .chinacloudapi.cnchinacloudapi.cn
Realm KERBEROS.MICROSOFTONLINE.COM 必须全部大写。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PayloadContent</key>
    <array>
        <dict>
            <key>ExtensionData</key>
            <dict>
                <key>usePlatformSSOTGT</key>
                <true/>
                <key>performKerberosOnly</key>
                <true/>
                <key>preferredKDCs</key>
                <array>
                    <string>kkdcp://login.partner.microsoftonline.cn/<tenantId>/kerberos</string>
                </array>
            </dict>
            <key>ExtensionIdentifier</key>
            <string>com.apple.AppSSOKerberos.KerberosExtension</string>
            <key>Hosts</key>
            <array>
                <string>chinacloudapi.cn</string>
                <string>.chinacloudapi.cn</string>
            </array>
            <key>Realm</key>
            <string>KERBEROS.MICROSOFTONLINE.COM</string>
            <key>PayloadDisplayName</key>
            <string>Single Sign-On Extensions Payload for Microsoft Entra ID Cloud Kerberos</string>
            <key>PayloadIdentifier</key>
            <string>com.apple.extensiblesso.00aa00aa-bb11-cc22-dd33-44ee44ee44ee</string>
            <key>PayloadType</key>
            <string>com.apple.extensiblesso</string>
            <key>PayloadUUID</key>
            <string>00aa00aa-bb11-cc22-dd33-44ee44ee44ee</string>
            <key>TeamIdentifier</key>
            <string>apple</string>
            <key>Type</key>
            <string>Credential</string>
        </dict>
    </array>
    <key>PayloadDescription</key>
    <string></string>
    <key>PayloadDisplayName</key>
    <string>Kerberos SSO Extension for macOS for Microsoft Entra ID Cloud Kerberos</string>
    <key>PayloadEnabled</key>
    <true/>
    <key>PayloadIdentifier</key>
    <string>11bb11bb-cc22-dd33-ee44-55ff55ff55ff</string>
    <key>PayloadOrganization</key>
    <string>Contoso</string>
    <key>PayloadRemovalDisallowed</key>
    <true/>
    <key>PayloadScope</key>
    <string>System</string>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadUUID</key>
    <string>11bb11bb-cc22-dd33-ee44-55ff55ff55ff</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
</dict>
</plist>

根据您的环境更新这些值后,使用带有 .mobileconfig 文件扩展名的文本编辑器(例如 cloud-kerberos.mobileconfig)保存此配置。

注释

当你将 usePlatformSSOTGT 键设置为 true 时,Kerberos 扩展会使用来自 Platform SSO 的、与其领域相同的 TGT。 当您将 performKerberosOnly 键设置为 true 时,该扩展不会执行密码过期检查、外部密码更改检查,也不会获取用户的主目录。 在部署的任何 Kerberos SSO 配置文件中配置这两个密钥。

配置本地 Active Directory Kerberos 配置文件(可选)

如果您的用户还需要通过 Kerberos SSO 访问本地 Active Directory 资源,请为本地 AD 领域配置单独的 MDM 配置文件。 将对 contoso.comContoso 的所有引用替换为适用于您的环境的正确值。

配置密钥 建议的值 注释
Hosts .contoso.comcontoso.com 替换为本地域或林名称。 在域名之前保留上述 . 字符。
Realm CONTOSO.COM 替换为本地领域名称。 必须全部大写。
PayloadOrganization 你的组织名称
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PayloadContent</key>
    <array>
        <dict>
            <key>ExtensionData</key>
            <dict>
                <key>allowPasswordChange</key>
                <true/>
                <key>allowPlatformSSOAuthFallback</key>
                <true/>
                <key>performKerberosOnly</key>
                <true/>
                <key>pwReqComplexity</key>
                <true/>
                <key>syncLocalPassword</key>
                <false/>
                <key>usePlatformSSOTGT</key>
                <true/>
            </dict>
            <key>ExtensionIdentifier</key>
            <string>com.apple.AppSSOKerberos.KerberosExtension</string>
            <key>Hosts</key>
            <array>
                <string>.contoso.com</string>
                <string>contoso.com</string>
            </array>
            <key>Realm</key>
            <string>CONTOSO.COM</string>
            <key>PayloadDisplayName</key>
            <string>Single Sign-On Extensions Payload for On-Premises</string>
            <key>PayloadIdentifier</key>
            <string>com.apple.extensiblesso.1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5</string>
            <key>PayloadType</key>
            <string>com.apple.extensiblesso</string>
            <key>PayloadUUID</key>
            <string>1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5</string>
            <key>TeamIdentifier</key>
            <string>apple</string>
            <key>Type</key>
            <string>Credential</string>
        </dict>
    </array>
    <key>PayloadDescription</key>
    <string></string>
    <key>PayloadDisplayName</key>
    <string>Kerberos SSO Extension for macOS for On-Premises</string>
    <key>PayloadEnabled</key>
    <true/>
    <key>PayloadIdentifier</key>
    <string>2bbbbbb2-3cc3-4dd4-5ee5-6ffffffffff6</string>
    <key>PayloadOrganization</key>
    <string>Contoso</string>
    <key>PayloadRemovalDisallowed</key>
    <true/>
    <key>PayloadScope</key>
    <string>System</string>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadUUID</key>
    <string>2bbbbbb2-3cc3-4dd4-5ee5-6ffffffffff6</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
</dict>
</plist>

根据您的环境更新这些值后,使用文本编辑器将此配置保存为带有 .mobileconfig 文件扩展名的文件(例如 on-prem-kerberos.mobileconfig)。

使用 Microsoft Intune 部署配置文件

如果你使用 Intune 作为 MDM 解决方案,请按照以下步骤部署各个配置文件。 对需要部署的每个 .mobileconfig 文件重复这些步骤。

  1. 登录到 Microsoft Intune 管理中心
  2. 选择“设备”>“配置”>“创建”>“新策略”。
  3. 输入以下属性:
    • 平台:选择 macOS
    • 配置文件类型:选择 “模板”。
  4. 选择“自定义”模板,并选择“创建”。
  5. Basics 中,输入策略的描述性名称,例如 macOS - Azure 文件存储 Cloud Kerberos SSO 和可选说明。 选择“下一步”。
  6. 在“自定义配置文件名称”框中输入名称。
  7. 对于 部署通道,请选择 “设备通道”。
  8. 选择文件夹图标并上传 .mobileconfig 之前保存和自定义的文件。
  9. 选择“下一步”。
  10. “作用域标记”中,分配任何适用的作用域标记,然后选择“ 下一步”。
  11. “分配”中,选择接收配置文件的用户或用户组。 平台 SSO 策略基于用户;不要将策略分配给设备。
  12. 选择 “下一步”,查看设置,然后选择“ 创建”。

每次设备检查配置更新时,都会应用这些设置。

分配共享级权限

对于每个Azure文件共享,请将共享级别权限分配给需要访问权限的用户或组。 设置好共享级权限后,各个文件和目录上的 Windows ACL 将控制细粒度访问。

若要设置共享级别权限,请按照将共享级别权限分配给身份中的说明进行操作。

在 macOS 上装载Azure文件共享

部署 Kerberos SSO 配置文件并更新应用注册后,macOS 用户可以从 Finder 装载Azure文件共享。

  1. 打开 Finder

  2. “转到 ”菜单中,选择“ 连接到服务器”,或按 Command+K

  3. “服务器地址 ”字段中,输入文件共享的 SMB URL。 通过将 \\ 替换为 smb://,并将每个 \ 替换为 /,将 Windows UNC 路径转换为 SMB URL。 例如:

    smb://<storageaccountname>.file.core.chinacloudapi.cn/<sharename>
    
  4. 选择 连接

如果配置正确,则共享资源会自动挂载,无需提示用户输入凭据。

测试和验证

完成配置后,请验证是否已颁发 Kerberos 票证,以及文件共享访问是否按预期工作。

验证 Kerberos 票证签发

在 macOS 客户端上,打开 终端 并运行以下命令:

app-sso platform -s

确认输出包含 Microsoft Entra ID Cloud Kerberos 领域的 Kerberos 票证,ticketKeyPath 值为 tgt_cloud。 如果还部署了本地 AD Kerberos 配置文件,则还应出现第二个票证,其 ticketKeyPath 设置为 tgt_ad

验证端口 445 是否已打开:

nc -vz exampleaccount.file.core.chinacloudapi.cn 445

验证文件共享访问权限

尝试使用上一部分中的步骤从 Finder 装载Azure文件共享。 该共享应在不提示输入交互式凭据的情况下挂载。 如果出现凭据提示,请参阅 故障排除部分

疑难解答

装载文件共享时,系统会提示用户输入凭据

如果在连接到Azure文件共享时提示用户输入凭据,请验证以下条件:

  • 应用注册标识符 URI 从 CIFS/ 更新为 cifs/ (小写)。 请参阅 更新应用注册标识符 URI验证更新
  • macOS 设备具有有效的云 Kerberos TGT,可通过在终端中运行 app-sso platform -s 来确认。
  • Kerberos SSO MDM 配置文件将应用于设备。
  • 已向 Microsoft Entra ID 中的 Azure 文件存储 应用注册授予管理员同意。
  • 用户对Azure文件共享具有共享级别权限。
  • 表示存储帐户的 Microsoft Entra 应用禁用 MFA。

脚本错误

Error 解决方案
既未指定 AppId,也未指定 CsvFilePath 请仅指定这些参数中的一个。
CSV 文件无效 确保文件存在,经过 UTF-8 编码,具有 AppId 列标题,并且不包含重复条目。
Microsoft 图形 API错误 验证你是否具有 Application.ReadWrite.All 权限以及 应用程序管理员全局管理员 角色。
应用注册 ID 无效 确认租户中存在应用注册 ID,并且可访问。 使用 Disconnect-MgGraph 清除缓存的凭据,并在需要时重新进行身份验证。

已知问题

Kerberos SSO 扩展菜单附加项

使用平台 SSO 部署 Kerberos SSO 支持时,macOS Kerberos SSO 扩展的菜单栏附加项会出现在菜单栏中。 用户无需与菜单栏进行交互,Kerberos SSO 才能正常工作。 即使菜单栏额外报告“未登录”,SSO 功能也能正常运行。可以指示用户忽略额外的菜单栏。

对 Kerberos SSO 的浏览器支持

如果用户还通过 Kerberos SSO 访问本地 Web 资源,则某些浏览器需要额外的配置。 SMB Azure文件共享访问不需要这些设置。 为环境中使用的每个浏览器部署相应的设置。