.NET核心Auth Cookie共享

时间:2020-03-16 13:54:45

标签: .net .net-core authorization

我有SSO实现要实现,并且我有2个共享auth cookie的应用程序。

这是第一个应用程序(登录表单应用程序)中的ConfigureServices方法的代码:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddHttpClient();

        services.AddDataProtection()
            .PersistKeysToFileSystem(new DirectoryInfo(@"C:\Tylde\Progetti\_commonCookies"))
            .SetApplicationName("NAU");

        services.AddAuthentication("AuthCookie")
            .AddCookie("AuthCookie", config =>
            {
                config.Cookie.Name = "User.Cookie";
                config.LoginPath = "/Authentication/SignIn";
            });

        services.AddControllersWithViews();
        services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
    }

这是第二个中的ConfigureServices方法的代码:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDataProtection()
            .PersistKeysToFileSystem(new DirectoryInfo(@"C:\Tylde\Progetti\_commonCookies"))
            .SetApplicationName("NAU");

        services.AddControllersWithViews();
    }

现在在本地IIS中配置了应用程序,其URL为:

http://localhost:8081/Authentication/SignInhttp://localhost:8082/Home

有人可以帮助我吗?

谢谢,抱歉我的英语!

1 个答案:

答案 0 :(得分:0)

基于您在多个域之间共享Cookie的选择,您可以执行以下步骤

  1. 定义两个应用程序的域,例如app1.product.comapp2.product.com
  2. 您可以将本地计算机的hosts文件设置为指向。通常在以下路径(Windos OS:C:\Windows\System32\drivers\etc或Linux OS:/etc/hosts)中找到hosts文件

127.0.0.1至app1.product.com app2.product.com

  1. 浏览应用程序时,您可以使用上面的伪造域,以便您可以设置cookie域并在本地环境中对其进行测试。

所做的假设是您具有自定义身份验证,但是,当您更喜欢将任何授权服务器与Bearer令牌一起使用时,最好在中间件级别使用令牌处理验证,这样您就不必依赖cookie作为cookie并不是很安全,如果您希望使用仅cookie的SSO,请将cookie的http属性设置为true。

HTH