diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln
index b731aff187..ee45583895 100644
--- a/framework/Volo.Abp.sln
+++ b/framework/Volo.Abp.sln
@@ -1,4 +1,5 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
+
+Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28922.388
MinimumVisualStudioVersion = 10.0.40219.1
@@ -252,13 +253,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.ObjectMapping.Test
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Ddd.Application.Contracts", "src\Volo.Abp.Ddd.Application.Contracts\Volo.Abp.Ddd.Application.Contracts.csproj", "{73559227-EBF0-475F-835B-1FF0CD9132AA}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Minify", "src\Volo.Abp.Minify\Volo.Abp.Minify.csproj", "{928DC30D-C078-4BB4-A9F8-FE7252C67DC6}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Minify", "src\Volo.Abp.Minify\Volo.Abp.Minify.csproj", "{928DC30D-C078-4BB4-A9F8-FE7252C67DC6}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Minify.Tests", "test\Volo.Abp.Minify.Tests\Volo.Abp.Minify.Tests.csproj", "{E69182B3-350A-43F5-A935-5EBBEBECEF97}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Minify.Tests", "test\Volo.Abp.Minify.Tests\Volo.Abp.Minify.Tests.csproj", "{E69182B3-350A-43F5-A935-5EBBEBECEF97}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Serilog", "src\Volo.Abp.AspNetCore.Serilog\Volo.Abp.AspNetCore.Serilog.csproj", "{3B801003-BE74-49ED-9749-DA5E99F45EBF}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.Serilog", "src\Volo.Abp.AspNetCore.Serilog\Volo.Abp.AspNetCore.Serilog.csproj", "{3B801003-BE74-49ED-9749-DA5E99F45EBF}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Serilog.Tests", "test\Volo.Abp.AspNetCore.Serilog.Tests\Volo.Abp.AspNetCore.Serilog.Tests.csproj", "{9CAA07ED-FE5C-4427-A6FA-6C6CB5B4CC62}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.Serilog.Tests", "test\Volo.Abp.AspNetCore.Serilog.Tests\Volo.Abp.AspNetCore.Serilog.Tests.csproj", "{9CAA07ED-FE5C-4427-A6FA-6C6CB5B4CC62}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Http.Client.IdentityModel.Relay", "src\Volo.Abp.Http.Client.IdentityModel.Relay\Volo.Abp.Http.Client.IdentityModel.Relay.csproj", "{925AF101-2203-409C-9C3B-03917316858F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -774,6 +777,10 @@ Global
{9CAA07ED-FE5C-4427-A6FA-6C6CB5B4CC62}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9CAA07ED-FE5C-4427-A6FA-6C6CB5B4CC62}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9CAA07ED-FE5C-4427-A6FA-6C6CB5B4CC62}.Release|Any CPU.Build.0 = Release|Any CPU
+ {925AF101-2203-409C-9C3B-03917316858F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {925AF101-2203-409C-9C3B-03917316858F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {925AF101-2203-409C-9C3B-03917316858F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {925AF101-2203-409C-9C3B-03917316858F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -906,6 +913,7 @@ Global
{E69182B3-350A-43F5-A935-5EBBEBECEF97} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{3B801003-BE74-49ED-9749-DA5E99F45EBF} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{9CAA07ED-FE5C-4427-A6FA-6C6CB5B4CC62} = {447C8A77-E5F0-4538-8687-7383196D04EA}
+ {925AF101-2203-409C-9C3B-03917316858F} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5}
diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/FodyWeavers.xml b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/FodyWeavers.xml
new file mode 100644
index 0000000000..be0de3a908
--- /dev/null
+++ b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/FodyWeavers.xsd b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Properties/launchSettings.json b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Properties/launchSettings.json
new file mode 100644
index 0000000000..d56e5c65b7
--- /dev/null
+++ b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Properties/launchSettings.json
@@ -0,0 +1,27 @@
+{
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:52306/",
+ "sslPort": 0
+ }
+ },
+ "profiles": {
+ "IIS Express": {
+ "commandName": "IISExpress",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "Volo.Abp.Http.Client.IdentityModel": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "applicationUrl": "http://localhost:52307/"
+ }
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo.Abp.Http.Client.IdentityModel.Relay.csproj b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo.Abp.Http.Client.IdentityModel.Relay.csproj
new file mode 100644
index 0000000000..8974420c46
--- /dev/null
+++ b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo.Abp.Http.Client.IdentityModel.Relay.csproj
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+ netcoreapp3.1
+ Volo.Abp.Http.Client.IdentityModel.Relay
+ Volo.Abp.Http.Client.IdentityModel.Relay
+ $(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
+ false
+ false
+ false
+ true
+ Library
+
+
+
+
+
+
+
+
diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo/Abp/Http/Client/IdentityModel/Relay/AbpHttpClientIdentityModelModule.cs b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo/Abp/Http/Client/IdentityModel/Relay/AbpHttpClientIdentityModelModule.cs
new file mode 100644
index 0000000000..086d3de06d
--- /dev/null
+++ b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo/Abp/Http/Client/IdentityModel/Relay/AbpHttpClientIdentityModelModule.cs
@@ -0,0 +1,13 @@
+using Volo.Abp.IdentityModel;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.Http.Client.IdentityModel.Relay
+{
+ [DependsOn(
+ typeof(AbpHttpClientIdentityModelModule)
+ )]
+ public class AbpHttpClientIdentityModelRelayModule : AbpModule
+ {
+
+ }
+}
diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo/Abp/Http/Client/IdentityModel/Relay/IdentityModelRemoteServiceHttpClientRelayAuthenticator.cs b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo/Abp/Http/Client/IdentityModel/Relay/IdentityModelRemoteServiceHttpClientRelayAuthenticator.cs
new file mode 100644
index 0000000000..25a1fc771c
--- /dev/null
+++ b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo/Abp/Http/Client/IdentityModel/Relay/IdentityModelRemoteServiceHttpClientRelayAuthenticator.cs
@@ -0,0 +1,48 @@
+using System.Threading.Tasks;
+using IdentityModel.Client;
+using Microsoft.AspNetCore.Authentication;
+using Microsoft.AspNetCore.Http;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Http.Client.Authentication;
+using Volo.Abp.IdentityModel;
+
+namespace Volo.Abp.Http.Client.IdentityModel.Relay
+{
+ [Dependency(ReplaceServices = true)]
+ public class IdentityModelRemoteServiceHttpClientRelayAuthenticator : IdentityModelRemoteServiceHttpClientAuthenticator, ITransientDependency
+ {
+ public IHttpContextAccessor HttpContextAccessor { get; set; }
+
+ public IdentityModelRemoteServiceHttpClientRelayAuthenticator(
+ IIdentityModelAuthenticationService identityModelAuthenticationService)
+ : base(identityModelAuthenticationService)
+ {
+ }
+
+ public override async Task Authenticate(RemoteServiceHttpClientAuthenticateContext context)
+ {
+ if (context.RemoteService.GetUseCurrentAccessToken() != false)
+ {
+ var accessToken = await GetAccessTokenFromHttpContextOrNullAsync();
+ if (accessToken != null)
+ {
+ context.Request.SetBearerToken(accessToken);
+ return;
+ }
+ }
+
+ await base.Authenticate(context);
+ }
+
+ protected virtual async Task GetAccessTokenFromHttpContextOrNullAsync()
+ {
+ var httpContext = HttpContextAccessor?.HttpContext;
+ if (httpContext == null)
+ {
+ return null;
+ }
+
+ return await httpContext.GetTokenAsync("access_token");
+ }
+ }
+}
diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo.Abp.Http.Client.IdentityModel.csproj b/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo.Abp.Http.Client.IdentityModel.csproj
index e62293964a..d8eef1ba5d 100644
--- a/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo.Abp.Http.Client.IdentityModel.csproj
+++ b/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo.Abp.Http.Client.IdentityModel.csproj
@@ -1,18 +1,16 @@
-
+
- netcoreapp3.1
+ netstandard2.0
Volo.Abp.Http.Client.IdentityModel
Volo.Abp.Http.Client.IdentityModel
$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
false
false
false
- true
- Library
diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo/Abp/Http/Client/IdentityModel/IdentityModelRemoteServiceHttpClientAuthenticator.cs b/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo/Abp/Http/Client/IdentityModel/IdentityModelRemoteServiceHttpClientAuthenticator.cs
index 25763efbd5..5d9a85e0c5 100644
--- a/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo/Abp/Http/Client/IdentityModel/IdentityModelRemoteServiceHttpClientAuthenticator.cs
+++ b/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo/Abp/Http/Client/IdentityModel/IdentityModelRemoteServiceHttpClientAuthenticator.cs
@@ -1,7 +1,5 @@
using System.Threading.Tasks;
using IdentityModel.Client;
-using Microsoft.AspNetCore.Authentication;
-using Microsoft.AspNetCore.Http;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client.Authentication;
using Volo.Abp.IdentityModel;
@@ -11,8 +9,6 @@ namespace Volo.Abp.Http.Client.IdentityModel
[Dependency(ReplaceServices = true)]
public class IdentityModelRemoteServiceHttpClientAuthenticator : IRemoteServiceHttpClientAuthenticator, ITransientDependency
{
- public IHttpContextAccessor HttpContextAccessor { get; set; }
-
protected IIdentityModelAuthenticationService IdentityModelAuthenticationService { get; }
public IdentityModelRemoteServiceHttpClientAuthenticator(
@@ -21,33 +17,12 @@ namespace Volo.Abp.Http.Client.IdentityModel
IdentityModelAuthenticationService = identityModelAuthenticationService;
}
- public async Task Authenticate(RemoteServiceHttpClientAuthenticateContext context)
+ public virtual async Task Authenticate(RemoteServiceHttpClientAuthenticateContext context)
{
- if (context.RemoteService.GetUseCurrentAccessToken() != false)
- {
- var accessToken = await GetAccessTokenFromHttpContextOrNullAsync();
- if (accessToken != null)
- {
- context.Request.SetBearerToken(accessToken);
- return;
- }
- }
-
await IdentityModelAuthenticationService.TryAuthenticateAsync(
context.Client,
context.RemoteService.GetIdentityClient()
);
}
-
- protected virtual async Task GetAccessTokenFromHttpContextOrNullAsync()
- {
- var httpContext = HttpContextAccessor?.HttpContext;
- if (httpContext == null)
- {
- return null;
- }
-
- return await httpContext.GetTokenAsync("access_token");
- }
}
}