我正在尝试从Excel VSTO WorkBook调用Azure AD保护的WebApi。 这与我们用于SPA应用程序的webApi相同,但现在也希望直接从Excel中使用相同的Api。
我已经搜索了很长一段时间,但找不到任何有关如何运作的指导。
是否有人知道这是否可行,如果可行,应如何实现?
答案 0 :(得分:0)
我昨天碰到了这个并且让它运转了,谢谢this thread。
听起来这个场景暂时没有得到支持,但它现在肯定有效。以下是需要做的事情:
从Excel访问的服务,它应该在某个时刻发回HTTP 401响应,让客户端(Excel)知道需要进行身份验证(这应该已经发生)。然后,Excel将使用标头Authorization: Bearer
向服务发送另一个请求。重要的是要注意Bearer
之后没有任何内容,因为一旦完成身份验证流程,Excel将开始发送具有类似标头的请求,但在{{1}后面会有更多信息,以及那些您应该允许继续通过请求管道的请求。
为了使身份验证流程正常工作,对上述请求的服务响应必须包含以下标头值:
Bearer
引号应该包含在回复中。由于您使用的是Azure AD,因此您的URI将如下所示:
WWW-Authenticate: Bearer authorization_uri="Your auth URI here"
将https://login.microsoftonline.com/{tenantId}/oauth2/authorize
替换为您的租户ID。
我发现这一点起作用的一个警告是,服务域的URL(例如{tenantId}
)必须与App Registration中的App Uri Id匹配。我希望可以解决这个问题,因为我相信我过去曾经读过这不是一个好习惯(虽然我不能再找到这个来源了)。如果还有其他方法可以解决这个问题,我会回来更新我的回答。
答案 1 :(得分:0)