C/S中利用域控进行SSO的简单实现方式

本文介绍了一种利用Webservice和NT域控认证实现单点登录(SSO)的方法。通过设置IIS上的NT集成用户认证,客户端可在已登录域的情况下自动完成身份验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<div class="Section0">
<p class="p0" style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: '宋体';">我先简单的介绍一下我的需求。我希望我做的软件中,可以与域控集成,实现单点登录,且不需要额外输入帐号秘密。当然这是在已经登陆到域的前提下。</span>

</p>
<p class="p0" style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: '宋体';">为此我翻过很多资料。<span style="font-family: Times New Roman;">Windows</span>
<span style="">确实提供了</span>
<span style="font-family: Times New Roman;">API</span>
<span style="">来操作登录。但小弟比较愚笨,一直感觉这些</span>
<span style="font-family: Times New Roman;">API</span>
<span style="">使用起来很笨拙。且根据系统需求,往往进行域控帐号认证,都是在服务器上进行的。因为你的机器可能不能访问到我的域控服务器。对于一般的</span>
<span style="font-family: Times New Roman;">IT</span>
<span style="">服务器部署,域控服务器都是在一个安全区域里面的。</span>
</span>

</p>
<p class="p0" style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: '宋体';">在此之前,我已经实现了一个<span style="font-family: Times New Roman;">WebService</span>
<span style="">,提供了一个</span>
<span style="font-family: Times New Roman;">Login(UserName,Password)</span>
<span style="">的方法,</span>
<span style="font-family: Times New Roman;">Login</span>
<span style="">可以在域控上进行认证。但这个方法必须在客户端自己做一个登陆窗体。</span>
</span>

</p>
<p class="p0" style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: '宋体';">一次偶然的机会,我发现,如果在<span style="font-family: Times New Roman;">Webservice</span>
<span style="">的</span>
<span style="font-family: Times New Roman;">IIS</span>
<span style="">上设置了</span>
<span style="font-family: Times New Roman;">NT</span>
<span style="">集成用户认证,那么在非域环境中登陆的时候,是会自动弹出一个登陆密码的框框的。其实这点我早就应该知道了,只是以前都是在网页中弹出的,没想到在</span>
<span style="font-family: Times New Roman;">C/S</span>
<span style="">环境中也会自动弹出,根据这一个发现,我设计了一个简单的</span>
<span style="font-family: Times New Roman;">SSO</span>
<span style="">登陆方式:</span>
</span>

</p>
<p class="p0" style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: '宋体';">首先,实现一个<span style="font-family: Times New Roman;">Webservice</span>
<span style="">,我选用的</span>
<span style="font-family: Times New Roman;">C#</span>
<span style="">实现的,微软这点还是做得非常易用的。这个</span>
<span style="font-family: Times New Roman;">Service</span>
<span style="">,只需要提供一个方法:</span>
</span>

</p>
<p class="p0" style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: '宋体';">publicstringGetUserName(){returnUser.Identity.Isauthorized?User.Identity.Name:"";}</span>

</p>
<p class="p0" style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: '宋体';">实现也很简单,就从当前认证的用户信息中获取用户的名字就可以了。</span>

</p>
<p class="p0" style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: '宋体';">然后,发布这个服务,并在<span style="font-family: Times New Roman;">IIS</span>
<span style="">中设置账户的安全信息是集成</span>
<span style="font-family: Times New Roman;">NT</span>
<span style="">域控认证,同时取消匿名访问。</span>
</span>

</p>
<p class="p0" style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: '宋体';">这样就可以,现在你只需要在你的应用中,在刚开始初始化的时候,调用一下这个<span style="font-family: Times New Roman;">WebServie,</span>
<span style="">如果获取的账号名不为空,就表示账户已经在域控进行认证了。</span>
</span>

</p>
<p class="p0" style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: '宋体';">关键是,这个方法可以让你在很多地方进行复用,使用也很简单。不过前提必须是网络应用。那种单机应用就不怎么适合了。</span>

</p>
</div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值