我正在尝试在 kubernetes 下的 linux docker 容器中使用 windows 身份验证。
我正在关注此设置:https : //docs.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth?view=aspnetcore-3.1&tabs=visual-studio#kestrel
应用程序在 .net core3 中,使用 nuget Microsoft.AspNetCore.Authentication.Negotiate 并在 kestrel 中运行
我已经添加了
services.AddAuthentication(Microsoft.AspNetCore.Authentication.Negotiate.NegotiateDefaults.AuthenticationScheme).AddNegotiate();
Run Code Online (Sandbox Code Playgroud)
也
app.UseAuthentication();
Run Code Online (Sandbox Code Playgroud)
并将我的 devbase 映像设置为
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster as final
USER root
RUN whoami
RUN apt update && apt dist-upgrade -y
ADD ca/ca.crt /usr/local/share/ca-certificates/ca.crt
RUN chmod 644 /usr/local/share/ca-certificates/*
RUN update-ca-certificates
RUN DEBIAN_FRONTEND=noninteractive apt install -y krb5-config krb5-user
COPY krb5.conf /etc/krb5.conf
RUN mkdir /app
RUN echo BQIAAA..== | base64 -d > /app/is.k01.HTTP.keytab
WORKDIR /app
#RUN docker version
RUN groupadd …Run Code Online (Sandbox Code Playgroud) 我使用 Windows 身份验证创建了一个新的 Blazor(服务器端)应用程序,并使用 IIS Express 运行它。它将显示一条消息“Hello Domain\User!” 来自...\BlazorApp1\BlazorApp1\Shared\LoginDisplay.razor右上方的以下剃须刀组件 ( )。
<AuthorizeView>
Hello, @context.User.Identity.Name!
</AuthorizeView>
Run Code Online (Sandbox Code Playgroud)
如果使用 Kestrel 运行,则不会显示该消息。所以我尝试了以下步骤使其在 Kestrel 中工作。
导入 NuGet 包 Microsoft.AspNetCore.Authentication.Negotiate
添加以下代码ConfigureService()中Startup.cs。
services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
Run Code Online (Sandbox Code Playgroud)
Configure()中Startup.cs。它们被添加到app.UseRouting();和之间app.UseEndpoints(...; app.UseAuthentication();
app.UseAuthorization();
Run Code Online (Sandbox Code Playgroud)
它仍然不显示 Hello 消息。我读到“允许匿名请求。使用 ASP.NET Core 授权来挑战匿名身份验证请求。” 在文档中,所以我做了以下操作来禁用匿名请求。
在 中_Host.cshtml,在 之后添加了以下几行@namespace BlazorApp1.Pages。
@using Microsoft.AspNetCore.Authorization
@attribute [Authorize]
Run Code Online (Sandbox Code Playgroud)
但是,消息还是不显示?这是否意味着授权不起作用?
更新:
我将文件更新...\BlazorApp1\BlazorApp1\Shared\LoginDisplay.razor为
<AuthorizeView>
<Authorized>
Hello, @context.User.Identity.Name!
</Authorized>
<NotAuthorized>
You …Run Code Online (Sandbox Code Playgroud)