1

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

WindowsIdentity winID = new WindowsIdentity("jdoe");

我的程序抛出以下异常:

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

我不知所措。我应该从哪里开始甚至找出正在发生的事情?

4

1 回答 1

1

该站点说 WindowsIdentity 采用“用户主体名称”:http: //msdn.microsoft.com/en-us/library/td3046fc.aspx

这个站点定义了什么是用户主体名称:http ://searchexchange.techtarget.com/definition/User-Principal-Name

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

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

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

于 2013-05-09T05:35:29.913 回答