Refresh token generation through IDP (OIDC-Client) in react

Viewed 30

import {
  UserManager,
  Log
} from "oidc-client";

export default class OidcAuthService {
  manager = null;
  user = null;
  configData = null;
  configMetaData = null;

  constructor(url) {
    this.configData = this.getClientSettings(url);
    this.configMetaData = this.getMetaData(url);
    this.manager = new UserManager({
      ...this.configData,
      metadata: { ...this.configMetaData
      },
    });

    this.manager.getUser().then((user) => {
      this.user = user;
    });
  }

  isLoggedIn() {
    return this.user != null && !this.user.expired;
  }

  getClientSettings(url) {
    return {
      authority: url,
      client_id: "xxxx-xxxx-xxx-xxxx",
      client_secret: "#e$sce213124dsfds12",
      redirect_uri: "http://localhost:3000/standBy",
      post_logout_redirect_uri: "http://localhost:3000/",
      response_type: "code",
      scope: "openid profile default-api",
      filterProtocolClaims: true,
      loadUserInfo: true,
      automaticSilentRenew: true,
      silent_redirect_uri: "http://localhost:3000/silentRenew",
    };
  }

  getMetaData(url) {
    return {
      issuer: url,
      jwks_uri: "${process.env.idpUrl}/.well-known/openid-configuration/jwks",
      authorization_endpoint: "${process.env.idpUrl}/connect/authorize",
      token_endpoint: "${process.env.idpUrl}/connect/token",
      userinfo_endpoint: "${process.env.idpUrl}/connect/userinfo",
      end_session_endpoint: "${process.env.idpUrl}/connect/endsession",
      check_session_iframe: "${process.env.idpUrl}/connect/checksession",
      revocation_endpoint: "${process.env.idpUrl}/connect/revocation",
      introspection_endpoint: "${process.env.idpUrl}/connect/introspect",
      device_authorization_endpoint: "${process.env.idpUrl}/connect/deviceauthorization",
    };
  }

  getClaims() {
    return this ? .user ? .profile;
  }

  getAuthorizationHeaderValue() {
    return `${this?.user?.token_type} ${this?.user?.access_token}`;
  }

  startAuthentication() {
    return this ? .manager ? .signinRedirect();
  }

  completeAuthentication() {
    return this.manager ? .signinRedirectCallback().then((user) => {
      this.user = user;
      return this.user;
    });
  }

  tokenRenew() {
    return this.manager ? .signinSilent();
  }
}

I am implementing OIDC-client login and refresh token generation in React app. I have tried to call slientSignIn() method of OIDC for new token generation but It is not generating new tokens. I am referring this article - https://www.scottbrady91.com/openid-connect/silent-refresh-refreshing-access-tokens-when-using-the-implicit-flow

0 Answers
Related