在 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