Browse Source

Forward Identity authentication for `Bearer`.

pull/13167/head
maliming 4 years ago
parent
commit
6fd38cde92
No known key found for this signature in database GPG Key ID: 96224957E51C89E
  1. 26
      modules/identity/src/Volo.Abp.Identity.AspNetCore/Microsoft/AspNetCore/Extensions/DependencyInjection/AbpAspNetCoreServiceCollectionExtensions.cs
  2. 5
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs
  3. 5
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs
  4. 5
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyProjectNameModule.cs
  5. 5
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs
  6. 7
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyProjectNameModule.cs
  7. 7
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyProjectNameModule.cs
  8. 3
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs
  9. 3
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs
  10. 3
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs
  11. 3
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs
  12. 3
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs

26
modules/identity/src/Volo.Abp.Identity.AspNetCore/Microsoft/AspNetCore/Extensions/DependencyInjection/AbpAspNetCoreServiceCollectionExtensions.cs

@ -0,0 +1,26 @@
using System;
using Microsoft.Extensions.DependencyInjection;
namespace Microsoft.AspNetCore.Extensions.DependencyInjection;
public static class AbpAspNetCoreServiceCollectionExtensions
{
public static IServiceCollection ForwardIdentityAuthenticationForBearer(this IServiceCollection services, string targetAuthenticationScheme = "Bearer")
{
services.ConfigureApplicationCookie(options =>
{
options.ForwardDefaultSelector = ctx =>
{
string authorization = ctx.Request.Headers.Authorization;
if (!authorization.IsNullOrWhiteSpace() && authorization.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase))
{
return targetAuthenticationScheme;
}
return null;
};
});
return services;
}
}

5
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs

@ -1,5 +1,6 @@
using Blazorise.Bootstrap5; using Blazorise.Bootstrap5;
using Blazorise.Icons.FontAwesome; using Blazorise.Icons.FontAwesome;
using Microsoft.AspNetCore.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Models;
using MyCompanyName.MyProjectName.Data; using MyCompanyName.MyProjectName.Data;
@ -129,7 +130,7 @@ public class MyProjectNameModule : AbpModule
{ {
context.Services.Replace(ServiceDescriptor.Singleton<IEmailSender, NullEmailSender>()); context.Services.Replace(ServiceDescriptor.Singleton<IEmailSender, NullEmailSender>());
} }
ConfigureUrls(configuration); ConfigureUrls(configuration);
ConfigureBundles(); ConfigureBundles();
ConfigureAutoMapper(context); ConfigureAutoMapper(context);
@ -188,6 +189,8 @@ public class MyProjectNameModule : AbpModule
options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]);
options.Audience = "MyProjectName"; options.Audience = "MyProjectName";
}); });
context.Services.ForwardIdentityAuthenticationForBearer();
} }
private void ConfigureLocalizationServices() private void ConfigureLocalizationServices()

5
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs

@ -1,5 +1,6 @@
using Blazorise.Bootstrap5; using Blazorise.Bootstrap5;
using Blazorise.Icons.FontAwesome; using Blazorise.Icons.FontAwesome;
using Microsoft.AspNetCore.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Models;
using MyCompanyName.MyProjectName.Data; using MyCompanyName.MyProjectName.Data;
@ -125,7 +126,7 @@ public class MyProjectNameModule : AbpModule
{ {
var hostingEnvironment = context.Services.GetHostingEnvironment(); var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();
if (hostingEnvironment.IsDevelopment()) if (hostingEnvironment.IsDevelopment())
{ {
context.Services.Replace(ServiceDescriptor.Singleton<IEmailSender, NullEmailSender>()); context.Services.Replace(ServiceDescriptor.Singleton<IEmailSender, NullEmailSender>());
@ -189,6 +190,8 @@ public class MyProjectNameModule : AbpModule
options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]);
options.Audience = "MyProjectName"; options.Audience = "MyProjectName";
}); });
context.Services.ForwardIdentityAuthenticationForBearer();
} }
private void ConfigureLocalizationServices() private void ConfigureLocalizationServices()

5
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyProjectNameModule.cs

@ -1,5 +1,6 @@
using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Models;
using MyCompanyName.MyProjectName.Data; using MyCompanyName.MyProjectName.Data;
@ -112,7 +113,7 @@ public class MyProjectNameModule : AbpModule
{ {
var hostingEnvironment = context.Services.GetHostingEnvironment(); var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();
if (hostingEnvironment.IsDevelopment()) if (hostingEnvironment.IsDevelopment())
{ {
context.Services.Replace(ServiceDescriptor.Singleton<IEmailSender, NullEmailSender>()); context.Services.Replace(ServiceDescriptor.Singleton<IEmailSender, NullEmailSender>());
@ -172,6 +173,8 @@ public class MyProjectNameModule : AbpModule
options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]);
options.Audience = "MyProjectName"; options.Audience = "MyProjectName";
}); });
services.ForwardIdentityAuthenticationForBearer();
} }
private void ConfigureLocalization() private void ConfigureLocalization()

5
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs

@ -1,5 +1,6 @@
using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Models;
using MyCompanyName.MyProjectName.Data; using MyCompanyName.MyProjectName.Data;
@ -114,7 +115,7 @@ public class MyProjectNameModule : AbpModule
{ {
var hostingEnvironment = context.Services.GetHostingEnvironment(); var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();
if (hostingEnvironment.IsDevelopment()) if (hostingEnvironment.IsDevelopment())
{ {
context.Services.Replace(ServiceDescriptor.Singleton<IEmailSender, NullEmailSender>()); context.Services.Replace(ServiceDescriptor.Singleton<IEmailSender, NullEmailSender>());
@ -174,6 +175,8 @@ public class MyProjectNameModule : AbpModule
options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]);
options.Audience = "MyProjectName"; options.Audience = "MyProjectName";
}); });
services.ForwardIdentityAuthenticationForBearer();
} }
private void ConfigureLocalization() private void ConfigureLocalization()

