SSO using Windows Login in C#
我有一个Linux托管的Web应用程序和一个C#Windows客户端。该Web应用程序当前允许它进行身份验证的AD凭据。
并非所有用户都基于Windows。我正在尝试为Windows用户实现单点登录解决方案。如果用户已经通过Windows登录针对AD进行了验证,则我希望允许访问我的应用程序。
我知道如何根据AD验证凭据:
1 2
| DirectoryEntry entry = new DirectoryEntry ("LDAP://" + domain,
userName, password ); |
但是我没有用户名或密码。我知道AD正在使用Kerberos来存储Windows凭据,但我不知道如何访问该票证。
除了C#外,我的问题类似于"如何确定登录的Windows帐户是否已在域上进行身份验证"或"在客户端-服务器应用程序中使用Active Directory对用户进行身份验证"。
我正在使用LightTpd。
- 登录到连接AD的Windows框的所有用户都已通过身份验证(否则他们将无法登录)。您是说要基于AD权限授权用户吗?请参阅授权与身份验证duke.edu/~rob/kerberos/authvauth.html
-
我想访问身份验证票。
-
为什么?在IIS中启用Windows(AD)身份验证非常简单,并且有详尽记录:msdn.microsoft.com/zh-cn/library/ff647405.aspx
-
我的Web应用程序不是由IIS托管的。这是一个Linux服务器。
-
如果您的Web应用程序托管在Linux上,那么它如何运行C#?还是您正在尝试在Windows框上运行一些C#,以某种方式针对Web应用程序对用户进行预身份验证?
-
您的问题需要关于如何在<您的Web服务器>和<您的客户端>之间启用集成的kerberos身份验证。
-
@Chris Shain,该Web应用程序未运行C#,我在C#中有一个Windows应用程序连接到该Web应用程序。
-
@BrianCauthon,这是我的问题的下一步。我想使用本地Windows登录票证,并以某种方式将其传递给Web应用程序。您是说这是错误的初始方法?
-
我们无法告诉您最初的方法是什么,因为您尚未发布任何代码来向我们展示您要尝试的内容,也没有发布伪代码来演示您想要尝试的内容。但是,我觉得您想尝试的方法行不通,否则会使kerberos失去安全感。
-
特别有用的是用于连接到Web应用程序的代码。例如,您在使用WebClient类吗?还有别的吗
看看在Apache中通过Kerberos协议提供Active Directory身份验证。如果在Windows应用程序中使用WebClient或WebRequest类,请确保将UseDefaultCredentials属性设置为true。