ASP.NET+C# website 实现SSO (域用户自动登陆,非域用户通过FORM认证)

lyhyp 2009-07-11 06:04:43
我现在做了一个站点,实现用的ASP.NET+C#(Framework 2.0),在用户登陆时要实现域用户可以自动登陆,而非域用户要通过FORM输入用户名和密码才能登陆,请教做过的高手指点. 注:本人新手,请指点详细些,谢谢先
...全文
2430 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
明明如月 2011-10-25
  • 打赏
  • 举报
回复
楼主实现了么?拿出来share一下吧,我遇到类似的问题:对AD用户进行Form验证。
ghb9812052 2011-08-15
  • 打赏
  • 举报
回复
fdafdafdas
LingFengChen 2011-02-10
  • 打赏
  • 举报
回复
汗。。
看来要学的不少了。。
S314324153 2010-08-03
  • 打赏
  • 举报
回复
偶正有同样的疑问
WEBCONFIG 2009-08-17
  • 打赏
  • 举报
回复
请问楼主最终是怎么实现的啊?
能不能分享一下
lfywy 2009-07-28
  • 打赏
  • 举报
回复
可以参考我发表的文章:
http://blog.csdn.net/lfywy/archive/2008/10/16/3084546.aspx
http://blog.csdn.net/lfywy/archive/2008/07/16/2659014.aspx
lyhyp 2009-07-15
  • 打赏
  • 举报
回复
谢谢Jinglecat的回复,我是个新手,这下可惨大了,慢慢学习ing
Jinglecat 2009-07-13
  • 打赏
  • 举报
回复
总结之,想必 LZ 不管 Intranet 还是 Extranet 都是要用 NTML ,这样才简单呢
那么只需要一个站点,这个站点在 IIS 中 选择 Widnows 集成验证 就可以了,
至于怎么验证的,那是 AD IIS IE 三者的事,不用你操心,不管是 外网还是内网,所以“自动”仅仅在内网可用,仅仅是 IE 自动发送当前 widnows 账号而已
验证完成之后,你通过 HttpContext.Current.User.Identity 访问就当前登录用户的 username


NTML 系统,你需要关心的是 授权,这才是需要复杂配置或者编码实现 .........

你需要分清 Authentication 与 Authorization

如果你新手,又要用 ASP.NET 又要 AD,那你就有得学了
staywithc 2009-07-13
  • 打赏
  • 举报
回复
up
学习下
Jinglecat 2009-07-13
  • 打赏
  • 举报
回复
7.2.1
当同时需要 NTML 与 FORMS 的时候开验证 AD,此时就复杂了,不是一般的复杂,一般都不自己实现了,你可以问问微软 Exchange Outlook 是怎么实现的,一般需要诸如 ISA 之类的辅助吧

8. NTML 基本原理
NND,一篇经典的链接忘了,麻烦您只有看 MSDN 了
http://www.google.com/url?q=http://msdn.microsoft.com/en-us/library/aa378749(VS.85).aspx&ei=KkpbSsDdBNaBkQWU3tnUBQ&sa=X&oi=revisions_result&resnum=6&ct=result&cad=revid%3D264970654&usg=AFQjCNHTBzf_pxrw6mIMzu7NjNNg88kf5g
Jinglecat 2009-07-13
  • 打赏
  • 举报
回复
6.
从楼主描述,目前为止, 没有发现任何与 SSO 有关, 楼主真的理解 SSO 了吗?还是被你的老板忽悠了?还是我理解错了? 下面忘记 SSO

7.
楼主你的问题可否这样理解:

