【问题标题】:The host name should not be based on already owned domain主机名不应基于已拥有的域
【发布时间】: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


【解决方案1】:

我已通过将应用程序设为单租户而不是多租户应用程序来解决此问题。 (它是仅适用于当前租户的企业应用程序)。然后将所有端点更改为从 /common/ 映射到租户 guid

现在一切都好。

【讨论】:

    猜你喜欢
    • 2015-01-16
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 2018-08-24
    • 2017-05-04
    • 2014-09-23
    • 2013-12-13
    相关资源
    最近更新 更多