ASP.NET Core:如何在连接字符串中为 Windows 身份验证指定凭据?

时间:2021-04-23 14:15:23

标签: asp.net windows amazon-web-services kerberos

我正在开发一个 ASP.NET Core 5.0 Web API,我的计划是将它部署到 AWS Lambda。为此,我需要使用 AWS Lambda .NET 5.0 基础 Docker 映像(Linux 映像)来容器化 API。不幸的是,这意味着我的数据库的 Windows 身份验证在容器内不起作用,因为它是 Linux,所以我总是收到一条错误消息:

无法使用 Kerberos 进行身份验证。确保已使用“kinit”在客户端上初始化 Kerberos,并且已为 SQL Server 注册服务主体名称以允许 Kerberos 身份验证。

每次我尝试访问连接到我的 Microsoft SQL Server 数据库的 API 端点时都会发生这种情况。我曾尝试研究在我的容器中启用 Kerberos,但我尝试过的一切都对我不起作用。我已经尝试通过添加行来做到这一点:

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get -qq update && 
    apt-get -yqq install krb5-user libpam-krb5 && 
    apt-get -yqq clean

到我的 Dockerfile 来安装 Kerberos,但我还是遇到了同样的问题。所以这让我想到了我的实际问题(除非有人可以建议让 Kerberos 工作)。我已经决定,如果我能以某种方式在应用程序中指定我的 Windows 身份验证凭据,以便我在容器中的 API 可以使用它来进行身份验证,那将是最简单的。我必须使用 Windows 身份验证(我没有设置传统身份验证的选项),所以在这一点上这似乎是最好的解决方案。可以这样做吗?

我已经尝试在我的 .csproj 文件中设置身份模拟,但我的项目在添加行后加载失败:

<system.web>
  <authentication mode="Windows"/>
  <identity impersonate="true" userName="foo" password="bar"/>
</system.web>

也许这是在正确的轨道上,但我做错了?似乎我不能只在连接字符串中指定用户 ID 和密码,因为据我所知,这从未用于 Windows 身份验证。任何建议将不胜感激!

0 个答案:

没有答案
相关问题