diff --git a/src/Contracts/Masa.Auth.Contracts.Admin/Masa.Auth.Contracts.Admin.csproj b/src/Contracts/Masa.Auth.Contracts.Admin/Masa.Auth.Contracts.Admin.csproj
index 84202157e..efbf0e97a 100644
--- a/src/Contracts/Masa.Auth.Contracts.Admin/Masa.Auth.Contracts.Admin.csproj
+++ b/src/Contracts/Masa.Auth.Contracts.Admin/Masa.Auth.Contracts.Admin.csproj
@@ -12,12 +12,12 @@
-
+
-
+
diff --git a/src/Services/Masa.Auth.Service.Admin/Application/Subjects/CommandHandler.cs b/src/Services/Masa.Auth.Service.Admin/Application/Subjects/CommandHandler.cs
index 52346b9de..673dfd8e4 100644
--- a/src/Services/Masa.Auth.Service.Admin/Application/Subjects/CommandHandler.cs
+++ b/src/Services/Masa.Auth.Service.Admin/Application/Subjects/CommandHandler.cs
@@ -639,7 +639,7 @@ public async Task ImpersonateAsync(ImpersonateUserCommand command)
var token = Guid.NewGuid().ToString();
var key = CacheKey.ImpersonationUserKey(token);
- await _distributedCacheClient.SetAsync(key, cacheItem, TimeSpan.FromMinutes(1));
+ await _distributedCacheClient.SetAsync(key, cacheItem, TimeSpan.FromMinutes(10));
command.Result = new ImpersonateOutput {
ImpersonationToken = token
diff --git a/src/Services/Masa.Auth.Service.Admin/Application/Subjects/QueryHandler.cs b/src/Services/Masa.Auth.Service.Admin/Application/Subjects/QueryHandler.cs
index 88e10fab0..c9a313977 100644
--- a/src/Services/Masa.Auth.Service.Admin/Application/Subjects/QueryHandler.cs
+++ b/src/Services/Masa.Auth.Service.Admin/Application/Subjects/QueryHandler.cs
@@ -787,7 +787,6 @@ public async Task GetImpersonatedUserAsync(ImpersonatedUserQuery query)
}
query.Result = cacheItem;
-
- await _distributedCacheClient.RemoveAsync(key);
+ //await _distributedCacheClient.RemoveAsync(key);
}
}
diff --git a/src/Services/Masa.Auth.Service.Admin/Services/UserService.cs b/src/Services/Masa.Auth.Service.Admin/Services/UserService.cs
index 9fb2f4b8d..949bd8b2b 100644
--- a/src/Services/Masa.Auth.Service.Admin/Services/UserService.cs
+++ b/src/Services/Masa.Auth.Service.Admin/Services/UserService.cs
@@ -394,7 +394,7 @@ public async Task ImpersonateAsync(IEventBus eventBus, [FromB
[AllowAnonymous]
[RoutePattern("impersonate", StartWithBaseUri = true, HttpMethod = "Get")]
- public async Task GetImpersonatedUserAsync([FromServices] IEventBus eventBus, [FromQuery] string impersonationToken)
+ public async Task GetImpersonatedAsync([FromServices] IEventBus eventBus, [FromQuery] string impersonationToken)
{
var query = new ImpersonatedUserQuery(impersonationToken);
await eventBus.PublishAsync(query);
diff --git a/src/Web/Masa.Auth.Security.OAuth.Providers/Masa.Auth.Security.OAuth.Providers.csproj b/src/Web/Masa.Auth.Security.OAuth.Providers/Masa.Auth.Security.OAuth.Providers.csproj
index b53e94ef5..11ea0e33c 100644
--- a/src/Web/Masa.Auth.Security.OAuth.Providers/Masa.Auth.Security.OAuth.Providers.csproj
+++ b/src/Web/Masa.Auth.Security.OAuth.Providers/Masa.Auth.Security.OAuth.Providers.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/src/Web/Masa.Auth.Web.Admin.Rcl/Masa.Auth.Web.Admin.Rcl.csproj b/src/Web/Masa.Auth.Web.Admin.Rcl/Masa.Auth.Web.Admin.Rcl.csproj
index 09fcf3ec5..77169c444 100644
--- a/src/Web/Masa.Auth.Web.Admin.Rcl/Masa.Auth.Web.Admin.Rcl.csproj
+++ b/src/Web/Masa.Auth.Web.Admin.Rcl/Masa.Auth.Web.Admin.Rcl.csproj
@@ -18,7 +18,7 @@
-
+
diff --git a/src/Web/Masa.Auth.Web.Admin.Rcl/Pages/Component/Subjects/ImpersonatedNavigation.razor.cs b/src/Web/Masa.Auth.Web.Admin.Rcl/Pages/Component/Subjects/ImpersonatedNavigation.razor.cs
index 5f8dd697a..ed4fee7af 100644
--- a/src/Web/Masa.Auth.Web.Admin.Rcl/Pages/Component/Subjects/ImpersonatedNavigation.razor.cs
+++ b/src/Web/Masa.Auth.Web.Admin.Rcl/Pages/Component/Subjects/ImpersonatedNavigation.razor.cs
@@ -56,7 +56,12 @@ private async Task GetRecommendApps()
private async Task GetImpersonationToken()
{
- var impersonate = await AuthClient.UserService.ImpersonateAsync(UserId);
+ var input = new ImpersonateInputModel
+ {
+ UserId = UserId
+ };
+
+ var impersonate = await AuthClient.UserService.ImpersonateAsync(input);
if (impersonate != null)
{
impersonationToken = impersonate.ImpersonationToken;
diff --git a/src/Web/Masa.Auth.Web.Sso/Infrastructure/Validations/ImpersonationGrantValidator.cs b/src/Web/Masa.Auth.Web.Sso/Infrastructure/Validations/ImpersonationGrantValidator.cs
index 0d0a37740..eb6df8fc4 100644
--- a/src/Web/Masa.Auth.Web.Sso/Infrastructure/Validations/ImpersonationGrantValidator.cs
+++ b/src/Web/Masa.Auth.Web.Sso/Infrastructure/Validations/ImpersonationGrantValidator.cs
@@ -18,6 +18,7 @@ public ImpersonationGrantValidator(IAuthClient authClient)
public async Task ValidateAsync(ExtensionGrantValidationContext context)
{
var impersonationToken = context.Request.Raw["impersonationToken"];
+ var environment = context.Request.Raw["environment"] ?? string.Empty;
if (string.IsNullOrEmpty(impersonationToken))
{
context.Result = new GrantValidationResult
@@ -29,7 +30,13 @@ public async Task ValidateAsync(ExtensionGrantValidationContext context)
return;
}
- var cacheItem = await _authClient.UserService.GetImpersonatedUserAsync(impersonationToken);
+ var input = new GetImpersonateInputModel
+ {
+ ImpersonationToken = impersonationToken,
+ Environment = environment
+ };
+
+ var cacheItem = await _authClient.UserService.GetImpersonateAsync(input);
if (cacheItem is null)
{
context.Result = new GrantValidationResult
diff --git a/src/Web/Masa.Auth.Web.Sso/Masa.Auth.Web.Sso.csproj b/src/Web/Masa.Auth.Web.Sso/Masa.Auth.Web.Sso.csproj
index 61829bad0..7df170f4c 100644
--- a/src/Web/Masa.Auth.Web.Sso/Masa.Auth.Web.Sso.csproj
+++ b/src/Web/Masa.Auth.Web.Sso/Masa.Auth.Web.Sso.csproj
@@ -24,7 +24,7 @@
-
+