Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何验证ASP.Net核心站点中旧VB.Net站点的cookie?_C#_Asp.net_Vb.net_Authentication_Asp.net Core - Fatal编程技术网

C# 如何验证ASP.Net核心站点中旧VB.Net站点的cookie?

C# 如何验证ASP.Net核心站点中旧VB.Net站点的cookie?,c#,asp.net,vb.net,authentication,asp.net-core,C#,Asp.net,Vb.net,Authentication,Asp.net Core,我需要在全新的ASP.Net核心Web API+Angular2项目中使用由旧的VB.Net aspx项目创建的身份验证cookie。我对基于cookie的授权和身份验证非常陌生,公司里没有人知道如何将他们所知道的转化为我正在尝试的 几天的研究和修补让我走到了这一步: 现在我可以根据需要设置[Authorize]属性,并阻止返回常见401错误的访问,但我的站点似乎没有将其站点创建的cookie识别为该锁的众所周知的密钥 在Startup.cs-我没有在“Configure()”方法之外做任何事情

我需要在全新的ASP.Net核心Web API+Angular2项目中使用由旧的VB.Net aspx项目创建的身份验证cookie。我对基于cookie的授权和身份验证非常陌生,公司里没有人知道如何将他们所知道的转化为我正在尝试的

几天的研究和修补让我走到了这一步: 现在我可以根据需要设置[Authorize]属性,并阻止返回常见401错误的访问,但我的站点似乎没有将其站点创建的cookie识别为该锁的众所周知的密钥

Startup.cs-我没有在“Configure()”方法之外做任何事情,应该吗

我正在将站点配置为使用cookie身份验证,将方案设置为“Cookies”,而不确切知道它的作用,并将“CookieName”设置为通过从旧站点登录创建的身份验证cookie的名称

 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
          {
              // Stuff eliminated for brevity

              // Set up pipeline
              app.UseDefaultFiles();
              app.UseStaticFiles();
              //app.UseIdentity(); (Don't think I need this??)

            app.UseCookieAuthentication(new CookieAuthenticationOptions()
            {
                AuthenticationScheme = "Cookies", //(Dont actually know what this does. Should I create my own middlewares? I mean what is this magic string "Cookies"? It's just from tutorials/examples...)
                LoginPath = new PathString("/base_site/login.aspx"),
                AccessDeniedPath = new PathString("/base_site/logon.aspx"), // Might want to create an error page...
                CookieName = "companyName_AccessLevel", //This is what he had in <forms name="companyName_AccessLevel">
                ReturnUrlParameter = "index.html", //What youd put in <forms defaultUrl="index.html">
                AutomaticAuthenticate = true,
                AutomaticChallenge = true

            });

            app.UseMvc();
        }
public void配置(IApplicationBuilder应用程序、IHostingEnvironment环境、iLogger工厂)
{
//为简洁起见删去了一些东西
//设置管道
app.UseDefaultFiles();
app.UseStaticFiles();
//app.UseIdentity();(我想我不需要这个??)
app.UseCookieAuthentication(新的CookieAuthenticationOptions()
{
AuthenticationScheme=“Cookies”、/(实际上不知道这是什么功能。我应该创建自己的中间件吗?我的意思是这个神奇的字符串“Cookies”是什么?它只是来自教程/示例…)
LoginPath=新路径字符串(“/base\u site/login.aspx”),
AccessDeniedPath=new PathString(“/base\u site/logon.aspx”),//可能要创建一个错误页。。。
CookieName=“companyName\u AccessLevel”//这是他在
ReturnUrlParameter=“index.html”,//输入的内容
自动验证=真,
自动挑战=真
});
app.UseMvc();
}
坦率地说,与我的同事根据其asp.net经验提出的建议相比,这一切似乎非常复杂:

“只要把这个放到你的web.config”他告诉我


所以他当然不太热衷于和我研究这个“另一种方式”。我可以恢复到web.config吗

要跨应用程序配置表单身份验证,请设置 Web.config文件的窗体和machineKey部分的属性 为参与的所有应用程序设置相同的值 共享表单身份验证


Cookie是加密的,您必须使用类似的加密技术和共享密钥才能跨两个不同的站点读取Cookie。有一个Nuget软件包,允许您配置旧的asp.net 4.x站点,以便与核心站点共享cookie。这是它的官方文件

 <system.web>
    <authentication mode="Forms">
      <forms name="companyName_AccessLevel" loginUrl="/base_site/login.aspx" protection="All" timeout="60" defaultUrl="index.html"/>
    </authentication>
    <authorization>
      <deny users="?"/>
    </authorization>
  </system.web>