当需要 Windows 授权时,如何使用 Power BI 发送自定义 header?

How do I send a custom header using Power BI when Windows Authorization is required?

我正在尝试使用 Power BI (Power Query) 访问使用 Windows 身份验证并需要 api 密钥 header 的不记名令牌 API。我 运行 遇到的问题是 Power BI 只接受某些 header。当我尝试包含我的组织的“api-key”header 时,我收到以下错误消息:

Expression.Error: The 'api-key' header is only supported when connecting anonymously. These headers can be used with all authentication types: Accept, Accept-Charset, Accept-Encoding, Accept-Language, Cache-Control, Content-Type, If-Modified-Since, Prefer, Range, Referer

我使用的代码看起来像这样,尽管我尝试了几种变体:

let

    securityTokenServiceUrl = "https://mysecurityservice",
    myApiKey = "123456789",
    securityHeader = "{
        ""accept"": ""text/plain"",
        ""api-key"": """& myApiKey & """
    }",
    tokenResponse = Json.Document(Web.Contents(securityTokenServiceUrl, [
        Headers = Json.Document(securityHeader)
        ])),
    token = tokenResponse[access_token]

in
    token

我环顾四周,但只能找到关于如何使用匿名授权而不是 Windows 身份验证的建议,正如我需要的那样。我尝试按照 的建议使用自定义数据连接器,但似乎无法正常工作。有没有什么办法可以绕过这个限制并像上面描述的那样传递我的 api 密钥 header?

由于我无法找到解决此 Power BI 限制的方法,我最终创建了一个简单的 Web API,它使用 Windows Auth,没有自定义 headers。 Power BI 调用此 API,进而对服务进行 Windows 身份验证调用(使用自定义 header)并检索所需的持有者令牌。