Identityserver4 introspection endpoint is slow
up vote
0
down vote
favorite
I am trying to use introspection endpoint from identityserver 4 to check if my Token is still valid but calling the endpoint is taking more or less 2 sec this is really slow if i have to check the token during each request. Is anyone having the same issues? Or is there any better "faster" solution to validate a token? Thanks in advance!! You can find my code here=>
[HttpPost("[Action]")]
public async Task<IActionResult> CheckToken([FromBody]string Token)
{
if(string.IsNullOrEmpty(Token))
{
return BadRequest("Provide Token");
}
var introspectionClient = new IntrospectionClient("http://localhost:5002/connect/introspect", "api1", "password");
var response = await introspectionClient.SendAsync(new IntrospectionRequest { Token = Token });
try
{
if (response.IsActive)
{
return Ok();
}
else
{
return BadRequest();
}
}
catch (Exception exc)
{
return BadRequest();
}
}
Here is my identity server implementation code
=>
services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddInMemoryCaching()
.AddInMemoryApiResources(Conf.GetApiResources())
.AddInMemoryClients(Conf.GetClients())
.Services.AddTransient<IResourceOwnerPasswordValidator, PasswordValidator>();
My client configuration and api configuration
public static class Conf
{
// clients that are allowed to access resources from the Auth server
public static IEnumerable<Client> GetClients()
{
// client credentials, list of clients
return new List<Client>
{
new Client
{
ClientId = "client",
AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
// Client secrets
ClientSecrets =
{
new Secret("password".Sha256())
},
AllowedScopes = { IdentityServerConstants.StandardScopes.OpenId,IdentityServerConstants.StandardScopes.Profile,"api1"},
IdentityTokenLifetime=7200
},
};
}
// API that are allowed to access the Auth server
public static IEnumerable<ApiResource> GetApiResources()
{
return new List<ApiResource>
{
//new ApiResource("api1","My API")
new ApiResource("api1", "MyApi")
{
ApiSecrets =
{
new Secret("password".Sha256())
},
}
};
}
}
identityserver4 asp.net-core-webapi
add a comment |
up vote
0
down vote
favorite
I am trying to use introspection endpoint from identityserver 4 to check if my Token is still valid but calling the endpoint is taking more or less 2 sec this is really slow if i have to check the token during each request. Is anyone having the same issues? Or is there any better "faster" solution to validate a token? Thanks in advance!! You can find my code here=>
[HttpPost("[Action]")]
public async Task<IActionResult> CheckToken([FromBody]string Token)
{
if(string.IsNullOrEmpty(Token))
{
return BadRequest("Provide Token");
}
var introspectionClient = new IntrospectionClient("http://localhost:5002/connect/introspect", "api1", "password");
var response = await introspectionClient.SendAsync(new IntrospectionRequest { Token = Token });
try
{
if (response.IsActive)
{
return Ok();
}
else
{
return BadRequest();
}
}
catch (Exception exc)
{
return BadRequest();
}
}
Here is my identity server implementation code
=>
services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddInMemoryCaching()
.AddInMemoryApiResources(Conf.GetApiResources())
.AddInMemoryClients(Conf.GetClients())
.Services.AddTransient<IResourceOwnerPasswordValidator, PasswordValidator>();
My client configuration and api configuration
public static class Conf
{
// clients that are allowed to access resources from the Auth server
public static IEnumerable<Client> GetClients()
{
// client credentials, list of clients
return new List<Client>
{
new Client
{
ClientId = "client",
AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
// Client secrets
ClientSecrets =
{
new Secret("password".Sha256())
},
AllowedScopes = { IdentityServerConstants.StandardScopes.OpenId,IdentityServerConstants.StandardScopes.Profile,"api1"},
IdentityTokenLifetime=7200
},
};
}
// API that are allowed to access the Auth server
public static IEnumerable<ApiResource> GetApiResources()
{
return new List<ApiResource>
{
//new ApiResource("api1","My API")
new ApiResource("api1", "MyApi")
{
ApiSecrets =
{
new Secret("password".Sha256())
},
}
};
}
}
identityserver4 asp.net-core-webapi
It's not obvious whether you are using reference tokens or not - if not then this call is unnecessary. That said it does sound very slow, especially since you're using in-memory storage. Do you observe this when running with the debugger attached or is it still slow when running as it would in production?
– mackie
Nov 20 at 8:40
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I am trying to use introspection endpoint from identityserver 4 to check if my Token is still valid but calling the endpoint is taking more or less 2 sec this is really slow if i have to check the token during each request. Is anyone having the same issues? Or is there any better "faster" solution to validate a token? Thanks in advance!! You can find my code here=>
[HttpPost("[Action]")]
public async Task<IActionResult> CheckToken([FromBody]string Token)
{
if(string.IsNullOrEmpty(Token))
{
return BadRequest("Provide Token");
}
var introspectionClient = new IntrospectionClient("http://localhost:5002/connect/introspect", "api1", "password");
var response = await introspectionClient.SendAsync(new IntrospectionRequest { Token = Token });
try
{
if (response.IsActive)
{
return Ok();
}
else
{
return BadRequest();
}
}
catch (Exception exc)
{
return BadRequest();
}
}
Here is my identity server implementation code
=>
services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddInMemoryCaching()
.AddInMemoryApiResources(Conf.GetApiResources())
.AddInMemoryClients(Conf.GetClients())
.Services.AddTransient<IResourceOwnerPasswordValidator, PasswordValidator>();
My client configuration and api configuration
public static class Conf
{
// clients that are allowed to access resources from the Auth server
public static IEnumerable<Client> GetClients()
{
// client credentials, list of clients
return new List<Client>
{
new Client
{
ClientId = "client",
AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
// Client secrets
ClientSecrets =
{
new Secret("password".Sha256())
},
AllowedScopes = { IdentityServerConstants.StandardScopes.OpenId,IdentityServerConstants.StandardScopes.Profile,"api1"},
IdentityTokenLifetime=7200
},
};
}
// API that are allowed to access the Auth server
public static IEnumerable<ApiResource> GetApiResources()
{
return new List<ApiResource>
{
//new ApiResource("api1","My API")
new ApiResource("api1", "MyApi")
{
ApiSecrets =
{
new Secret("password".Sha256())
},
}
};
}
}
identityserver4 asp.net-core-webapi
I am trying to use introspection endpoint from identityserver 4 to check if my Token is still valid but calling the endpoint is taking more or less 2 sec this is really slow if i have to check the token during each request. Is anyone having the same issues? Or is there any better "faster" solution to validate a token? Thanks in advance!! You can find my code here=>
[HttpPost("[Action]")]
public async Task<IActionResult> CheckToken([FromBody]string Token)
{
if(string.IsNullOrEmpty(Token))
{
return BadRequest("Provide Token");
}
var introspectionClient = new IntrospectionClient("http://localhost:5002/connect/introspect", "api1", "password");
var response = await introspectionClient.SendAsync(new IntrospectionRequest { Token = Token });
try
{
if (response.IsActive)
{
return Ok();
}
else
{
return BadRequest();
}
}
catch (Exception exc)
{
return BadRequest();
}
}
Here is my identity server implementation code
=>
services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddInMemoryCaching()
.AddInMemoryApiResources(Conf.GetApiResources())
.AddInMemoryClients(Conf.GetClients())
.Services.AddTransient<IResourceOwnerPasswordValidator, PasswordValidator>();
My client configuration and api configuration
public static class Conf
{
// clients that are allowed to access resources from the Auth server
public static IEnumerable<Client> GetClients()
{
// client credentials, list of clients
return new List<Client>
{
new Client
{
ClientId = "client",
AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
// Client secrets
ClientSecrets =
{
new Secret("password".Sha256())
},
AllowedScopes = { IdentityServerConstants.StandardScopes.OpenId,IdentityServerConstants.StandardScopes.Profile,"api1"},
IdentityTokenLifetime=7200
},
};
}
// API that are allowed to access the Auth server
public static IEnumerable<ApiResource> GetApiResources()
{
return new List<ApiResource>
{
//new ApiResource("api1","My API")
new ApiResource("api1", "MyApi")
{
ApiSecrets =
{
new Secret("password".Sha256())
},
}
};
}
}
identityserver4 asp.net-core-webapi
identityserver4 asp.net-core-webapi
asked Nov 19 at 11:11
Ali Amsalkhir
132
132
It's not obvious whether you are using reference tokens or not - if not then this call is unnecessary. That said it does sound very slow, especially since you're using in-memory storage. Do you observe this when running with the debugger attached or is it still slow when running as it would in production?
– mackie
Nov 20 at 8:40
add a comment |
It's not obvious whether you are using reference tokens or not - if not then this call is unnecessary. That said it does sound very slow, especially since you're using in-memory storage. Do you observe this when running with the debugger attached or is it still slow when running as it would in production?
– mackie
Nov 20 at 8:40
It's not obvious whether you are using reference tokens or not - if not then this call is unnecessary. That said it does sound very slow, especially since you're using in-memory storage. Do you observe this when running with the debugger attached or is it still slow when running as it would in production?
– mackie
Nov 20 at 8:40
It's not obvious whether you are using reference tokens or not - if not then this call is unnecessary. That said it does sound very slow, especially since you're using in-memory storage. Do you observe this when running with the debugger attached or is it still slow when running as it would in production?
– mackie
Nov 20 at 8:40
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53373365%2fidentityserver4-introspection-endpoint-is-slow%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
It's not obvious whether you are using reference tokens or not - if not then this call is unnecessary. That said it does sound very slow, especially since you're using in-memory storage. Do you observe this when running with the debugger attached or is it still slow when running as it would in production?
– mackie
Nov 20 at 8:40