首页 > 解决方案 > Power BI:延长通过 Get-PowerBIAccessToken 获取的访问令牌的过期时间

问题描述

我可以使用此命令通过 Power shell 获取 Power BI 令牌Get-PowerBIAccessToken

令牌有效,但此令牌的到期时间为 1 小时。

我想将此令牌延长至 1 天,但我找不到如何做到这一点的信息。

我从主帐户登录到 PowerShell。

我尝试创建New-AzureADPolicy具有新到期时间值的令牌,但现在我无法将此策略分配给当前用户(主帐户)。据我了解,此政策只能分配给服务原则,我不是服务原则

您有任何解决方案来延长令牌的生命周期吗?

标签: powershellazure-active-directorypowerbi

解决方案


如果您正在运行安全的无人值守服务,最好的方法是使用仅应用身份验证(也称为“服务到服务”)来获取对 Power BI 服务的访问令牌。你的应用对 Power BI 的访问将不依赖于任何用户的帐户,它将拥有自己的服务标识。

您可以阅读有关 Power BI 支持仅应用程序访问 Power BI API 的更多信息:https ://docs.microsoft.com/en-us/power-bi/developer/embed-service-principal

使用仅限应用程序的流程,您有两个选项来验证应用程序:

  • 使用证书 - 这是更安全、推荐的方法
  • 使用客户端机密 - 这不太安全,并且具有更高的安全风险

Power BI cmdlet 支持两种仅应用身份验证模式。例如,要使用证书进行身份验证,很简单:

Connect-PowerBIServiceAccount -ServicePrincipal `
                              -Tenant "{tenant-id-or-domain}" `
                              -ApplicationId "{client-app-id}" `
                              -CertificateThumbprint "{cert-thumbprint}"

或者,使用客户端密码:

$clientSecret = Get-SecretFromSomewhereSafe # Do NOT include the secret in your script!
$cred = [PSCredential]::new("{client-appid}", $clientSecret)
Connect-PowerBIServiceAccount -ServicePrincipal `
                              -Tenant "{tenant-id-or-domain}" `
                              -Credential $cred

一旦你连接了任何一种方法,那么你只需在使用它之前立即获得一个访问令牌:

Get-PowerBIAccessToken

如果现有的缓存访问令牌仍然有效,它将被返回。如果它已过期,该 cmdlet 将负责检索一个新的。


推荐阅读