【发布时间】:2019-09-28 02:37:22
【问题描述】:
我已经下载了应用程序 (https://github.com/OfficeDev/Office-Add-in-ASPNET-SSO) 并运行没有任何问题。我基于它创建了一个新的 Outlook 加载项。按照文档 (https://docs.microsoft.com/en-us/office/dev/add-ins/develop/register-sso-add-in-aad-v2) 成功设置应用注册及其设置。
项目运行良好,能够从 Outlook 客户端与 OneDrive、Graph 进行通信,没有任何问题。到目前为止一切顺利。
问题: 当我将代码部署到 Azure 应用服务并尝试将 APP ID URI 添加为我的 azurewebsites.net url 时,它开始引发问题。
问题 1: 如果我在应用 id url 中使用 azurewebsites.net url,那么我无法将应用配置为多租户。但是,文档说它应该配置为多租户应用程序。
问题 2: 如果我仅在应用程序注册的身份验证中将其范围缩小到当前租户,那么它允许我设置应用程序 id url(公开 api)罚款。但是,它无法验证令牌,因为它总是抛出无效令牌。 Outlook getaccesstoken 工作正常,但是当我将该令牌传递给控制器时,代码中使用的方法 ClaimsPrincipal.Current 总是失败。
我在这里 (https://github.com/OfficeDev/office-js-docs-pr/issues/40) 读到它可能需要自定义域,因为不支持 azurewebsites.net 来证明所有权。但是,我无法为这种情况获取自定义域。如果有人对此问题有解决方法或需要更多信息,请告诉我。
我已尝试将应用程序更改为仅限单租户。但是,来自 Outlook 客户端的令牌未在我的 asp.net Web api 控制器中验证。它始终为空
var scopeClaim = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/scope");
如果我将应用程序更改为多租户应用程序,则无法将 azurewebsites.net 网址添加到应用程序 ID 网址。
【问题讨论】:
-
你看到了吗? Using SSO with an Outlook Add-in。另外,您为什么不能创建自定义域?
-
另外,“Outlook getaccesstoken”是什么意思?你的意思是
Office.context.auth.getAccessTokenAsync?如果是这样,该方法返回的令牌的范围是什么? -
@RickKirkham 感谢您的回复。我已经关注了这篇文章,正如我在回复 url 中提到注册 localhost 一样,app id url 可以正常工作,没有任何问题。当我将我的 web api 项目发布到 azure (azurewebsites.net) url 时,问题就开始了,正如我上面提到的那样。
-
注册自定义域我的客户不允许,因为他们不想为此拥有域。是的,我正在使用 getAccessTokenAsync 并且范围映射到我在 AAD 注册中(公开 api)中配置的 acess_as_user。 "scp": "access_as_user",
-
您需要使用您拥有的域。如果您的客户不这样做,则无法在 azurewebsites.net 中托管外接程序。
标签: office-js outlook-web-addins