从Excel VSTO WorkBook中调用Azure AD保护的WebApi

时间:2016-08-19 22:16:39

标签: excel asp.net-web-api asp.net-web-api2 azure-active-directory winforms-to-web

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

我已经搜索了很长一段时间,但找不到任何有关如何运作的指导。

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

2 个答案:

答案 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)

(不是答案)谢谢布莱恩,你的评论对我很有帮助。我无法在评论部分添加更多详细信息。所以我将其添加为答案。这是我面临的错误。它没有打开用于登录的 azure 身份验证窗口。请建议我在哪里进行。 enter image description here