从 Power BI 移动应用程序连接到 Power BI 报表服务器和 SSRS
本文介绍如何将环境配置为支持使用 Power BI 移动应用进行 OAuth 身份验证,以连接到 Power BI 报表服务器和 SQL Server Reporting Services 2016 或更高版本。
要求
Web 应用程序代理(WAP)和 Active Directory 联合身份验证服务(AD FS)服务器需要 Windows Server。 无需具有 Windows 功能级别域。
为了使用户能够将报表服务器连接添加到其 Power BI 移动应用,必须授予他们对报表服务器主文件夹的访问权限。
注意
自 2025 年 3 月 1 日起,Power BI 移动应用将无法再通过 Windows Server 2016 上配置的 AD FS 通过 OAuth 协议连接到报表服务器。 将 OAuth 与在 Windows Server 2016 和 Web 应用程序代理(WAP)上配置的 AD FS 配合使用的客户必须将其 AD FS 服务器升级到 Windows Server 2019 或更高版本,或使用 Microsoft Entra 应用程序代理。 Windows Server 升级后,Power BI 移动应用用户可能需要重新登录到报表服务器。
此升级需要移动应用使用的身份验证库中的更改。 此更改绝不会影响 Microsoft 对 Windows Server 2016 上 AD FS 的支持,而仅影响 Power BI 移动应用程序连接到它的能力。
域名服务 (DNS) 配置
公共 URL 是 Power BI 移动应用将连接到的 URL。 例如,它可能如下所示。
https://reports.contoso.com
需要将报表的 DNS 记录指向 Web 应用程序代理 (WAP) 服务器的公用 IP 地址。 还需要为 AD FS 服务器配置公共 DNS 记录。 例如,你可能已使用以下 URL 配置 AD FS 服务器。
https://fs.contoso.com
需要将 fs 的 DNS 记录指向 Web 应用程序代理 (WAP) 服务器的公用 IP 地址,因为会将其作为 WAP 应用程序的一部分发布。
证书
需要为 WAP 应用程序和 AD FS 服务器配置证书。 这两个证书都必须是移动设备识别的有效证书颁发机构的一部分。
Reporting Services 配置
在 Reporting Services 方面,没有太多需要配置的内容。 只需确保:
- 具有有效的服务主体名称 (SPN) 来确保正确的 Kerberos 身份验证。
- 已为身份验证的协商启用 Reporting Services 服务器。
- 用户有权访问报表服务器的主文件夹。
服务主体名称(SPN)
SPN 是使用 Kerberos 身份验证的服务的唯一标识符。 需要确保报表服务器具有适当的 HTTP SPN。
有关如何为报表服务器配置正确的服务主体名称(SPN)的信息,请参阅 为报表服务器注册服务主体名称(SPN)。
启用协商身份验证
若要使报表服务器能够使用 Kerberos 身份验证,需要将报表服务器的身份验证类型配置为 RSWindowsNegotiate。 可在 rsreportserver.config 文件中执行此操作。
<AuthenticationTypes>
<RSWindowsNegotiate />
<RSWindowsKerberos />
<RSWindowsNTLM />
</AuthenticationTypes>
有关详细信息,请参阅 修改 Reporting Services 配置文件 和 在报表服务器上配置 Windows 身份验证。
Active Directory 联合身份验证服务 (AD FS) 配置
需要在环境中的 Windows 服务器上配置 AD FS。 可以通过服务器管理器完成配置,然后选择“管理”下的“添加角色和功能”。 有关详细信息,请参阅 Active Directory 联合身份验证服务。
创建应用程序组
在 AD FS 管理屏幕中,需要为 Reporting Services 创建一个应用程序组,其中包含 Power BI 移动应用的信息。
可以使用以下步骤创建应用程序组。
在 AD FS 管理应用中,右键单击 应用程序组 并选择 添加应用程序组...
在“添加应用程序组”向导中,为应用程序组提供“名称”,并选择“访问 Web API 的原生应用程序”。
选择“下一步”。
为正在添加的应用程序提供“名称”。
“客户端 ID”将会自动生成,对于 iOS 和 Android 会输入 484d54fc-b481-4eee-9505-0258a1913020。
需要添加以下“重定向 URL”:
适用于 Power BI Mobile - iOS 的条目:
msauth://code/mspbi-adal://com.microsoft.powerbimobile
msauth://code/mspbi-adalms://com.microsoft.powerbimobilems
mspbi-adal://com.microsoft.powerbimobile
mspbi-adalms://com.microsoft.powerbimobilemsAndroid 应用只需要以下步骤:
urn:ietf:wg:oauth:2.0:oob选择“下一步”。
提供报表服务器的 URL。 该 URL 是将命中 Web 应用程序代理的外部 URL。 它应采用以下格式。
注意
此 URL 区分大小写!
https://<report server url>/reports
选择“下一步”。
选择符合组织需求的 访问控制策略。
选择下一步。
选择下一步。
选择“下一步”。
选择 关闭。
完成后,应会看到应用程序组的属性如下所示。
现在,在 AD FS 服务器上运行以下 PowerShell 命令,以确保支持令牌刷新。
Set-AdfsApplicationPermission -TargetClientRoleIdentifier '484d54fc-b481-4eee-9505-0258a1913020' -AddScope 'openid'
Web 应用程序代理 (WAP) 配置
需要在环境中的服务器上启用 Web 应用程序代理(角色)Windows 角色。 它必须位于 Windows 服务器上。 有关详细信息,请参阅 Windows Server 中的 Web 应用程序代理及发布使用 AD FS 预身份验证的应用程序。
约束委派配置
为了从 OAuth 身份验证过渡到 Windows 身份验证,我们需要将受限委派与协议转换配合使用。 这是 Kerberos 配置的一部分。 我们已在 Reporting Services 配置中定义了 Reporting Services SPN。
我们需要在 Active Directory 中的 WAP 服务器计算机帐户上配置约束委派。 如果没有 Active Directory 的权限,则可能需要与域管理员合作。
若要配置约束委派,需要执行以下步骤。
在安装了 Active Directory 工具的计算机上,启动 Active Directory 用户和计算机。
查找 WAP 服务器的计算机帐户。 默认情况下,它位于计算机容器中。
右键单击 WAP 服务器,转到 属性。
选择“委派”选项卡。
选择“仅信任此计算机来委派指定的服务”,然后选择“使用任意身份验证协议”。
此操作设置了此 WAP 服务器计算机帐户的约束委派。 然后,我们需要指定允许此计算机委托的服务。
在“服务”框下选择“添加…”。
选择“用户或计算机…”
输入您为报表服务使用的服务帐户。 此帐户是在 Reporting Services 配置中将 SPN 添加到的帐户。
选择 Reporting Services 的 SPN,然后选择“确定”。
注意
你可能只能看到 NetBIOS SPN。 如果两者都存在,它实际上会同时选择 NetBIOS 和 FQDN SPN。
选中 展开 复选框时,结果应如下所示。
选择“确定”。
添加 WAP 应用程序
虽然可以在报表访问管理控制台中发布应用程序,但我们希望通过 PowerShell 创建应用程序。 下面是用于添加应用程序的命令。
Add-WebApplicationProxyApplication -Name "Contoso Reports" -ExternalPreauthentication ADFS -ExternalUrl https://reports.contoso.com/ -ExternalCertificateThumbprint "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00" -BackendServerUrl https://ContosoSSRS/ -ADFSRelyingPartyName "Reporting Services - Web API" -BackendServerAuthenticationSPN "http/ContosoSSRS.contoso.com" -UseOAuthAuthentication
参数 | 评论 |
---|---|
ADFSRelyingPartyName | 在 AD FS 中作为应用程序组的一部分创建的 Web API 名称。 |
ExternalCertificateThumbprint | 用于外部用户的证书。 重要的是,证书在移动设备上有效,并且来自受信任的证书颁发机构。 |
BackendServerUrl | 从WAP服务器访问报表服务器的URL。 如果 WAP 服务器位于 DMZ 中,则可能需要使用完全限定的域名。 请确保可以从 WAP 服务器上的 Web 浏览器点击此 URL。 |
后端服务器身份验证SPN | 创建的作为 Reporting Services 配置一部分的 SPN。 |
为 WAP 应用程序设置集成身份验证
添加 WAP 应用程序后,需要将 BackendServerAuthenticationMode 设置为使用 IntegratedWindowsAuthentication。 需要 WAP 应用程序中的 ID 才能设置它。
Get-WebApplicationProxyApplication "Contoso Reports" | fl
运行以下命令,使用 WAP 应用程序的 ID 设置 BackendServerAuthenticationMode。
Set-WebApplicationProxyApplication -id 00aa00aa-bb11-cc22-dd33-44ee44ee44ee -BackendServerAuthenticationMode IntegratedWindowsAuthentication
连接 Power BI 移动应用
在 Power BI 移动应用中,需要连接到 Reporting Services 实例。 若要执行此操作,需要提供 WAP 应用程序的“外部 URL”。
选择 连接时,将定向到 AD FS 登录页。 请输入您域名的有效凭据。
选择“登录”后,将看到 Reporting Services 服务器中的元素。
多重身份验证
可以启用多重身份验证,为环境启用其他安全性。 若要了解详细信息,请参阅 使用 AD FS将 Microsoft Entra 多重身份验证配置为身份验证提供程序。
故障 排除
收到错误“未能登录到 SSRS 服务器”
你可以将 Fiddler 设置为移动设备的代理,以查看请求的进展情况。 若要为手机设备启用 Fiddler 代理,需要在运行 Fiddler 的计算机上设置适用于 iOS 和 Android 的 CertMaker。 加载项来自 Telerik for Fiddler。
如果使用 Fiddler 时登录成功,则可能是 WAP 应用程序或 AD FS 服务器存在证书问题。