Как поделиться файлом cookie сеанса с приложением Identity Server ASP.NET и OWIN?

Я использую Identity Server v2 вместе с SessionAuthenticationModule.

Я хотел бы добавить новое приложение OWIN (размещенное в IIS), которое может совместно использовать один и тот же файл cookie сеанса "idsrvauth" с моей существующей STS.

Как мне это сделать, пожалуйста?

  1. Может ли SessionAuthenticationModule расшифровать файл cookie сеанса и установить IPrincipal в приложении OWIN?
  2. Или мне следует использовать промежуточное ПО OWIN для этого? Существует ли промежуточное ПО или мне нужно будет написать новое?

У меня есть один и тот же machineKey в каждом web.config, но при доступе к сайту OWIN я получаю CryptographicException:

CryptographicException: Error occurred during a cryptographic operation.
 System.Web.Security.Cryptography.HomogenizingCryptoServiceWrapper.HomogenizeErrors(Func`2 func, Byte[] input) +246
 System.IdentityModel.Services.MachineKeyTransform.Decode(Byte[] encoded) +200
 System.IdentityModel.Tokens.SessionSecurityTokenHandler.ApplyTransforms(Byte[] cookie, Boolean outbound) +173
 System.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(XmlReader reader, SecurityTokenResolver tokenResolver) +752
 System.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(Byte[] token, SecurityTokenResolver tokenResolver) +99
 System.IdentityModel.Services.SessionAuthenticationModule.ReadSessionTokenFromCookie(Byte[] sessionCookie) +1233
 System.IdentityModel.Services.SessionAuthenticationModule.TryReadSessionTokenFromCookie(SessionSecurityToken& sessionToken) +314
 System.IdentityModel.Services.SessionAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs eventArgs) +243
 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80
 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +165

person Calvin Earp    schedule 02.06.2015    source источник
comment
Вместо этого я решил разделить отдельный файл cookie между двумя приложениями и сделать первое приложение ответственным за создание данных сеанса. В файле web.config второго (OWIN) приложения я удаляю SessionAuthenticationModule.   -  person Calvin Earp    schedule 29.06.2015


Ответы (1)


У меня была аналогичная проблема, и в моем случае отсутствовал validation="SHA1" в элементе <machineKey ... >.

Согласно MSDN, это вариант по умолчанию. , но только после того, как я добавил, что моя криптография на основе машинного ключа начала работать на двух сайтах.

person TarasB    schedule 10.09.2015