您不需要开始新的身份验证并发出新的票证,您可以继续使用从 windows 身份验证验证的票证/原则,您可以使用 IClaimsTransformation
将当前的 windows 身份验证用户与本地数据库用户相关联:
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 userID as claim 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);
}
}
在IClaimsTransformation
windows 身份验证后,您可以使用 windows 用户的 id/name 在数据库中检查/创建本地用户,将标识数据库中本地用户的 id 添加到 ClaimsPrincipal ,以便下次您可以使用该声明来识别本地数据库用户执行用户管理。