问题标签 [iprincipal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
13677 浏览

asp.net-mvc-2 - 在 MVC 中实现自定义身份和 IPrincipal

我有一个基本的 MVC 2 beta 应用程序,我试图在其中实现自定义 Identity 和 Principal 类。

我创建了实现 IIdentity 和 IPrincipal 接口的类,将它们实例化,然后在 Global.asax 的 Application_AuthenticateRequest 中将 CustomPrincipal 对象分配给我的 Context.User。

这一切都成功了,对象看起来不错。当我开始呈现视图时,页面现在失败了。第一个失败是在以下代码行的默认 LogoOnUserControl 视图中:

如果我把它拉出来,那么它会在不同的“Html.ActionLink”代码行上失败。

我收到的错误是:

WebDev.WebHost40.dll 中出现“System.Runtime.Serialization.SerializationException”类型的异常,但未在用户代码中处理

附加信息:未解析成员“Model.Entities.UserIdentity,Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”的类型。

为了在 MVC 中使用自定义身份,我需要在身份中实现一些其他属性吗?我试图在 Identity 类中实现 [Serializable()] 但它似乎没有影响。

更新: 我已经尝试了 3-4 种替代方法来实现这一点,但仍然失败并出现同样的错误。如果我直接使用 GenericIdentity/GenericPrincipal 类,它不会出错。

但这让我无处可去,因为我试图使用 CustomIdentity 来保存几个属性。如果我为我的 CustomIdentity/CustomPrincipal 实现 IIdentity/IPrincipal 接口或继承 GenericIdentity/GenericPrincipal ,则会出现上述原始错误。

0 投票
1 回答
683 浏览

security - 您如何覆盖 WCF AuthenticationService IsLoggedIn() 方法?

我目前对如何做到这一点有三个想法:

  1. 重新实现 AuthenticationService,它使用了大量的内部构造函数和内部帮助函数,
  2. 实现自定义 IIdentity 和 IPrincipal 类型,并以某种方式将它们挂钩到 FormsAuthentication。
  3. 放弃并滚动我自己的。

问题是我们有使用身份验证和存储 cookie 的 Web 应用程序和胖客户端应用程序。但是,注销 Web 应用程序并不会注销胖客户端应用程序,而且我们现在可以强制刷新 cookie,atm。

0 投票
1 回答
61 浏览

.net - 在 ASP.NET 中运行连接时保留一个对象

我正在使用 ASP.NET 开发 Web 服务,它不是 .asmx 或 WCF,它是自定义的,所以我正在使用 Http 类(上下文、请求、响应等)。会话被禁用。我正在使用我自己的处理程序和模块。

我想在连接有效时保持对象的活动和可访问性。我的意思是,一个请求进入,我为它分配了一个 DbCommand 并且该连接将使用该命令,只要正在执行操作,当该连接结束时,该对象应该被释放。

我想,我可以将它添加到我的 IPrincipal 实现中,然后当在模块中对连接进行身份验证并检索到用户时,我可以将该 DbCommand 添加到 IPrincipal 中,这样我就可以从代码中的任何位置检索它,然后在模块 EndRequest 事件中,我可以处理它,但我不知道是否有更好的方法来做到这一点。

你怎么看?

干杯

0 投票
2 回答
1869 浏览

asp.net-mvc - Asp.net Mvc: Ninject - IPrincipal

我想知道如何使用 Ninject 将 IPrincipal 绑定到 Asp.net Mvc 中的 HttpContext.Current.User 。

友好的问候,

泡菜

编辑:

不确定这是否重要,但我使用自己的 CustomPrincipal 类。

0 投票
2 回答
9960 浏览

asp.net - IPrincipal 如何获得其角色?

我需要知道如何SiteMapProvider.IsAccessibleToUser()工作。

在表单身份验证的情况下使用的内置XmlSiteMapProvider调用。HttpContext.User.IsInRole()System.Security.Principal.GenericPrincipal

当前用户从哪里获得其角色?哪个提供商加载此类信息?我想重载它并使用自定义逻辑。

0 投票
4 回答
8322 浏览

c# - asp.net 扩展 IPrincipal

我想在 asp.net 中扩展 IPrincipal 以允许我获得我将定义的用户类型。我想在控制器中做到这一点

然后在我的扩展方法中,我将有一个类似的方法

我怎样才能做到这一点?可能吗?谢谢!

0 投票
1 回答
2905 浏览

asp.net - IPrincipal 的自定义实现抛出 System.SystemException:信任关系

我们有一个 ASP.NET 站点,该站点部分依赖于登录凭据的表单身份验证,但是 IPrincipal 的实现是完全自定义的。

但是,当在特定服务器上运行站点时(在安全性方面有些半硬化),应用程序在调用 IPrincipal.IsInRole() 时会崩溃,并显示以下消息:

System.SystemException:主域和受信任域之间的信任关系失败。

这表明 Web 服务器和 DC 之间存在通信错误,但是由于我们的应用程序根本没有使用 Windows 身份验证,我不明白为什么它需要与 DC 通信。

这是我的实现:

在本地调试它(它工作的地方)时,它是实际运行的正确实现。用法如下:

在这里设置断点让我知道 EngineContext.CurrentUser 实际上是 CustomPrincipal 的实现。

有没有人经历过这个?ASP.NET 怎么可能仍然触发接口方法上的任何 LDAP 查找?

我发现了这个,http://support.microsoft.com/kb/976494但在我的环境中,webs-server 和 DC 都是 2008 R2,所以这不应该适用。然而,我的事件日志中确实存在一些错误,表明与 DC 存在一些通信问题,但由于我们不依赖 LDAP,所以这应该不是问题。

安全系统无法与服务器 ldap/ddc.domain.com/xxxxxxxxxxxxx 建立安全连接。没有可用的身份验证协议。

服务器超出了我的范围,这意味着我无法自己解决这个问题,但是我确实有一个支持票,但出于安全原因可能有意进行此设置(即使它看起来很愚蠢)。

有没有人遇到过这个问题?

跟进:堆栈跟踪显示:

编辑:

我终于能够在我的开发机器上重现这个错误(我昨天从 DC 撤销了我的机器,但直到今天才重现它)

默认情况下,HttpContext.User 实际上是一个 WindowsPrincipal ,我的代码中的错误是我只在登录时将其替换为 CustomPrincipal 。因此,未经身份验证的用户仍然会获得 WindowsPrincipal,如果您的 AD 上存在信任问题,那么它会严重失败。

我尝试通过在 appstart 上调用它来更改默认主体

但这似乎没有起作用。如何更改 ASP.NET 中的默认主体?

0 投票
2 回答
1099 浏览

asp.net-mvc-2 - 在 ASP.NET MVC 2 应用程序中看不到 Principal 上的角色

我正在编写一个 ASP.NET MVC 2 应用程序并且不想使用 ASP.NET Membership。我确实想在控制器上使用 Authorize 属性。到目前为止我所做的是...

网页配置

在我的 Global.asax

我正在使用自定义 IIdentity,以便将来可以添加一些自定义属性。为了在我的控制器操作中测试这一点,我做了这个......

我可以看到包含所有用户信息的自定义身份,但主体对象上没有角色。对我错过的任何帮助都会很棒。谢谢。

0 投票
1 回答
60 浏览

.net - 阻止程序集更改 IPrinicpal

我的应用程序加载了许多不同的插件程序集。每个插件都可以将自己的服务添加到 IoC 容器中,也可以使用主应用程序提供的所有服务。

我正在从一个自制的安全解决方案转向使用 CAS(PrincipalPermissionAttribute 和一个从 CodeAccessSecurityAttribute 派生的自己的解决方案)。

我可以防止加载的程序集更改 System.Threading.Thread.CurrentPrincipal (并以这种方式绕过我的安全检查)吗?

0 投票
1 回答
2566 浏览

c# - IPrincipal.IsInRole() 仅在我截断角色名称时才有效 - 为什么?

我有一个严重依赖用户授权的应用程序。在其中,我IPrincipal.IsInRole()用来检查用户是否在正确的组中:

这在大多数情况下都可以正常工作,但如果主体是 a 的实例,则会失败(返回不正确的结果)WindowsPrincipal。我发现要使其正常工作,我必须将传入的角色名称截断为 32 个字符长(包括域名和\):

然后截断角色名称可以正常工作。为什么?这是一个错误/功能/记录的问题吗?我有一种暗示,它可能与 Win2000 域有关,但找不到任何信息。

一些额外信息:
这是一个问题,因为应用程序可以配置为使用活动目录或“自定义”进行授权(“自定义”是任何支持接口的授权提供程序 - 可以是基于 SQL 的、基于文件的等) ..)。配置自定义时,角色很可能不需要截断,因此我不想在我的代码中处理这种特殊情况。此外,我还有应用程序的另一部分使用System.DirectoryServices.AccountManagement命名空间中的类来查找组成员资格。这需要完整的角色名称,如果它们被截断,则不起作用。