Мне пришлось заменить обработчик токена сеанса следующим, из-за необходимости запуска моего сайта на балансировщиках нагрузки.
public class WebFarmSessionSecurityTokenHandler : SessionSecurityTokenHandler
{
public WebFarmSessionSecurityTokenHandler(X509Certificate2 protectionCertificate)
: base(CreateRsaTransforms(protectionCertificate))
{ }
private static ReadOnlyCollection<CookieTransform> CreateRsaTransforms
(X509Certificate2 protectionCertificate)
{
var transforms = new List<CookieTransform>()
{
new DeflateCookieTransform(),
new RsaEncryptionCookieTransform(protectionCertificate),
new RsaSignatureCookieTransform(protectionCertificate),
};
return transforms.AsReadOnly();
}
}
Затем я изменил файл web.config следующим образом.
<microsoft.identityModel>
<service>
...
<securityTokenHandlers>
<clear />
<add type="MyAssembly.WebFarmSessionSecurityTokenHandler, MyAssembly"/>
</securityTokenHandlers>
...
</service>
</microsoft.identityModel>
После этого я надеялся, что моя проверяющая сторона будет функционировать независимо от того, к какому узлу он обращается или какой ящик инициирует аутентификацию.
В настоящее время я получаю следующее: SecurityTokenHandler не зарегистрирован для чтения токена безопасности.
Есть идеи?