gpt4 book ai didi

c# - 如何仅使用 AspNet.Identity 在站点之间发送和接收身份验证票

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:37 24 4
gpt4 key购买 nike

我有一个站点 - account.mysite.com,它只在我的系统中注册/登录用户。我想在一个站点中检查用户的电子邮件和密码并向另一个站点发送一些内容,这绝对决定了谁登录。

我可以使用 FormsAuthentication 吗?

    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(name, true, 60);
string encrypted = FormsAuthentication.Encrypt(ticket);
return "mysite.com?" + FormsAuthentication.FormsCookieName + "=" + encrypted;

或者我是否需要使用 aspNet.Identity 中的某些功能?如果是,我该怎么做?谢谢。

最佳答案

如果您使用的是 MVC 5,那么您还应该使用 Identity。但是,无论您使用 ASP.NET Membership (forms auth) 还是 Identity 都与此无关。

简单地说,在任何一种方案中,都会设置一个身份验证 cookie。这决定了用户的“登录”状态。对于每个请求,用户的浏览器都会将 cookie 发送回服务器,服务器会对其进行验证,并判断用户是否已通过身份验证。

因此,这一切都归结为确保 auth cookie 在您的不同站点之间共享,并且可以被您的每个站点读取和验证。

首先,cookies是受域限制的。如果在 account.mysite.com 上设置了 cookie,那么它将发送到 account.mysite.com。但是,您可以将其设置为通配符,以便将其发送到 *.mysite.com 上的任何内容。这将允许 account.mysite.com 设置 cookie 并仍然将其发送到类似 subdomain.mysite.com 的地方。但是,如果您有完全不同的域,例如 account.mysite.com 并且您希望它在 foo.com 上登录,那是不可能的。处理这种情况的唯一方法是设置一个 SSO 实现,它非常重要,远远超出了此处可以合理回答的范围。整个公司都只致力于为组织设置 SSO。

因此,假设您没有处理不同的域,并且您至少可以让每个站点获得相同的 cookie,那么下一部分就是解密该 cookie。身份验证 cookie 在设置之前已加密,因此只能由知道如何解密它的站点读取。加密基于机器 key ,因此基本上,您的所有站点都需要共享相同的机器 key 。有关详细信息,请参阅:https://technet.microsoft.com/en-us/library/cc755177(v=ws.10).aspx

关于c# - 如何仅使用 AspNet.Identity 在站点之间发送和接收身份验证票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36428374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com