Как обновить токен доступа? (реагирует приложение + сервер идентификации asp.net) - PullRequest
0 голосов
/ 05 июля 2019

Мне нужно сменить токен на клиенте при изменении пользовательских данных на сервере.Например, после изменения некоторых данных на сервере я делаю повторный вход в систему.Я вижу эти изменения, но веб-приложение не обновляет эти данные автоматически, то есть, чтобы использовать их, мне нужно выйти из приложения и войти снова, чтобы получить новый токен.В документации по IdentityServer 4 говорится, что опция обновления токена не работает для неявного потока.Но, возможно, есть несколько способов обновить токен (возможно ли это сделать, установив таймаут или что-то еще)?

Настройки IdentityServer4 для клиента:

// React AOO Client
            new Client
            {
                ClientId = "airvector",
                ClientName = "Airvector Ordering Online",
                //AccessTokenType = AccessTokenType.Reference,
                //AccessTokenLifetime = 30,
                //IdentityTokenLifetime = 10,
                AllowedGrantTypes = GrantTypes.Implicit,
                AllowAccessTokensViaBrowser = true,
                RequireConsent = false,
                //RefreshTokenUsage = TokenUsage.OneTimeOnly,
                AccessTokenLifetime = 3600 * 24,

                RedirectUris = {
                    "http://localhost:3000/callback"
                },
                PostLogoutRedirectUris = { "http://localhost:3000/login" },
                AllowedCorsOrigins =     { "http://localhost:3000" },

                AllowedScopes =
                {
                    IdentityServerConstants.StandardScopes.OpenId,
                    IdentityServerConstants.StandardScopes.Profile,
                    "aoo_api",
                    "Schedules.API",
                    "Ordering.API",
                    "Catalog.API"
                }
            },

userManager в React:

import { createUserManager } from 'redux-oidc';
import { UserManagerSettings } from 'oidc-client';
const userManagerConfig: UserManagerSettings = {
  client_id: 'airvector',
  redirect_uri:  `${window.location.protocol}//
  ${window.location.hostname}${window.location.port ? 
  `:${window.location.port}` : ''}/callback`,
  response_type: 'token id_token',
  scope:"openid profile aoo_api Schedules.API Ordering.API Catalog.API",
  authority: 'http://localhost:5000', // DEV
  silent_redirect_uri: 'http://localhost:3000/login',
  automaticSilentRenew: true,
  filterProtocolClaims: true,
  loadUserInfo: true,
  monitorSession: true
};
const userManager = createUserManager(userManagerConfig);
export default userManager;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...