如何使用 AD 进行身份验证,以及如何在适用于内联网的 .NET Core Web 应用上使用 SQL 数据库进行授权



我有一个MVC .使用 Windows 身份验证的 NetCore 3.0 Web 应用程序,我想向 SQL 数据库上的每个用户添加角色/权限。我的想法是将他们的AD用户名与我创建的数据库表(用户,角色,权限(进行比较。如何做到这一点?我找到了供用户创建自己的帐户的文档,但没有使用AD的文档。

可以使用IClaimsTransformation将你当前的Windows认证用户与本地数据库用户关联,检查用户是否存在/角色/权限,还可以将用户的自定义声明(例如角色(添加到ClaimPrincipal中,以便以后可以直接从User.Claims属性:

public class ClaimsTransformer : IClaimsTransformation
{
public Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal principal)
{
var id = ((ClaimsIdentity)principal.Identity);
var ci = new ClaimsIdentity(id.Claims, id.AuthenticationType, id.NameClaimType, id.RoleClaimType);
//read database and create/check a user in local database , add custom claims  in Principal
if (....)
{
ci.AddClaim(new Claim("localUserID", "XXX"));
}
else
{
ci.AddClaim(new Claim("localUserID", "XXXX"));
}

var cp = new ClaimsPrincipal(ci);
return Task.FromResult(cp);
}
}

services.AddTransient<IClaimsTransformation, ClaimsTransformer>();

最新更新