如何在Asp.net Core中为应用程序和数据库连接使用单独的Windows身份验证?

问题描述

在我的Asp.net核心应用程序中,我已经具有用于验证用户身份的Windows身份验证设置。

public HomeController(IHttpContextAccessor accessor)
{
    // find login id from current logged in user.
    ClaimsPrincipal user = accessor.HttpContext.User;
    var DirectoryContext = new PrincipalContext(ContextType.Domain);
    UserPrincipal CurrentUser = UserPrincipal.FindByIdentity(DirectoryContext,_domainUserId);        
    string userEmail = CurrentUser.EmailAddress;

    //Use this email ID to check if user is allowed to view the home page.
}

到目前为止,它的运行情况还算不错。但是问题来了。

到目前为止,我的应用程序正在使用具有ID和密码的sql Server用户连接到数据库以验证电子邮件ID。该用户ID和密码在Appsettings.json文件的连接字符串中提供。

现在,数据库管理员希望删除所有sql Server身份验证用户,并希望使用域用户帐户连接到数据库

为此,他们创建了可以访问数据库的域用户 Mydomain \ DbUser1

我当时正在考虑模拟,但我怀疑它会搞乱电子邮件验证部分。如果我创建一个 Mydomain \ DbUser1 下运行的新应用程序池,并在连接字符串中使用sspI,那么家庭控制器中会发生什么?仍然能够识别正在从其浏览器访问该应用程序的客户端用户吗?

基本上我需要的是:

对于从浏览器访问应用程序的用户,该应用程序应该能够使用Windows身份验证来获取电子邮件ID。假设 Mydomain \ John Mydomain \ Ella Mydomain \ Bob

但是在收到电子邮件ID后,它需要使用 Mydomain \ DbUser1 连接到数据库以验证电子邮件ID。

我该如何实现?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)