C# 如何验证ASP.Net核心站点中旧VB.Net站点的cookie?
我需要在全新的ASP.Net核心Web API+Angular2项目中使用由旧的VB.Net aspx项目创建的身份验证cookie。我对基于cookie的授权和身份验证非常陌生,公司里没有人知道如何将他们所知道的转化为我正在尝试的 几天的研究和修补让我走到了这一步: 现在我可以根据需要设置[Authorize]属性,并阻止返回常见401错误的访问,但我的站点似乎没有将其站点创建的cookie识别为该锁的众所周知的密钥 在Startup.cs-我没有在“Configure()”方法之外做任何事情,应该吗 我正在将站点配置为使用cookie身份验证,将方案设置为“Cookies”,而不确切知道它的作用,并将“CookieName”设置为通过从旧站点登录创建的身份验证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()”方法之外做任何事情
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>