问题标签 [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.
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 ,则会出现上述原始错误。
security - 您如何覆盖 WCF AuthenticationService IsLoggedIn() 方法?
我目前对如何做到这一点有三个想法:
- 重新实现 AuthenticationService,它使用了大量的内部构造函数和内部帮助函数,
- 实现自定义 IIdentity 和 IPrincipal 类型,并以某种方式将它们挂钩到 FormsAuthentication。
- 放弃并滚动我自己的。
问题是我们有使用身份验证和存储 cookie 的 Web 应用程序和胖客户端应用程序。但是,注销 Web 应用程序并不会注销胖客户端应用程序,而且我们现在可以强制刷新 cookie,atm。
.net - 在 ASP.NET 中运行连接时保留一个对象
我正在使用 ASP.NET 开发 Web 服务,它不是 .asmx 或 WCF,它是自定义的,所以我正在使用 Http 类(上下文、请求、响应等)。会话被禁用。我正在使用我自己的处理程序和模块。
我想在连接有效时保持对象的活动和可访问性。我的意思是,一个请求进入,我为它分配了一个 DbCommand 并且该连接将使用该命令,只要正在执行操作,当该连接结束时,该对象应该被释放。
我想,我可以将它添加到我的 IPrincipal 实现中,然后当在模块中对连接进行身份验证并检索到用户时,我可以将该 DbCommand 添加到 IPrincipal 中,这样我就可以从代码中的任何位置检索它,然后在模块 EndRequest 事件中,我可以处理它,但我不知道是否有更好的方法来做到这一点。
你怎么看?
干杯
asp.net-mvc - Asp.net Mvc: Ninject - IPrincipal
我想知道如何使用 Ninject 将 IPrincipal 绑定到 Asp.net Mvc 中的 HttpContext.Current.User 。
友好的问候,
泡菜
编辑:
不确定这是否重要,但我使用自己的 CustomPrincipal 类。
asp.net - IPrincipal 如何获得其角色?
我需要知道如何SiteMapProvider.IsAccessibleToUser()
工作。
在表单身份验证的情况下使用的内置XmlSiteMapProvider
调用。HttpContext.User.IsInRole()
System.Security.Principal.GenericPrincipal
当前用户从哪里获得其角色?哪个提供商加载此类信息?我想重载它并使用自定义逻辑。
c# - asp.net 扩展 IPrincipal
我想在 asp.net 中扩展 IPrincipal 以允许我获得我将定义的用户类型。我想在控制器中做到这一点
然后在我的扩展方法中,我将有一个类似的方法
我怎样才能做到这一点?可能吗?谢谢!
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 中的默认主体?
asp.net-mvc-2 - 在 ASP.NET MVC 2 应用程序中看不到 Principal 上的角色
我正在编写一个 ASP.NET MVC 2 应用程序并且不想使用 ASP.NET Membership。我确实想在控制器上使用 Authorize 属性。到目前为止我所做的是...
网页配置
在我的 Global.asax
我正在使用自定义 IIdentity,以便将来可以添加一些自定义属性。为了在我的控制器操作中测试这一点,我做了这个......
我可以看到包含所有用户信息的自定义身份,但主体对象上没有角色。对我错过的任何帮助都会很棒。谢谢。
.net - 阻止程序集更改 IPrinicpal
我的应用程序加载了许多不同的插件程序集。每个插件都可以将自己的服务添加到 IoC 容器中,也可以使用主应用程序提供的所有服务。
我正在从一个自制的安全解决方案转向使用 CAS(PrincipalPermissionAttribute 和一个从 CodeAccessSecurityAttribute 派生的自己的解决方案)。
我可以防止加载的程序集更改 System.Threading.Thread.CurrentPrincipal (并以这种方式绕过我的安全检查)吗?
c# - IPrincipal.IsInRole() 仅在我截断角色名称时才有效 - 为什么?
我有一个严重依赖用户授权的应用程序。在其中,我IPrincipal.IsInRole()
用来检查用户是否在正确的组中:
这在大多数情况下都可以正常工作,但如果主体是 a 的实例,则会失败(返回不正确的结果)WindowsPrincipal
。我发现要使其正常工作,我必须将传入的角色名称截断为 32 个字符长(包括域名和\
):
然后截断角色名称可以正常工作。为什么?这是一个错误/功能/记录的问题吗?我有一种暗示,它可能与 Win2000 域有关,但找不到任何信息。
一些额外信息:
这是一个问题,因为应用程序可以配置为使用活动目录或“自定义”进行授权(“自定义”是任何支持接口的授权提供程序 - 可以是基于 SQL 的、基于文件的等) ..)。配置自定义时,角色很可能不需要截断,因此我不想在我的代码中处理这种特殊情况。此外,我还有应用程序的另一部分使用System.DirectoryServices.AccountManagement
命名空间中的类来查找组成员资格。这需要完整的角色名称,如果它们被截断,则不起作用。