【问题标题】:What is the Asp.NET Core library for Micosoft.Owin.Security.ActiveDirectory to implement Azure Active Directory?用于实现 Azure Active Directory 的 Micosoft.Owin.Security.ActiveDirectory 的 Asp.NET Core 库是什么?
【发布时间】:2016-10-01 05:05:41
【问题描述】:

我注意到很多Owin.Security 的东西都在Microsoft.AspNetCore.Authentication 命名空间中。

喜欢

Microsoft.AspNetCore.Authentication.Cookies
Microsoft.AspNetCore.Authentication.Facebook
Microsoft.AspNetCore.Authentication.JwtBearer

但是对于传统 ASP.NET 中的 Micosoft.Owin.Security.ActiveDirectory 等效项,名为 Microsoft.AspNetCore.Authentication.ActiveDirectory 的包实际上不是来自 Microsoft,而是来自某些 OneBitSoftware。托管here

我很好奇 ActiveDirectory 命名空间是否已重命名为 JwtBearerOpenIdConnectOAuth。但似乎没有人像这样与 AzureAD 一起工作:

var options = new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
    Tenant = ...
}

我尝试使用 AzureAD 进行身份验证,没有ActiveDirectory,我应该使用哪个 NuGet 包?


更新

ASP.NET docs site 中的示例相当陈旧。像

这样的包
"Microsoft.AspNet.Security.OAuthBearer": "1.0.0-beta3",

不再用于最新的 Asp.net 核心。

【问题讨论】:

标签: cors asp.net-core azure-active-directory


【解决方案1】:

Tratcher 在问题评论部分指出了正确的方向。

所以我写了一个扩展方法来使用 Azure AD。

namespace Microsoft.AspNetCore.Builder
{
    public static class ApplicationBuilderExtensions
    {
        public static IApplicationBuilder UseAzureADBearerAuthentication(
            this IApplicationBuilder app,
            IConfigurationRoot configuration)
        {
            var tenant = configuration.GetSection("AzureAD:Tenant").Value;
            var azureADInstance = configuration.GetSection("AzureAD:AzureADInstance").Value;
            var audience = configuration.GetSection("AzureAD:Audience").Value;
            var authority = $"{azureADInstance}{tenant}";


            var jwtBearerAuthOptions = new JwtBearerOptions
            {
                Audience = audience,
                AutomaticAuthenticate = true,
                AutomaticChallenge = true,
                Authority = authority
            };
            app.UseJwtBearerAuthentication(jwtBearerAuthOptions);
            return app;
        }
    }
}

IApplicationBuilder 上的扩展方法被放入Microsoft.AspNetCore.Builder 的命名空间中。

Startup.cs

app.UseCors(builder => builder
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod());
app.UseAzureADBearerAuthentication(Configuration);
app.UseMvc();

设置存储在 appsettings.json 中,如下所示:

"AzureAD": {
  "AzureADInstance": "https://login.microsoftonline.com/",
  "Tenant": "{my AD}",
  "Audience": "{my application registered in AD}"
}

JwtBearer 的 NuGet 包是

"Microsoft.AspNetCore.Authentication.JwtBearer": "1.0.0-rc2-final"

【讨论】:

猜你喜欢
  • 2021-10-28
  • 1970-01-01
  • 2018-05-18
  • 2019-01-03
  • 2022-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多