相关疑难解决方法(0)

linux docker容器中的Windows身份验证

我正在尝试在 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)

kerberos windows-authentication gssapi http-negotiate gss

17
推荐指数
2
解决办法
1万
查看次数

Windows 身份验证适用于 IIS,但不适用于 Kestrel / Microsoft.AspNetCore.Authentication.Negotiate(不在 Chrome 中,有时在 Edge 中,始终在 IE 中)?

我使用 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 中工作。

  1. 导入 NuGet 包 Microsoft.AspNetCore.Authentication.Negotiate

  2. 添加以下代码ConfigureService()Startup.cs

    services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
Run Code Online (Sandbox Code Playgroud)
  1. 添加以下代码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)

asp.net iis kestrel-http-server asp.net-core blazor

8
推荐指数
2
解决办法
4874
查看次数