UserPrincipal.GetAuthorizationGroups() 方法出错

2024-01-01

我在 Web 应用程序中使用 UserPrincipal 类的 GetAuthorizationGroups 方法时遇到问题。

使用以下代码,我收到“尝试检索授权组时,发生错误 (5)”

PrincipalContext context = new PrincipalContext(ContextType.Domain, null, "DC=MyCompany,DC=COM", "username", "password");
UserPrincipal p = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "joe.blogs");
var groups = p.GetAuthorizationGroups();

我相信这段代码在一定程度上是有效的。

  • 当我查看上下文对象时,我可以看到服务器和用户名/密码已在对象中正确解析
  • 当我查看 p 对象时,我可以看到 AD 详细信息已填充,例如电话号码等。

这是错误的堆栈跟踪。

[PrincipalOperationException: While trying to retrieve the authorization groups, an error (5) occurred.]
   System.DirectoryServices.AccountManagement.AuthZSet..ctor(Byte[] userSid, NetCred credentials, ContextOptions contextOptions, String flatUserAuthority, StoreCtx userStoreCtx, Object userCtxBase) +317279
   System.DirectoryServices.AccountManagement.ADStoreCtx.GetGroupsMemberOfAZ(Principal p) +441
   System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroupsHelper() +78
   System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroups() +11

通过从PrincipalContext构造函数中删除用户名和密码详细信息,并将应用程序池(在iis7中)更改为以同一用户身份运行([电子邮件受保护] /cdn-cgi/l/email-protection) - 以下代码有效。

PrincipalContext context = new PrincipalContext(ContextType.Domain, null, "DC=MyCompany,DC=COM");
UserPrincipal p = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "joe.blogs");
var groups = p.GetAuthorizationGroups();

我需要让第一个示例中的代码正常工作 - 我不想只是为了让该代码正常工作而以域用户身份运行应用程序池。


我处理了同样的问题。请参阅类似问题的讨论。https://stackoverflow.com/a/8347817/2012977 https://stackoverflow.com/a/8347817/2012977

解决方案如下:

