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

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

我已经search了一段时间,找不到任何指导如何工作。

有谁知道这是否可能,如果是的话应该如何实现?

我昨天碰到这个,并得到它的工作,感谢这个线程 。

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

从Excel访问的服务,它应该发回一个HTTP 401响应,让客户端(Excel)知道需要身份validation(这应该已经发生了)。 然后,Excel将发送另一个请求到头部Authorization: Bearer 。 重要的是要注意,在Bearer之后没有任何事情发生,因为一旦validationstream程完成,Excel将开始发送具有类似标题的请求,但是在Bearer这个词之后将会有更多的信息,并且这些请求应该允许通过请求pipe道。

为了使validationstream程正常工作,对上述请求的服务响应必须包含以下标题值:

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

报价应该包含在回复中。 由于您使用的是Azure AD,因此您的URI将如下所示:

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

用您的租户IDreplace{tenantId}

我发现这个工作的一个警告是,该服务的域(例如http://my.domain.com )的URL必须与App注册中的App Uri Id相匹配。 我希望有一个解决办法,因为我相信我已经读过,这不是一个好的做法(虽然我不能find源)。 如果还有其他方法来处理这个问题,我会回来更新我的答案。