7
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyProjectNameModule.cs

@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.AspNetCore.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Models;
using MyCompanyName.MyProjectName.Data; using MyCompanyName.MyProjectName.Data;
using MyCompanyName.MyProjectName.Localization; using MyCompanyName.MyProjectName.Localization;
@ -118,7 +119,7 @@ public class MyProjectNameModule : AbpModule
{ {
var hostingEnvironment = context.Services.GetHostingEnvironment(); var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();
if (hostingEnvironment.IsDevelopment()) if (hostingEnvironment.IsDevelopment())
{ {
context.Services.Replace(ServiceDescriptor.Singleton<IEmailSender, NullEmailSender>()); context.Services.Replace(ServiceDescriptor.Singleton<IEmailSender, NullEmailSender>());
@ -176,6 +177,8 @@ public class MyProjectNameModule : AbpModule
options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]);
options.Audience = "MyProjectName"; options.Audience = "MyProjectName";
}); });
services.ForwardIdentityAuthenticationForBearer();
} }
private void ConfigureLocalization() private void ConfigureLocalization()

7
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyProjectNameModule.cs

@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.AspNetCore.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Models;
using MyCompanyName.MyProjectName.Data; using MyCompanyName.MyProjectName.Data;
using MyCompanyName.MyProjectName.Localization; using MyCompanyName.MyProjectName.Localization;
@ -119,7 +120,7 @@ public class MyProjectNameModule : AbpModule
{ {
var hostingEnvironment = context.Services.GetHostingEnvironment(); var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();
if (hostingEnvironment.IsDevelopment()) if (hostingEnvironment.IsDevelopment())
{ {
context.Services.Replace(ServiceDescriptor.Singleton<IEmailSender, NullEmailSender>()); context.Services.Replace(ServiceDescriptor.Singleton<IEmailSender, NullEmailSender>());
@ -178,6 +179,8 @@ public class MyProjectNameModule : AbpModule
options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]);
options.Audience = "MyProjectName"; options.Audience = "MyProjectName";
}); });
services.ForwardIdentityAuthenticationForBearer();
} }
private void ConfigureLocalization() private void ConfigureLocalization()

3
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs

@ -4,6 +4,7 @@ using System.Net.Http;
using Blazorise.Bootstrap5; using Blazorise.Bootstrap5;
using Blazorise.Icons.FontAwesome; using Blazorise.Icons.FontAwesome;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
@ -138,6 +139,8 @@ public class MyProjectNameBlazorModule : AbpModule
options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]);
options.Audience = "MyProjectName"; options.Audience = "MyProjectName";
}); });
context.Services.ForwardIdentityAuthenticationForBearer();
} }
private void ConfigureVirtualFileSystem(IWebHostEnvironment hostingEnvironment) private void ConfigureVirtualFileSystem(IWebHostEnvironment hostingEnvironment)

3
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs

@ -5,6 +5,7 @@ using System.Linq;
using System.Net.Http; using System.Net.Http;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
@ -129,6 +130,8 @@ public class MyProjectNameHttpApiHostModule : AbpModule
HttpClientHandler.DangerousAcceptAnyServerCertificateValidator HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
}; };
}); });
context.Services.ForwardIdentityAuthenticationForBearer();
} }
private static void ConfigureSwaggerServices(ServiceConfigurationContext context, IConfiguration configuration) private static void ConfigureSwaggerServices(ServiceConfigurationContext context, IConfiguration configuration)

3
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs

@ -1,6 +1,7 @@
using System; using System;
using System.IO; using System.IO;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
@ -118,6 +119,8 @@ public class MyProjectNameWebModule : AbpModule
options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]);
options.Audience = "MyProjectName"; options.Audience = "MyProjectName";
}); });
context.Services.ForwardIdentityAuthenticationForBearer();
} }
private void ConfigureAutoMapper() private void ConfigureAutoMapper()

3
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs

@ -5,6 +5,7 @@ using System.Threading.Tasks;
using Blazorise.Bootstrap5; using Blazorise.Bootstrap5;
using Blazorise.Icons.FontAwesome; using Blazorise.Icons.FontAwesome;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
@ -142,6 +143,8 @@ public class MyProjectNameBlazorHostModule : AbpModule
options.Audience = "MyProjectName"; options.Audience = "MyProjectName";
}); });
context.Services.ForwardIdentityAuthenticationForBearer();
if (hostingEnvironment.IsDevelopment()) if (hostingEnvironment.IsDevelopment())
{ {
Configure<AbpVirtualFileSystemOptions>(options => Configure<AbpVirtualFileSystemOptions>(options =>

3
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs

@ -4,6 +4,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
@ -147,6 +148,8 @@ public class MyProjectNameIdentityServerModule : AbpModule
options.Audience = configuration["AuthServer:ApiName"]; options.Audience = configuration["AuthServer:ApiName"];
}); });
context.Services.ForwardIdentityAuthenticationForBearer();
Configure<AbpDistributedCacheOptions>(options => Configure<AbpDistributedCacheOptions>(options =>
{ {
options.KeyPrefix = "MyProjectName:"; options.KeyPrefix = "MyProjectName:";

Loading…
Cancel
Save