Can ASP.NET Identity cookies是否与Forms Authentication向后兼容



我有一些现有的ASP。NET MVC的web应用程序。NET成员资格和表单身份验证,并且使用OWIN,但我希望在中开发新的应用程序。NET Core 1.1使用IdentityServer4进行身份验证。我有一个使用自定义用户存储实现的IdentityServer,因此现有用户来自旧的ASP。NET成员数据库可以登录到我的IdentityServer(请参阅这个StackOverflow问题以了解更多信息(,但是ASP创建的身份验证cookie。使用表单身份验证的旧应用程序无法识别NET标识。

我希望在旧的Forms Authentication应用程序和使用ASP的新应用程序之间进行单点登录。NET Identity,最好对旧的应用程序进行尽可能少的更改。有没有办法制作ASP。NET Identity生成Forms authentication可以理解的身份验证cookie?

我认为在这两种情况下,cookie的内容都是序列化和加密的ClaimsPrincipal,所以我的主要障碍似乎是同时获得Forms Authentication应用程序和ASP。NET Identity应用程序在加密/解密cookie方面位于同一页面上。由于Forms Authentication使用web.config文件中的<machineKey>元素和ASP。NET标识。NET Core使用DPAPI,我必须弄清楚如何弥补这一差距。也许是这样的?

启动.cs

public void ConfigureServices(IServiceCollection services)
{
...
services.Configure<IdentityOptions>(options =>
{
...
options.Cookies.ApplicationCookie.DataProtectionProvider = 
new FormsAuthenticationDataProtector();
...
});
}

FormsAuthenticationDataProtector.cs

public class FormsAuthenticationDataProtector : IDataProtector
{
public IDataProtector CreateProtector(string purpose)
{
return this;
}
public byte[] Protect(byte[] plaintext)
{
// TODO: Mimic the Forms Authentication encryption algorithm.
}
public byte[] Unprotect(byte[] protectedData)
{
// TODO: Mimic the Forms Authentication decryption algorithm.
}
}

但我不知道Protect()Unprotect()方法的主体应该是什么

我与几个ASP。NET Identity和IdentityServer开发人员在GitHub上确实很有帮助。我关于在Forms Authentication和ASP之间共享cookie的问题的简短答案。NET标识是";你疯了"幸运的是,还有一些选择。

Brock Allen向我介绍了IdentityServer的GitHub repo,以获取客户端示例。对我来说,我认为MvcFormPostClient的例子会成功。实际上,在没有OWIN或ASP的旧MVC应用程序中实现OpenIDConnect并不难。NET标识。

相关内容

  • 没有找到相关文章

最新更新