在 Dynamics CRM Online 中的 iFrame 中托管的 OpenIDConnect Azure 网站

Posted

技术标签:

【中文标题】在 Dynamics CRM Online 中的 iFrame 中托管的 OpenIDConnect Azure 网站【英文标题】:OpenIDConnect Azure Website hosted in an iFrame within Dynamics CRM Online 【发布时间】:2015-06-05 09:14:51 【问题描述】:

我正在尝试从here 获取 OpenIDConnect Azure 示例,该示例在 CRM 的 iFrame 中工作。我已部署到 Azure,直接访问该站点时登录工作正常。

当我通过 CRM Online 中的 iFrame 访问该站点时,它显示正常,但当我尝试登录时,我收到以下错误:

Microsoft.IdentityModel.Protocols.OpenIdConnectProtocolInvalidNonceException: IDX10311: RequireNonce is 'true' (default) but validationContext.Nonce is null. A nonce cannot be validated. If you don't need to check the nonce, set OpenIdConnectProtocolValidator.RequireNonce to 'false'.

经过一番调查,我更新了 OWIN 中间件配置以将 RequireNonce 设置为 false:

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions
    
        ClientId = clientId,
        Authority = authority,
        PostLogoutRedirectUri = postLogoutRedirectUri,
        ProtocolValidator = new Microsoft.IdentityModel.Protocols.OpenIdConnectProtocolValidator()
        
            RequireNonce = false
        
    );

当我现在尝试登录时,我现在遇到了以下异常。

Microsoft.IdentityModel.Protocols.OpenIdConnectProtocolException: invalid_request

任何帮助将不胜感激。我了解 nonce 的使用,但我还没有理解在这个用例中禁用它的全部含义,所以在不需要禁用的情况下让它工作是理想的。

【问题讨论】:

在这里查看我的答案:***.com/a/31269878/121146 设置 RequireNonce = false 实际上对我造成了 invalid_request ,但这最初是有效的,所以似乎微软 OpenId 库的更新现在必须要求它 在 office-addin 上下文中查看此答案(也是沙盒 iFrames)***.com/questions/34947774/… 【参考方案1】:

出于安全原因,身份验证体验不能是 iFramed。此外,关闭 Nonce 验证非常危险——我强烈建议不要这样做。您可以参考 OAuth2 和 OpenId Connect 威胁模型,了解您将面临的风险的具体细节,但是框架破坏逻辑应该没有实际意义。

【讨论】:

以上是关于在 Dynamics CRM Online 中的 iFrame 中托管的 OpenIDConnect Azure 网站的主要内容,如果未能解决你的问题,请参考以下文章

怎样创建一个dynamics 365 CRM online plugin

使用FetchXML制作Dynamics CRM Online 高级报表

创建一个dynamics 365 CRM online plugin - Images in Plugin

创建一个dynamics 365 CRM online plugin - Isolation mode or trust mode

创建一个dynamics 365 CRM online plugin (Not finished)

创建一个dynamics 365 CRM online plugin - Asynchronous Plugins