如何禁用.Net Core中的Cookie密钥加密?

时间:2019-10-10 09:56:11

标签: asp.net-core .net-core

我有两个应用程序(在同一个域中):第一个在Nodejs上创建(express-session),第二个在.Net Core上创建。 登录提供商是1个应用程序。

2应用程序-获取身份验证Cookie,必须启动会话。会话缓存保存到Mongodb中。 现在2个应用程序运行良好。但是它总是使用加密密钥重新创建cookie。在Mongodb会话中保存的密钥未加密。

哪里有问题?当用户想要返回1个应用程序时,他会看到登录页面。因为1个应用无法识别加密的Cookie密钥。

我认为最好的方法-在2个应用中禁用cookie密钥加密。

在我看来(对不起,我是初学者),使用加密工程服务。AddDataProtection()。

public class AppDistributedSessionStore : ISessionStore
    {
        DistributedSessionStore innerStore;
        IStartSession startSession;

        public AppDistributedSessionStore(IDistributedCache cache,
        ILoggerFactory loggerFactory, IStartSession startSession)
        {
            innerStore = new DistributedSessionStore(cache, loggerFactory);
            this.startSession = startSession;
        }

        public ISession Create(string sessionKey, TimeSpan idleTimeout, TimeSpan ioTimeout, Func<bool> tryEstablishSession, bool isNewSessionKey)
        {
           // temp
            sessionKey = "Sfdfd_fddddufd45454dfdfdfre.WFCpMxXnpfdfdfdf7878dfdf7d8fd";
            ISession session = innerStore.Create(sessionKey, idleTimeout, ioTimeout,
            tryEstablishSession, isNewSessionKey);
            if (isNewSessionKey)
            {
                startSession.StartSession(session);
            }
            return session;
        }
    }

Startup.cs

services.AddSingleton<IStartSession, InitSession>();
services.AddSingleton<ISessionStore, AppDistributedSessionStore>();

services.AddSession(o =>
            {
                o.Cookie.Name = "app_session";
                o.Cookie.Path = "/";
                o.Cookie.IsEssential = true;               
            });
services.AddMongoDbCache(options =>
            {
                options.ConnectionString = Configuration.GetSection("NoSqlSettings")["ConnectionString"];

                options.DatabaseName = "appdb";
                options.CollectionName = "sessions";
                options.ExpiredScanInterval = TimeSpan.FromMinutes(10);

            });

2的应用始终把新的cookie与加密的密钥,如:CfDJ8LDy%2F5e6ELtApkua%2Bim6shYlqsO8GwVMf%2FKtOGSJzr6tCS8c%2BvIMG%2FopD%2BWrclJin07WBDSwRp66TPeDTCFI4Mu%2BWn2RsYY06JsvkQAqRIVXc0TZBIGOKGzqD1KouKLpv%2F9m63z2tUsA2plTddJj6j6oewul4z%2FnrL4GUFJ1XM%2BWW

如何停止加密密钥?我想查看带有密钥的Cookie:“ Sfdfd_fddddufd45454dfdfdfre.WFCpMxXnnpdfdfdf7878dfdf7d8fd”

0 个答案:

没有答案