我注意到很多Owin.Security内容都在Microsoft.AspNetCore.Authentication名称空间中。
喜欢
Microsoft.AspNetCore.Authentication.Cookies
Microsoft.AspNetCore.Authentication.Facebook
Microsoft.AspNetCore.Authentication.JwtBearer但是对于传统的OneBitSoftware.中的Micosoft.Owin.Security.ActiveDirectory来说,一个名为Microsoft.AspNetCore.Authentication.ActiveDirectory的包实际上不是来自微软,而是来自某些ASP.NET。托管这里。
我很好奇ActiveDirectory名称空间是否已被重命名为JwtBearer、OpenIdConnect或OAuth。但似乎没有一个能像这样与AzureAD一起工作:
var options = new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = ...
}我试图使用AzureAD进行身份验证,没有ActiveDirectory,我应该使用哪个NuGet包?
更新
ASP.NET文档站点中的例子相当古老。包,如
"Microsoft.AspNet.Security.OAuthBearer": "1.0.0-beta3",不再用于最新的Asp.net核心。
发布于 2016-06-02 13:25:22
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}"
}用于NuGet的JwtBearer包是
"Microsoft.AspNetCore.Authentication.JwtBearer": "1.0.0-rc2-final"https://stackoverflow.com/questions/37575281
复制相似问题