Я использую IdentityServer4 и хочу использовать его для моих микросервисов.
У меня сейчас два сервиса:
- AuthService
- сайт MVC
Я хочу использовать эталонный токен с коротким циклом времени жизни для частого запроса фактических утверждений от AuthService, но не могу найти свойство для установки времени жизни кэша.
Как я могу настроить время кэширования для утверждений, и это хорошая идея для получения фактических утверждений для пользователя?
Я попытался установить AccessTokenLifeTime, IdentityTokenLifeTime, TokenValidationParameters.ClockSkew, но это не работает для этой задачи.
MVC Запуск:
...
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.Authority = "https://localhost:5001";
options.ClientId = "client";
options.ClientSecret = "secret";
options.ResponseType = "code id_token";
options.RequireHttpsMetadata = false;
options.Scope.Add(IdentityServerConstants.StandardScopes.OpenId);
options.Scope.Add(IdentityServerConstants.StandardScopes.Profile);
options.Scope.Add("epp");
options.Scope.Add("roles");
options.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name",
RoleClaimType = "role",
ClockSkew = TimeSpan.FromSeconds(10)
};
});
...
Служба аутентификации, Config.cs:
...
new Client
{
ClientId = "client",
ClientName = "Display name",
AllowedGrantTypes = new List<string>{GrantType.Hybrid},
ClientSecrets = new List<Secret>
{
new Secret("secret".Sha256())
},
RequireConsent = false,
AllowedScopes =
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
"epp",
"roles",
},
RedirectUris = new List<string>
{
"https://localhost:5003/signin-oidc"
},
PostLogoutRedirectUris = new List<string>{ "https://localhost:5003/signout-callback-oidc" },
AccessTokenType = AccessTokenType.Reference,
AlwaysIncludeUserClaimsInIdToken = true,
AlwaysSendClientClaims = true,
AllowAccessTokensViaBrowser = true,
AccessTokenLifetime = 10,
IdentityTokenLifetime = 10,
UpdateAccessTokenClaimsOnRefresh = true
}