我正在尝试让 OpenID 身份验证在我的 Azure ASP.NET MVC 3 应用程序中工作,并已按照MVC 3 自定义登录示例中的步骤进行操作。在开发环境中一切正常,但在部署到 Azure 平台时却不行。
第一个问题始于身份验证,导致错误“Key not valid for use in specified state”。这里的讨论表明应用程序需要配置为使用 RsaEncryptionCookieTransform 而不是默认的 DPAPI。为了尝试解决这个问题,我添加了Alik Levin 博客上OnServiceConfigurationCreated
描述的代码,但没有进一步说明,因为它描述了在开发中设置自签名证书(如上所述,这不是必需的),而不是在 Azure 中。
我尝试使用 Azure 中已有的 X.509 证书,而不是这种方法。我在 Windows Azure 管理 > 访问控制服务 > 依赖方应用程序 >(我的应用程序名称)> 令牌签名证书 > 用于服务命名空间(X.509 证书)下找到了指纹。然后我将此引用添加到 web.config:
<serviceCertificate>
<certificateReference x509FindType="FindByThumbprint" findValue="8A417..." />
</serviceCertificate>
现在我在应用程序启动时收到配置错误:
ID1024:配置属性值无效。 属性名称:'certificateReference' 错误:'ID1025:找不到符合条件的唯一证书。 店铺名称:'我的' 存储位置:'LocalMachine' X509FindType: 'FindByThumbprint' FindValue: '8A417...''
我真的需要更改加密方法来解决“密钥在指定状态下无效”错误吗?如果是这样,我如何使用 Azure 中已有的 X.509 证书来加密 cookie?