新的WindowsIdentity()返回错误“KDC不支持所请求的加密类型”。

时间:2013-05-08 20:57:05

标签: asp.net active-directory

我正在尝试通过创建WindowsPrincipal对象然后在其上调用IsInRole()来从Active Directory获取用户所属的组。但是,只要尝试创建WindowsPrincipal对象,就像这样:

WindowsIdentity winID = new WindowsIdentity("jdoe");

我的程序抛出以下异常:

  

“System.Security.SecurityException:请求的加密类型是   不受KDC支持。“

我很茫然。我应该从哪里开始发现正在发生的事情?

1 个答案:

答案 0 :(得分:1)

此网站称WindowsIdentity采用“用户主要名称”:http://msdn.microsoft.com/en-us/library/td3046fc.aspx

此网站定义了用户主体名称:http://searchexchange.techtarget.com/definition/User-Principal-Name

另外,请注意第一个网站说:

  

此构造函数适用于仅加入Windows Server 2003域的计算机。其他域类型会引发异常。

这是一个codeplex项目,显示如何查询Active Directory:http://www.codeproject.com/Articles/28546/Active-Directory-Roles-Provider
如果您只是尝试获取登录用户的角色,并且使用Windows身份验证作为身份验证方法(在web.config中加速),您所要做的就是使用可用的User对象:     WindowsIdentity winID =(WindowsIdentity)User.Identity;