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