现在所有。
在 AppHarbor 上使用 Identity and Access 和 Azure STS 的 MVC 应用程序遇到一些问题,给出“密钥在指定状态下无效”错误。
据我所知,这是由于使用机器密钥的默认加密,这显然不适用于负载平衡的 scnario。
我尝试用 RSA 类 RsaEncryptedSessionSecurityTokenHandler 替换: SessionSecurityTokenHandler
这会选择一个要使用的 pfx 文件密钥(使用 SelfCert 创建),但是虽然这在本地工作,但它在 appharbor 站点上不起作用: System.Security.Cryptography.CryptographicException: Keyset does not exist 我猜这是因为密钥不仅仅与文件相关联。
那么如何解决原来的问题呢?一直在寻找解决方案的一天,但似乎没有任何东西适用于这种情况。
TIA
编辑:我尝试过修改此代码:SessionSecurityTokenHandler 尝试使用 DPAPI 解密 RSA 加密 cookie 中的 SessionSecurityToken;为什么?
用于新的 WIF 4.5 内容,如下所示:
List<CookieTransform> sessionTransforms = new List<CookieTransform>(new CookieTransform[]
{
new DeflateCookieTransform()
,
new RsaEncryptionCookieTransform
(e
.FederationConfiguration
.IdentityConfiguration
.ServiceCertificate)
,
new RsaSignatureCookieTransform
(e
.FederationConfiguration
.IdentityConfiguration
.ServiceCertificate)
});
SessionSecurityTokenHandler sessionHandler =
new SessionSecurityTokenHandler(sessionTransforms.AsReadOnly());
e.FederationConfiguration.IdentityConfiguration.SecurityTokenHandlers.AddOrReplace(sessionHandler);
但 e.ServiceCertificate 始终为空。
有什么想法吗?