3

我正在尝试从 Excel VSTO WorkBook 调用受 Azure AD 保护的 WebApi。这与我们用于 SPA 应用程序的 webApi 相同,但现在还想直接从 Excel 使用相同的 Api。

我已经搜索了很长时间,但找不到任何关于这应该如何工作的指导。

有谁知道这是否可行,如果可以,应该如何实现?

4

2 回答 2

2

我昨天遇到了这个并让它工作了,谢谢这个线程

听起来这种情况一度不受支持,但现在确实有效。以下是需要做的事情:

从 Excel 访问的服务,它应该在某个时候发回 HTTP 401 响应,让客户端 (Excel) 知道需要身份验证(这应该已经发生了)。然后 Excel 将向服务发送另一个请求,其中包含 header Authorization: Bearer。重要的是要注意后面没有任何内容Bearer,因为一旦身份验证流程完成,Excel 将开始发送带有类似标头的请求,但单词后面会有更多信息Bearer,并且您应该允许这些请求继续通过请求管道.

为了使身份验证流程正常工作,对上述请求的服务响应必须包含以下标头值:

WWW-Authenticate: Bearer authorization_uri="Your auth URI here"

引号应该包含在响应中。由于您使用的是 Azure AD,因此您的 URI 将如下所示:

https://login.microsoftonline.com/{tenantId}/oauth2/authorize

替换{tenantId}为您的租户 ID。

我发现要让它起作用的一个警告是,服务域的 URL(例如http://my.domain.com)必须与应用注册中的应用 Uri Id 匹配。我希望有办法解决这个问题,因为我相信我过去读过这不是一个好习惯(尽管我再也找不到源了)。如果有另一种方法来处理这个问题,我会回来更新我的答案。

于 2017-02-10T12:47:06.063 回答
0

(不是答案)谢谢布赖恩,你的评论对我很有帮助。我无法在评论部分添加更多细节。所以我将其添加为答案。这是我面临的错误。它没有打开天蓝色的身份验证窗口来登录。请建议我在哪里进行。 在此处输入图像描述

于 2021-07-27T06:30:41.153 回答