我可以在Active Directory中使用基于令牌的身份验证吗?

Chi*_*lly 10 .net c# impersonation active-directory

我希望能够安全地登录到系统,而无需从活动目录中的Windows PC输入用户名密码.我的想法是,我(客户端软件,在登录的Windows机器上运行)有某种令牌,将向服务器证明我是谁,我说的是(服务器与AD通话以验证令牌和我的身份身份).这可能与.net 3有关吗?

c#中使用的语言.

小智 10

我认为你应该真正关注基于声明的认证.

微软最近做了很多.您可能听说过Geneva Server(现在官方称为ADFS 2.0)和Geneva Framework(现在正式称为Windows Identity Foundation).这个想法是认证在中心点/服务器(一般是日内瓦服务器或安全令牌服务器(STS))完成,经过身份验证的用户被给予他/她提供给资源的安全令牌(基于SAML 2.0)他/她想要访问.身份验证可以通过各种方式完成,包括用户名/密码,智能卡,证书,或者 - 在您的情况下 - 通过翻译已存在的令牌,如Windows身份验证(称为Windows集成身份验证).

该令牌是基于SAML 2.0的(行业标准,对于与其他供应商的STS产品的良好互操作性而言非常重要).它包含有关在应用程序或资源(也包括Web服务)中用于执行授权(授予权限)的人的声明.为此目的,应用程序信任STS提供的权利要求当然是必要的.另一方面,应用程序根本不需要进行任何身份验证.

Geneva Framework是一个用于处理应用程序中的令牌的库(.NET).它使用起来相当简单.

有关详细信息,请查看白皮书,其中对此主题进行了很好的介绍.官方网站在这里.

当然,还有许多问题通过这些概念得到解决,这些问题确实是恕我直言的有趣部分.这包括单点登录(SSO),联合单点登录(跨多个组织边界),委派(应用程序使用具有您用户权限的Web服务).希望这个信息有帮助!

干杯

PS:当然,这根本不是微软的问题.还有其他STS产品,如Sun OpenSSO,Ping Identity和Thinktecture Identity Server,它们提供类似的功能.我只是强调了微软的东西,因为它与AD的良好互操作性和问题中提到的Windows身份验证.


Sql*_*yan 0

如果您访问任何网络资源(文件共享、SQL Server 等),应用程序将自动以当前运行它的用户身份执行它们。你想做一些更具体的事情吗?如果您在域中操作,那么权限自然会跟随您使用的任何网络资源。

您可以使用 .NET 模拟其他用户并以他们的身份执行任务,但无需执行任何其他步骤,您将代表用户进行操作,而无需让他们再次登录。