微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 多个网站,单点登录设计

我有个问题.最近我一直在做一些工作的客户有一系列具有不同登录机制的网站.他正在寻求慢慢迁移到他的网站的一个单一的登录机制(全部写在asp.net mvc中).

我在看这里的选择,所以这里有一个要求的列表:

它必须是安全的(呃)
>它需要支持超出通常名称的额外的用户属性,地址(例如用户的钱或信用)
>为了方便起见,它必须提供一个集中的用户管理Web控制台(我知道这将是一个小项目,而不管我选择的任何设计解决方案)
>它必须与现有网站集成,而无需重新整理产品(我明白这取决于当前的产品实现).
>它必须处理在注册时向用户发送电子邮件(为了激活他的帐户)
>当他点击电子邮件中的激活我的链接时,必须处理激活用户(我明白5和6需要某种形式的电子邮件模板系统来支持每个应用程序的不同邮件)

我正在考虑创建一个与表单身份验证相结合的图书馆,公开任何所需的方法(例如登录,注销,激活等等)和小型的休息服务,以实现从电子邮件,注册处理等方面的激活.

考虑到大量的东西被遗漏了,使这个问题很简单,到目前为止,这听起来像一个好的设计?

但这看起来是一个非常常见的问题,所以没有任何现有的项目,我可以使用?

谢谢阅读.

解决方法

要实现的基本要求是,您无法使用跨多个域使用标准Forms身份验证身份验证用户.例如,dev.google.com和www.google.com是不同的域名,如果用户登录dev.google.com,则不会自动登录到www.google.com,除非Google执行此操作.这是因为浏览器无法访问其他网站的Cookie.

真正使跨域登录正常工作的唯一方法是在网站检查的URL的查询字符串中包含一个关键值,如会话ID,并设置用户的身份验证cookie.您可以通过使用您自己的一小部分自定义代码通过您的站点手动执行此操作.

示例:http://www.example.com/autoLogin.aspx?sessionid=23232323

这种方法的危险在于,有人可以通过查找用户使用的地址并检查会话ID来欺骗用户会话.因此,您需要确定用于跨域的身份验证的值是时间的感觉和动态.不要使用户用户名用户名或类似的内容.

现在,如果网站在同一个域上,您可以给他们所有相同的MachineKey,然后当同一个域上的不同网站移动时,已经登录一个站点用户将不会被注销.

原文地址:https://www.jb51.cc/csharp/97197.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