【问题标题】:Use On-Premise AD for Authentication in asp.Net Core Web API在 asp.Net Core Web API 中使用 On-Premise AD 进行身份验证
【发布时间】:2023-03-05 04:33:01
【问题描述】:

免责声明:
我在使用 asp.Net 进行身份验证方面非常陌生,尽管过去几天在网上搜索过,但我感觉就像在兜圈子,但仍然找不到起点。

问题:
我们有一个 Web 应用程序 (Vue3/Typescript),它从 Web API (asp.net core) 获取数据。 Web 应用程序和 Web API 通过 IIS 托管在同一台服务器上,因此我们实施了 CORS 策略。当用户在浏览器中打开 Web 应用程序时,我们希望通过 Web API 针对使用单点登录 (SSO) 的本地 AD 对用户进行身份验证。 AD存在于同一网络中。我们不希望在 Web API 中保存有关用户的任何信息超过会话存在的时间。因此没有用于保存用户、角色或其他任何内容的表格。应在 AD 中配置角色以指定谁有权访问 Web API 并可以调用某些端点。

我已经阅读了有关 Microsoft Docs 的文章,但并未完全理解所有内容。阅读文章后,我仍然难以回答以下问题:

  • 我总是需要身份吗?
  • 我在哪里实施有关我要对用户进行身份验证的 AD 的信息?
  • 在配置应用程序时,实施 Azure AD (AAD) 和本地 AD 有什么区别?
  • 哪些角色扮演 OpenId Connect (OIDC) 和 OAuth,是必要的还是可选的?
  • 我是否从本地 AD 获得 JSON Web 令牌 (JWT)?

我在 Startup.cs 中添加了身份验证中间件,但仅此而已。

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<IISServerOptions>(options =>
    {
        options.AutomaticAuthentication = false;
    });

    services.AddDbContext<MyDbContext>();

    services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
 
    services.AddAuthentication();                

    services.AddCors();

    services.AddControllers();

    services.AddMvc();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseHttpsRedirection();

    app.UseRouting();

    app.UseCors();
        
    app.UseSession();

    app.UseAuthentication();

    app.UseAuthorization();

    app.UseEndpoints();
}

感谢您对正确方向的任何提示

下图显示了我们尝试实现的目标,但我们不确定是否/如何实现,因为我们不想在应用程序数据库中存储任何用户信息。

【问题讨论】:

    标签: c# asp.net-core active-directory


    【解决方案1】:

    我总是需要身份吗?

    身份存储用户的个人资料,应用程序以应用程序的身份运行所有请求,使用应用程序池或进程身份,然后,我们可以实现身份验证和授权。

    我在哪里实施有关我想要针对的 AD 的信息 对用户进行身份验证?

    在 ASP.NET Core 中实现 Active Directory 身份验证的最佳方法是使用 Windows authentication。但是,这仅在您运行的服务器加入域(或受信任的域)时才有效。

    实施 Azure AD (AAD) 和实施 Azure AD (AAD) 有什么区别? 在配置应用程序时使用本地 AD?

    Active Directory (AD) 是 Windows Server 中包含的一组本地功能,例如:Active Directory 域服务、Active Directory 证书服务。更多详细信息见this article

    Azure Active Directory (Azure AD):基于云的身份和移动设备管理,为 Microsoft 365、Azure 门户或 SaaS 应用程序等资源提供用户帐户和身份验证服务。

    AAD 和 On-Primise AD 的区别,见Compare Active Directory to Azure Active Directory

    扮演 OpenId Connect (OIDC) 和 OAuth 的角色是必要的或 可选?

    IdentityServer4 是用于 ASP.NET Core 的 OpenID Connect 和 OAuth 2.0 框架。 IdentityServer4 支持以下安全功能:身份验证即服务 (AaaS)、多种应用程序类型的单点登录/注销 (SSO)、API 和联合网关的访问控制。您可以尝试在您的 asp.net 核心应用程序中使用它,请参阅 this article

    我是否从本地 AD 获取 JSON Web 令牌 (JWT)?

    您的意思是要同时启用 JWT 和 AD 身份验证?如果是这种情况,当您使用 JWT 验证用户时,您还应该针对 Active Directory 验证用户的凭据(用户名/密码)。

    【讨论】:

    • 感谢您的回复。所有服务器都在同一个域或受信任的域中。所以 Windows 身份验证似乎是要走的路。我阅读了有关身份的文章,但很难理解,是否需要将有关用户的任何数据保存在应用程序数据库中,或者我是否可以仅使用 AD 中的用户并通过声明配置有关用户的所需信息。
    猜你喜欢
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 2016-12-22
    • 2017-04-08
    • 1970-01-01
    • 2021-10-05
    相关资源
    最近更新 更多