Asp.net core ASP Net MVC Core-当用户浏览任何页面时从Active Directory加载用户数据
以下是我的开发环境:Asp.net core ASP Net MVC Core-当用户浏览任何页面时从Active Directory加载用户数据,asp.net-core,asp.net-core-mvc,claims-based-identity,Asp.net Core,Asp.net Core Mvc,Claims Based Identity,以下是我的开发环境: 内联网网站 Active Directory身份验证/授权 Asp网络核心 当用户首先进入应用程序中的任何页面时,我试图获取存储在Active Directory属性中的数据。所有用户权限、员工ID、学生ID等。。。。存储在AD属性和安全组中。一些属性也需要显示在网站上 假设我的网站有以下网址 等等 任何用户都可以从其他Intranet门户免费访问网站的某些区域/URL,我不知道应该在哪里编写代码来满足这些标准。问题是,应用程序没有特定的入口点,比如身份验证
- 内联网网站
- Active Directory身份验证/授权
- Asp网络核心
你们能给我一些建议吗?如果我遗漏了任何东西,并且我的想法不起作用,请随意批评。你说的没错,没有System.DirectoryServices(我保证,它在积压工作中),所以有几个地方可以这样做 如果您已经在使用集成身份验证,那么组成员身份的SID将在调用IsInRole()时解决,因此您可以使用基于角色的成员身份(而不是基于声明)来解决基本身份验证问题 然而,如果您想支持基于表单的机制,那么您应该考虑使用调用web服务来验证您的登录,至少可以为您提供一个简单的登录。您可以在控制器代码中查询API,并编写标识cookie。此cookie会自动加密和签名,因此不能被篡改 当您需要角色和属性时,问题就会出现。如果您沿着cookie路线前进,您可能会在将标识作为cookie写出之前,将所有这些作为声明放在标识中。如果数量不太多,这可能会起作用——cookies的最大大小(取决于浏览器,但通常小于4k)。您可以使用分块cookie,但这会影响性能。相反,您可以使用一个引用cookie,在其中输入对另一个存储了实际完全填充的标识的存储的引用,可以是会话、redis或其他 然后,你可以把参考资料拿出来,去你的商店,并重新水化身份 老实说,我不会尝试将所有这些合并到ASP.NET标识中。这意味着它是应用程序中用户信息的唯一来源,而在您的情况下,这是不正确的。你的唯一来源应该是广告
还有一个到核心的端口,如果您想避免使用web服务方法,它应该很好地支持DirectoryServices。谢谢,我想我会继续使用我已经在所有其他项目中使用的web服务方法。我已经看了你关于Auths的两个视频,我正试图通过创建RequirementHandler和Policy并将其放在BaseController上来做同样的事情。因此,每当用户点击我网站上的任何区域时,就会加载来自广告的信息。声明转换中间件是我不知道的事情。我也会对它做一些研究。在策略中这样做很好,只需缓存一段时间以提高性能。新的AD ASPNetCore库一周前发布。(). 我想和你核实一下,这只用于Windows身份验证,对吗?它与从AD获取数据无关,反之亦然。谢谢。那不是正式的包裹。我不知道是谁写的。是的,看起来它只是为ntlm写的
var claims = new List<Claim>();
claims.Add(new Claim("UserName", "John.Smith", ClaimValueTypes.String, Issuer));
claims.Add(new Claim("RefNo", "02343001", ClaimValueTypes.String, Issuer));
claims.Add(new Claim("Email", "MyEmail@email.com", ClaimValueTypes.String, Issuer));
public class ApplicationUser : IdentityUser
{
public string RefNo { get; set; }
public string Email { get; set; }
}