如何创建身份验证 cookie,但不使用 asp.net formsauthentication?
我们是否知道 asp.net 用于创建身份验证 cookie 的算法(当使用表单身份验证时?)
我们基本上可以创建自己的副本实现吗?如果是这样,怎么办?
它使用什么来生成加密的 cookie 值,我知道它使用您传递到 SetAuthCookie 调用中的任何内容(通常是用户 ID/用户名)。
Do we know the algorithm that asp.net uses to create the authentication cookie (when using forms authentication?)
Can we basically create our own copy implementation? if so, how?
What does it use to generate the encrypted cookie value, I know it uses whatever you pass into the SetAuthCookie call (which is usually the userID/username).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
表单身份验证使用成员资格标识符,这是由配置的成员资格提供程序提供的唯一值。然后,它采用该值,加上票证中的任何用户数据集,将其转换为二进制 blob,添加发行日期、到期日期,并根据配置,使用机器密钥使用 HMAC 对其进行签名,使用机器钥匙,或者什么都不做(坏主意!)。
然后它将 cookie 作为仅 HTTP cookie 写出。
然后,在每个请求中,它都会加载它,验证它,使用成员身份标识符来查找用户,并填充该线程上的用户详细信息。如果设置了滑动票据到期日,它将刷新 cookie 以获取新的到期日。
The forms authentication take uses the membership identifier, a unique value provided by the configured membership provider. It then takes that value, plus any user data set in the ticket turns it into a binary blob, adds an issue date, an expiry date and depending on the configuration either signs it with an HMAC using the machine key, signs and encrypts it with the machine key, or does nothing at all (bad idea!).
It then writes the cookie out as an HTTP only cookie.
Then on each request it loads it in, validates it, uses the membership identifier to lookup the user, and populates the user details on that thread. If sliding ticket expiry is set it will refresh the cookie to have a new expiry date.