在2个以上的ASP.Net MVC Core应用程序之间共享凭据的最佳方式是什么,这意味着用户可以登录到一个应用程序并可以访问其他应用程序。这些应用程序适用于外部客户端,但将托管在同一服务器上。我正在寻找最简单的解决方案,除非绝对必要,否则我不想实施OAuth服务器。我考虑过以下几种选择:
答案 0 :(得分:1)
这取决于一个主要问题:网站部署的域名是什么?基于会话的身份验证(网站使用的)取决于客户端上设置的cookie。重要的是,cookie是域绑定的。换句话说,cookie只能被共享"如果Cookie域设置为通配符,则位于同一域中的站点或同一域上的子域。
那就在那里定义了你的整个方法。如果您有abc.com/site1
和abc.com/site2
甚至site1.abc.com
和site2.abc.com
之类的内容,则可以共享Cookie。但是,如果您正在处理abc.com
和xyz.com
,那么您就会被解雇。
如果所有网站都在同一个域(或同一域上的子域),那么您需要确保的是所有网站都使用相同的数据保护设置。在以前的ASP.NET站点中,加密是通过"机器密钥"来处理的,因此您只需确保共享机器密钥。 ASP.NET Core使用不同功能的数据保护,但基本原则仍然存在。所有站点的所有设置都需要相同,因此它们基本上都以相同的方式加密和解密。由于auth cookie是加密的,因此共享该cookie是绝对必需的。谢天谢地,Microsoft has a guide for doing this。
如果网站位于完全不同的域中,则无法共享身份验证Cookie 。期。完全停止。您唯一的选择就是Identity Server。