3

我有一个简单的授权设置,用于检查自定义授权策略 (IAuthorizationPolicy) 中某些已配置的活动目录角色 - 如果拥有这些角色,则添加声明。最重要的是,我有一个覆盖 CheckAccessCore 的 ServiceAuthorizationManager 子类。它验证是否拥有一些在自定义授权策略评估中添加的声明,以确认或拒绝传入消息。

因此,这些组件的设置在我的服务中运行良好——我的问题是它们何时被调用/与它们关联的对象的生命周期。每次调用服务时都会调用我的子类 ServiceAuthorizationManager - 这是我所期望的。但是,每次调用服务时也会调用我的自定义授权策略——这不是我所期望的。我可以看到每次调用服务都会生成一个新的 AuthorizationContext 对象。

我认为我的期望基于以下几点: AuthorizationContext 将在身份验证发生后创建 - 每次调用服务时都不会发生这种情况,因为客户端连接到 NetTcpBinding,每次调用都在同一个代理上(并且我想在传输上使用相同的打开套接字),使用带有 Windows 凭据的传输安全性,以及服务会话实例。

所以,我总体上期望的是 AuthorizationContext 只会在创建新会话时生成,或者当旧的 AuthorizationContext 对象根据其 ExpirationTime 属性过期时(不是在每次调用服务时)。

因此,如果有人能告诉我在 AuthorizationContext 对象的生命周期内的实际情况是什么 - 或者可能告诉我如何更改服务以使其按照我预期的方式运行,我将非常感激。

对于上下文 - 如果它有任何区别 - 我仍在使用 3.0 CLR 库。

谢谢

4

0 回答 0