2

我正在使用 Identity Server v2 和 SessionAuthenticationModule。

我想添加一个新的 OWIN 应用程序(托管在 IIS 中),它可以与我现有的 STS共享相同的会话 cookie“ idsrvauth ”。

请问我该怎么做?

  1. SessionAuthenticationModule 可以解密会话 cookie 并在 OWIN 应用程序中设置 IPrincipal 吗?
  2. 或者我应该使用 OWIN 中间件来做到这一点?是否有现有的中间件或者我需要编写新的中间件?

我在每个 web.config 中都有相同的machineKey,但是在访问 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
4

1 回答 1

0

我有类似的问题,就我而言,它validation="SHA1"<machineKey ... >元素中丢失了。

根据MSDN,它是默认的,但只有在明确添加后,我的基于机器密钥的加密开始在 2 个站点上工作。

于 2015-09-10T15:54:46.453 回答