工厂部署了AD,每个民工在这个AD中有账号,要建一个民工网站,所以民工能够用自己 AD 账号登录
并且,
当用户登录了AD(一般是在工厂内,或者VPN),浏览这个网站,自动登录,不妨称 Intranet
当用户无法登录AD(一般是外出了,回家了,没VPN),浏览这个还是能用 AD 账号登录,不妨称 Extranet
但是技术上讲:
7.1 此时IE尝试自动登录但,失败,因为此时 windows 账号不是有效的 AD 账号,所以会弹出标准的登录窗口,知道你输入正确的 AD 账号,可以接受不?
7.1.1 当然此时最好启用 SSL
7.1.2 可以接受?那最就没事了
7.2 7.1 老板无法接受?那就要真正的 FORMS 验证啦:自定义一个页面包含 用户和密码输入框,提交之后,编程访问 AD API 执行验证(一般 LDAP,.NET System.ActiveDirectory 名称空间提供支持)
Jinglecat 2009-07-13
  • 打赏
  • 举报
回复
我做如下假设

0.
域控 DC, Domain Controller

1.

-------AD, ActiveDirectory,废话,windows 平台了还用其他的:)

2.
在用户登陆时要实现域用户可以自动登陆
-------这叫 Windows 集成验证,一般称 NTML,具体是 Kerbos 否,无关紧要,这个“自动”,只有 IE 才支持, 都是 Windows 专利的嘛

3.
而非域用户要通过FORM输入用户名和密码才能登陆
-------惨了,你这个FORM是我们ASP.NET常说的 FORMS 验证吗?这可跟 NTML 完全两码事哦,

4.
另外,未登陆到域进入website时还有一点麻烦,就是怎样比较用户输入的密码与服务器中保存的域用户的密码是否一致.
-------看来 3 不成立啊,你指的还是 NTML 吧?当然了因为你不在 AD 域 中了,所以 IE 会弹出标准登录窗口要求你输入

5.
(因为域服务器中保存的用户密码是经过WINDOWS自己加密的)
-------既然是 NTML, 即使出现 4 的情况,也不要你的程序手动到 DC 验证的。验证的过程完全是自动完成的。并且验证是由 IE 和 DC 来完成,IIS 没有参与。
lyhyp 2009-07-13
  • 打赏
  • 举报
回复
写错了,是Single Sign On
lyhyp 2009-07-13
  • 打赏
  • 举报
回复
SSO(single Sing On),中文叫单点登陆.主要针对于域(Domain),当用户在局域网登陆到域时,可以直接进入到website,而未登陆到域进入website时要输入其自已的域用户名和密码.
另外,未登陆到域进入website时还有一点麻烦,就是怎样比较用户输入的密码与服务器中保存的域用户的密码是否一致.(因为域服务器中保存的用户密码是经过WINDOWS自己加密的)
哪位大虾做过的,可否share一下代码,不胜感激.
zyug 2009-07-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 windinwing 的回复:]
用户登陆时要实现域用户可以自动登陆,而非域用户要通过FORM输入用户名和密码才能登陆

这是因为写cookies的机制,不同的域,不能调用webservice等方式来实现写cookies认证.

需要使用URL跳转, 传参时用户名,加二边站点预留的key和返回的地址做为参数传递到验证中心验证.
[/Quote]

我觉得它的域并非cookie的域,而是一个计算机域.包括域服务器,计算机等一系列的
lyhyp 2009-07-13
  • 打赏
  • 举报
回复
有没有可以跑的例子呀!share 一下?thanks in advance.
windinwing 2009-07-12
  • 打赏
  • 举报
回复
用户登陆时要实现域用户可以自动登陆,而非域用户要通过FORM输入用户名和密码才能登陆

这是因为写cookies的机制,不同的域,不能调用webservice等方式来实现写cookies认证.

需要使用URL跳转, 传参时用户名,加二边站点预留的key和返回的地址做为参数传递到验证中心验证.
gongsun 2009-07-11
  • 打赏
  • 举报
回复
楼主的 域用户自动登录,非域用户 输入登录,是怎么理解的?
gongsun 2009-07-11
  • 打赏
  • 举报
回复
...
Adechen 2009-07-11
  • 打赏
  • 举报
回复
域登陆比较不好搞,水平有限,等待中....
加载更多回复(2)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