我在ASP.NET MVC WebApplication
中创建了一个新的Visual Studio 2015
,其中包含使用学校或工作帐户对AzureAD
进行身份验证的选项。这很好。
然后我将项目转换为Office项目的应用程序作为Excel任务窗格加载项。
然后,当我启动应用程序时,它会启动一个带有任务窗格的Excel电子表格,其中显示了使用Microsoft登录的请求。选择帐户或选择使用其他帐户登录时,我会在新浏览器中重定向到login.mocrosoft.com但收到以下错误:
IDX10311:RequireNonce是' true' (默认)但validationContext.Nonce 一片空白。 nonce无法验证。如果你不需要检查 nonce,将OpenIdConnectProtocolValidator.RequireNonce设置为' false'。
新浏览器中显示的网址为" https://localhost:44300/"因为我在本地调试我接受它。
这是一个问题,因为身份验证来自Task-Pane
吗? Task-Pane
与iFrame
相同吗?如果是,则可能与以下问题类似:OpenIDConnect Azure Website hosted in an iFrame within Dynamics CRM Online
我可以简单地将RequiredNonce
设置为false吗?如果是这样的话?
请帮助我针对App for Office
创建Authentication
AzureAD / Office365Domain
?我正在验证的AzureAD
是我目前的私人免费MSDN订阅,希望将来能够使用该公司的Office365 AzureAD。
我正在使用Office2016
,VS2015
,Microsoft.Office.js
版本1.1.0.9。
答案 0 :(得分:0)
首先,执行您要查找的内容是可行的,请查看我的加载项:Keluro Mail Team。继续工作,你会设法让事情发挥作用^^。
<强>步骤1 强>
首先,从最简单的场景开始:您的身份验证过程应该在标准窗口中工作,我们稍后会看到沙盒的iFrame。在直接浏览“应用程序”时检查您的OAUTH流程,即将您的身份验证测试为一个普通的常规Web应用程序,在https://localhost:44300/“的情况下提供。为了避免javascript错误,请删除所有与Office.js相关的内容和Office 。初始化功能。
从处理 Nonce 的错误消息中,我打赌您正在实施代码授权流程。这应该或多或少看起来像sample。在此代码授权流程中,令牌和REST请求由服务器使用授权令牌生成。同时,您的服务器和Web应用程序之间的身份验证是使用普通的asp.NET cookie进行的(至少在上面的示例中)。这个场景可以用于我们的目的,我也使用它。要完成此步骤,请尝试请求一些与Office.js无关但仅与Office 365 REST API相关的基本内容。简而言之,忘记您的开发和Office加载项,即开发Office 365 Web应用程序的图像。
<强>第二步强>
现在您已完成 Step1 ,您可以转到步骤2:在Office中的沙盒iFrame中使用。看看Richard DiZerega的blog post。这是在沙盒环境中处理OAUTH流的最合理方法。如果您使用上面步骤1中提到的示例,则使用asp.NET cookie进行服务器和应用程序之间的身份验证。接下来,理查德的指南可以在弹出OAUTH流程完成后将其保存在服务器端cookie字典中,然后在原始iFrame的请求中设置它。要识别这两个窗口对应于同一个用户,您可以生成(加密安全!)一个ID,您可以在这两个请求中传递(参数以https加密)。好的,这很复杂,但确实有效。 Richard谈到的SignalR技术对于用户体验是一个加分,但不是强制性的,可以是 Step3 。
答案 1 :(得分:0)
我通过将https://login.microsoftonline.com和https://login.live.com添加到App Manifest中的App域来解决了我的问题。我不理解这项技术,所以我无法评论为什么会这样,但解决方案对我有用。