public List<GroupPrincipal> GetGroups(string userName)
    {
        var result = new List<GroupPrincipal>();
        PrincipalContext ctx = GetContext(); /*function to get domain context*/
        UserPrincipal user = UserPrincipal.FindByIdentity(ctx, userName);
        if (user != null)
        {
            PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups();

            var iterGroup = groups.GetEnumerator();
            using (iterGroup)
            {
                while (iterGroup.MoveNext())
                {
                    try
                    {
                        Principal p = iterGroup.Current;
                        result.Add((GroupPrincipal) p);
                    }
                    catch (PrincipalOperationException)
                    {
                        continue;
                    }
                }
            }
        }

        return result;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UserPrincipal.GetAuthorizationGroups() 方法出错 的相关文章

  • copy_from_user() 错误:目标大小太小

    我正在为内核模块编写 ioctl 处理程序 我想从用户空间复制数据 当我编译禁用优化的代码时 O0 gflags 编译器返回以下错误 include linux thread info h 136 17 error call to bad
  • 非模板函数中的尾随返回类型[重复]

    这个问题在这里已经有答案了 我见过有人使用以下语法来实现函数 auto get next gt int 代替 int get next 我理解两者 并且我知道尾随返回类型语法对于使用 decltype 的模板代码很有用 就我个人而言 我会避
  • 如何从经过身份验证的 SecurityToken 中获取声明

    我将令牌作为字符串传递到 SOAP 服务中 并验证了该令牌是否有效 我现在有一个 SecurityToken 在调试模式下我可以看到所有声明 特别是我想传递到另一个方法的 userId 声明 我似乎不知道如何获得这些索赔 现在 我解码了令牌
  • CMake(Ninja 后端)使用 /MT 编译

    我有一个类似的问题CMake 使用 MT 而不是 MD 进行编译 https stackoverflow com questions 14172856 cmake compile with mt instead of md但有一些差异 我正
  • 如何在 C# 中以编程方式将行添加到 DataGrid?

    正如标题所述 我正在尝试使用 C 以编程方式将行添加到 DataGrid 但我似乎无法使其工作 这是我到目前为止所拥有的 I have a DataGrid declared as dg in the XAML foreach string
  • 如何在 Linux 上重新实现(或包装)系统调用函数?

    假设我想完全接管 open 系统调用 也许要包装实际的系统调用并执行一些日志记录 一种方法是使用 LD PRELOAD http scaryreasoner wordpress com 2007 11 17 using ld preload
  • 公交车公共交通算法

    我正在开发一个可以查找公交路线的离线 C 应用程序 我可以提取时间表 巴士 路线数据 我正在寻找适用于基本数据的最简单的解决方案 可以使用什么算法来查找从巴士站 A 到巴士站 B 的路线 是否有适用于 C Java 的开源解决方案 数据库的
  • 重载算术运算符

    赋值运算符可以声明为 T 运算符 const t 在类中 但不能以这种方式定义算术运算符 它必须是友元函数 我不明白为什么 你能解释一下吗 算术运算符不必须是友元 那么你可以这样定义 MyClass MyClass operator con
  • 从图像创建半透明光标

    是否可以从图像创建光标并使其半透明 我目前正在拍摄自定义图像并覆盖鼠标光标图像 如果我可以将其设为半透明 那就太好了 但不是必需的 销售人员喜欢闪亮的 目前正在做这样的事情 Image cursorImage customImage Get
  • DateTime.ParseExact - 为什么 yy 变成 2015 而不是 1915

    为什么 NET 假定以下年份是 2015 年 而不是 1915 年 var d DateTime ParseExact 20 11 15 dd MM yy new CultureInfo en GB 我想 它会尝试接近 但其背后是否有合理的
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • 为什么连续抛出 2 个异常不会生成无法访问的代码警告?

    为什么以下代码行不会创建编译器警告 void Main throw new Exception throw new Exception 据我所知 编译器应该通知您无法到达第二个抛出异常 这显然是一个编译器错误 它是在 C 3 0 中引入的
  • main.cpp 是必需的吗?

    我试图编译一个程序cmake 我最终删除了我的main cpp文件 我刚刚将其复合到另一个包含我的项目名称的文件中 即 我刚刚将主函数剪切并粘贴到该文件中 问题是我有一个main cpp未发现错误 不确定是否在C 一个名为main cpp是
  • MINIX内部碎片2

    我正在用 C 语言编写一些软件 它递归地列出给定目录中的所有文件 现在我需要计算出内部碎片 我花了很长时间研究这个问题 发现 ext2 上的内部碎片只发生在最后一个块中 我知道理论上你应该能够从索引节点号获得第一个和最后一个块地址 但我不知
  • 如何在Windows窗体中打开进程

    我想在我的 Windows 窗体应用程序中打开进程 例如 我希望当用户按下 Windows 窗体容器之一中的按钮时 mstsc exe 将打开 如果他按下按钮 它将在另一个容器上打开 IE DllImport user32 dll SetL
  • 在 clang 中向量化函数

    我正在尝试根据此用 clang 对以下函数进行矢量化铿锵参考 http llvm org docs Vectorizers html 它采用字节数组向量并根据以下条件应用掩码this RFC https www rfc editor org
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • 使用空的weak_ptr作为参数调用map::count安全吗?

    打电话安全吗map count http www cplusplus com reference map map count on an 未初始化因此为空weak ptr http en cppreference com w cpp mem
  • 将同步 zip 操作转换为异步

    我们有一个现有的库 其中一些方法需要转换为异步方法 但是我不确定如何使用以下方法执行此操作 错误处理已被删除 该方法的目的是压缩文件并将其保存到磁盘 请注意 zip 类不公开任何异步方法 public static bool ZipAndS

随机推荐

  • 基于 Maven POM 的自动化构建系统中依赖真实性验证

    我刚刚被指出一个非常有趣的article http www fortify com servlet downloads public fortify attacking the build pdf archived https web ar
  • HTML.ActionLink 方法

    假设我有课 public class ItemController Controller public ActionResult Login int id return View Hi id 在不位于 Item 文件夹的页面上 其中Item
  • 登录后出现404.0错误。 Asp.Net MVC 和 IIS 7.5

    我有一个在 IIS 7 5 上运行的 ASP NET MVC 应用程序 已启用表单验证 我可以访问登录页面 这意味着路线没问题 但是当我登录应用程序时应该将发布数据发送到http localhost tgpwebged Account Lo
  • Next.js 与 pkg。语法需要启用以下解析器插件之一:“flow, typescript”

    我使用 next js 与pkg https www npmjs com package pkg在我基于此的项目中tutorial https medium com evenchange4 deploy a commercial next
  • 重画问题

    我的方法中的重绘有问题move 我不知道该怎么做 代码如下 import java awt import java io import java text import java util import javax sound sample
  • 为什么 svn diff 有时会将工作文件复制到临时文件?

    我使用带有 Subversion 的外部 diff 工具 超越比较规则 其中一个很棒的功能是能够在我查看所做的更改时使用 diff 程序对文件进行一些细微的编辑 But svn diff我的不同项目的工作方式有所不同 总之 左侧文件是一个临
  • 带新行的 AlertDialog 消息。 (\n 不起作用。)

    我需要在AlertDialog在安卓上 我已经尝试过使用 n 字符 但它不起作用 我没有看到 n 字符 但文本不会换行 有什么帮助吗 您可以使用跨文本Html fromHtml some string br 在某些文本视图元素上创建新行
  • Android:如何为android活动制作翻转动画,就像iphone从左到右水平翻转一样?

    在我的应用程序中 我想翻转视图 我在iPhone上看过这样的动画 我想在我的 Android 应用程序中实现同样的功能 我想翻转整个活动视图 是否可以 我见过一些 android 中翻转的例子 但在所有示例中 视图都位于同一个活动中 是否可
  • 使用 jquery 禁用右键单击图像

    我想知道如何使用 jQuery 禁用右键单击图像 我只知道这个 这有效 img bind contextmenu function e return false 或者对于较新的 jQuery nearestStaticContainer o
  • Eclipse-导入代码格式设置

    您好 我正在使用 intellij 通过以下步骤添加代码设置 jar 导入设置 然后指向此 JAR 然后右键单击该模块并执行 重新格式化代码 但现在我在 eclipse 中使用相同的项目 如何在clipse和格式代码中使用上述设置jar 除
  • 如何使用robotium生成测试结果报告?

    我一直在使用 Robotium 来测试我的 Android 应用程序 测试成功 但我想知道是否有任何方法可以在单独的文件中查看测试结果 我很幸运 只是像常规 Android JUnit 测试一样运行 robotsium 测试 然后使用标准机
  • 如何设置activemq的队列最大长度

    我想知道是否可以在activemq上配置队列的最大长度 以便当队列的长度达到限制时 入队操作将失败或抛出异常 有人知道这个问题吗 任何帮助将不胜感激 多谢 看一下生产者流程控制http activemq apache org Produce
  • 如何查看 ASP.NET OutputCache 的内容?

    有什么方法可以列出当前存储在 OutputCache 中的页面吗 只需一个路径列表即可 但如果有一种方法可以获取有关每个项目的更多信息 过期等 那就更好了 据我记得缓存是一个单例 每个应用程序域只有一个实例 OutputCache 也使用它
  • MSTest 中 [TearDown] 和 [SetUp] 的替代方案是什么?

    当我使用 MSTest Framework 并复制 Selenium IDE 为我生成的代码时 MSTest 无法识别 TearDown and SetUp 有什么替代方案吗 你会使用 TestCleanup and TestInitial
  • 快速而肮脏的 SQL 字符串转义

    我正在对家庭卷进行最后的润色QueryBuilder具有 postgresql 数据库的 Web 应用程序的类 它用PreparedStatement适用于所有查询 并防止 SQL 注入 然而我想要一种 快速而肮脏 的方式来表示QueryB
  • Grunt JS 复制到网络位置

    我想使用 grunt contrib copy 或任何其他 grunt 复制插件 将文件复制到网络位置 尝试如下 copy test files src Scripts dest location site Scripts 但得到 警告 无
  • 将特殊字符传递给 mailto 正文会导致 JavaScript 崩溃

    我有一个 C ASP NET 应用程序 它为某些用户配置文件信息创建一个 JavaScript 值数组 在客户端 我使用 jQuery JavaScript 读取数组并生成 mailto 链接 某些字段可以包含特殊字符 例如 这是 C 代码
  • 使用值更改清单 screenOrientation

    我正在训练通过资源以恒定值更改清单中的 screenOrientation 这是我的清单的一项活动
  • Neo4J安装-启动服务失败

    我正在尝试安装 Neo4j 1 8 但在启动服务时遇到问题 解压 zip 文件后 我直接进入 bin 文件夹并执行批处理文件 Neo4J bat install SC 创建服务成功 SC 启动服务失败 1053 服务未及时响应启动或控制请求
  • UserPrincipal.GetAuthorizationGroups() 方法出错

    我在 Web 应用程序中使用 UserPrincipal 类的 GetAuthorizationGroups 方法时遇到问题 使用以下代码 我收到 尝试检索授权组时 发生错误 5 PrincipalContext context new P