我已按照以下链接添加单词加载项SSO: https://docs.microsoft.com/en-us/office/dev/add-ins/develop/create-sso-office-add-ins-aspnet
但是文档加载项和API应该在同一个域中,但实际上有两个项目,一个是加载项,另一个是API项目,
在示例中,定义了OpenIdConnectCachingSecurityTokenProvider,API项目中的Startup.Auth
即使我已经在AppStart,Startup.cs和值控制器中添加了这些文件在同一个加载项目中,然后它也无法正常工作。 是我遗漏的东西???
在提供的示例中,当我调用ajax调用url" / api / values"时,在插件中然后它返回404 因为加载项在https://localhost:44355和http://localhost:33172/上的WebAPI上运行,因此找不到资源 这是因为加载项和webAPI项目的域是不同的,因为当我创建任何加载项项目并运行加载项目时,它运行IIS Express中显示的两个应用程序。所以在你的项目中还运行了两个项目,然后是" api / values"将调用http://localhost:33172/的webAPI控制器,并且加载项正在另一个域中运行,即https://localhost:44355。
那么WebAPI和加载项域必须是一样的因为它们分别在不同的URL上运行,例如ashttp:// localhost:33172 /和https://localhost:44355?那怎么可能一样?
我观察到的另一件事是,当我在word调用中加载加载项时运行加载项项时,会进入statrup.cs文件的配置方法以及OpenIdConnectCachingSecurityTokenProvider方法但是在我的加载项调用中没有出现这些方法
加载项如何知道调用这个API项目的方法?在我的情况下,它不会调用该方法 即使我正在获取方法Office.context.auth.getAccessTokenAsync方法的令牌,从哪里获取令牌?
答案 0 :(得分:1)
正如您自己所说,文档说加载项和Web API必须位于同一个完全限定的域中。你不能在localhost:44355和另一个localhost:33172。这可能也是您没有看到OpenIdConnectCachingSecurityTokenProvider调用的原因。
Office.context.auth.getAccessTokenAsync方法从Azure Active Directory获取令牌。此令牌允许Word访问localhost:44355上的加载项,但它不允许访问localhost:33172中的任何内容。