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

时间:2015-03-31 21:12:34

标签: azure iframe dynamics-crm-online azure-active-directory openid-connect

我正在尝试从CRM中的iFrame中的here获取OpenIDConnect Azure示例。我已经部署到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的使用,但是我还没有理解在这个用例中禁用它的全部意义,所以在不需要禁用的情况下使其工作是理想的。

1 个答案:

答案 0 :(得分:3)

出于安全原因,无法使用iFramed进行身份验证。此外,关闭Nonce验证非常危险 - 我强烈建议不要这样做。您可以参考OAuth2和OpenId Connect威胁模型,以获取有关您将要承担的风险的具体细节,但是框架破坏逻辑应该使这一点没有实际意义。