Как получить новый токен доступа с помощью токена обновления в AspNet.Security.OpenIdConnect.Server (ASOS) - PullRequest
0 голосов
/ 27 мая 2019

Я использую React в качестве клиента и ядро ​​Web API для взаимодействия с сервером.Для аутентификации мы используем аутентификацию на основе токенов, используя AspNet.Security.OpenIdConnect.Server (ASOS) .

Я должен реализовать сценарий обновления токена, в котором по истечении срока действия токена мы используем токен обновления (возвращено ASOS) для получения нового токена доступа.

Я знаю, что один из способов добиться путем вызова метода на клиенте - перехватчик AXIOS, как показано ниже.

httpPromise.interceptors.response.use(undefined, err => {
  const { config, response: { status } } = err;
  const originalRequest = config;

  if (status === 401) {

    var refresh_Token = JSON.parse(window.localStorage.getItem('refreshToken'));
    fetch(globalConstant.WEB_API_BASE_PATH + "authtoken,
      {
        method: "POST",
        headers: new Headers({
          'Content-Type': 'application/json',
        })
      },
      data:{grant-type:"refresh_Token",refresh_token:"refresh Token ....."
    )
    ....other logic to set new access token and make call again to existing 
    request.
   }
})

Я хочу сделать это в WEB API Сторона ядра , так что в промежуточном программном обеспечении или в конвейере аутентификации он обнаруживает истечение срока действия токена доступа и возвращает новый токен доступа.Пример кода WEB API приведен ниже.

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
.... some code
    serives.AddAuthentication(o =>
     {                    
        o.DefaultAuthenticateScheme = OAuthValidationDefaults.AuthenticationScheme;                    
    })
    serives.AddOAuthValidation()           
    serives.AddOpenIdConnectServer(options =>
    {
        options.ProviderType = typeof(AuthorizationProvider);
        options.Provider = new AuthorizationProvider(new SecurityService());
        options.TokenEndpointPath = "/authtoken";
        options.UserinfoEndpointPath = "/userInfo";
        options.AllowInsecureHttp = true;
        options.ApplicationCanDisplayErrors = true;
    });
..some code
}

Ссылки, по которым я следовал Как обрабатывать токен с истекшим сроком доступа в ядре asp.net, используя токен обновления с OpenId Connect и https://github.com/mderriey/aspnet-core-token-renewal/blob/master/src/MvcClient/Startup.cs

...