Make authstorage configurable
This commit is contained in:
parent
e8845a092a
commit
3f27662e3f
@ -91,7 +91,7 @@ export class AppCommonServiceModule {
|
|||||||
{
|
{
|
||||||
provide: APP_INITIALIZER,
|
provide: APP_INITIALIZER,
|
||||||
useFactory: appConfigFactory,
|
useFactory: appConfigFactory,
|
||||||
deps: [Injector, AppConfig, OAuthService,AuthConfigFactory],
|
deps: [Injector, AppConfig, OAuthService,AuthConfigFactory,OAuthStorage],
|
||||||
multi: true
|
multi: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -41,6 +41,7 @@ import {IUser} from './models/user';
|
|||||||
import * as commonActions from './actions/app-common.actions';
|
import * as commonActions from './actions/app-common.actions';
|
||||||
import * as commonReducers from './reducers/app-common.reducer';
|
import * as commonReducers from './reducers/app-common.reducer';
|
||||||
import * as commonEffects from './effects/app-common.effects';
|
import * as commonEffects from './effects/app-common.effects';
|
||||||
|
import { SecureOAuthStorage} from './shared/secureOAuthStorage';
|
||||||
|
|
||||||
export {
|
export {
|
||||||
SafePipe,
|
SafePipe,
|
||||||
@ -67,7 +68,8 @@ export {
|
|||||||
commonReducers,
|
commonReducers,
|
||||||
IAuthconfigFactory,
|
IAuthconfigFactory,
|
||||||
AuthConfigFactory,
|
AuthConfigFactory,
|
||||||
MenuBackgroundComponent
|
MenuBackgroundComponent,
|
||||||
|
SecureOAuthStorage
|
||||||
};
|
};
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
import { Injector } from '@angular/core';
|
import { Injector } from '@angular/core';
|
||||||
import { Location} from '@angular/common';
|
import { Location} from '@angular/common';
|
||||||
import { Router,UrlSerializer } from '@angular/router';
|
import { Router,UrlSerializer } from '@angular/router';
|
||||||
import { AuthConfig, OAuthService, JwksValidationHandler, OAuthErrorEvent } from 'angular-oauth2-oidc';
|
import { AuthConfig, OAuthService, JwksValidationHandler, OAuthErrorEvent, OAuthStorage } from 'angular-oauth2-oidc';
|
||||||
import { AppConfig } from "./app.config";
|
import { AppConfig } from "./app.config";
|
||||||
import { IAuthconfigFactory } from './authconfigFactory';
|
import { IAuthconfigFactory } from './authconfigFactory';
|
||||||
|
|
||||||
|
|
||||||
export function appConfigFactory(injector:Injector, appConfig: AppConfig, oauthService: OAuthService, authconfigFactory:IAuthconfigFactory): () => Promise<any> {
|
|
||||||
|
export function appConfigFactory(injector:Injector, appConfig: AppConfig, oauthService: OAuthService, authconfigFactory:IAuthconfigFactory,authStorage:OAuthStorage): () => Promise<any> {
|
||||||
return (): Promise<any> => {
|
return (): Promise<any> => {
|
||||||
return appConfig.load().then(() => {
|
return appConfig.load().then(() => {
|
||||||
oauthService.events.subscribe((event) => {
|
oauthService.events.subscribe((event) => {
|
||||||
@ -22,7 +23,7 @@ export function appConfigFactory(injector:Injector, appConfig: AppConfig, oauthS
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
oauthService.configure(authconfigFactory.getAuthConfig(appConfig));
|
oauthService.configure(authconfigFactory.getAuthConfig(appConfig));
|
||||||
oauthService.setStorage(localStorage);
|
oauthService.setStorage(authStorage);
|
||||||
oauthService.tokenValidationHandler = new JwksValidationHandler();
|
oauthService.tokenValidationHandler = new JwksValidationHandler();
|
||||||
oauthService.tokenValidationHandler.validateAtHash = function () {
|
oauthService.tokenValidationHandler.validateAtHash = function () {
|
||||||
return new Promise<boolean>((res) => { res(true); })
|
return new Promise<boolean>((res) => { res(true); })
|
||||||
|
36
projects/common/src/fm/shared/secureOAuthStorage.ts
Normal file
36
projects/common/src/fm/shared/secureOAuthStorage.ts
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
import {OAuthStorage} from 'angular-oauth2-oidc';
|
||||||
|
import {Inject, Injectable} from '@angular/core';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class SecureOAuthStorage extends OAuthStorage {
|
||||||
|
private storage = {};
|
||||||
|
|
||||||
|
secureKey(key:string): boolean {
|
||||||
|
if(key == "nonce") return false;
|
||||||
|
if(key == "PKCI_verifier") return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
getItem(key: string): string {
|
||||||
|
if(this.secureKey(key)) {
|
||||||
|
return this.storage[key];
|
||||||
|
} else {
|
||||||
|
return window.sessionStorage.getItem(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
removeItem(key: string): void {
|
||||||
|
if(this.secureKey(key)) {
|
||||||
|
delete this.storage[key];
|
||||||
|
} else {
|
||||||
|
window.sessionStorage.removeItem(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setItem(key: string, data: string): void {
|
||||||
|
if(this.secureKey(key)) {
|
||||||
|
this.storage[key]=data;
|
||||||
|
} else {
|
||||||
|
window.sessionStorage.setItem(key,data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -18,8 +18,8 @@ import { StoreRouterConnectingModule} from '@ngrx/router-store';
|
|||||||
import {AppRoutingModule} from './app-routing.module';
|
import {AppRoutingModule} from './app-routing.module';
|
||||||
import { LogoComponent } from './logo/logo.component';
|
import { LogoComponent } from './logo/logo.component';
|
||||||
import { MenuComponent } from './menu/menu.component';
|
import { MenuComponent } from './menu/menu.component';
|
||||||
import { LocalAuthconfigFactory} from './localAuthconfigFactory';
|
import { SecureOAuthStorage} from '@farmmaps/common';
|
||||||
import { AuthConfig } from 'angular-oauth2-oidc';
|
import { OAuthStorage } from 'angular-oauth2-oidc';
|
||||||
|
|
||||||
export const BOOTSTRAP_EFFECTS = new InjectionToken('Bootstrap Effects');
|
export const BOOTSTRAP_EFFECTS = new InjectionToken('Bootstrap Effects');
|
||||||
|
|
||||||
@ -62,7 +62,11 @@ export function provideBootstrapEffects(effects: Type<any>[]) {
|
|||||||
EffectsModule.forRoot([])
|
EffectsModule.forRoot([])
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
AuthConfigFactory
|
AuthConfigFactory,
|
||||||
|
{
|
||||||
|
provide:OAuthStorage,
|
||||||
|
useClass:SecureOAuthStorage
|
||||||
|
}
|
||||||
// {
|
// {
|
||||||
// provide:AuthConfigFactory,
|
// provide:AuthConfigFactory,
|
||||||
// useClass:LocalAuthconfigFactory
|
// useClass:LocalAuthconfigFactory
|
||||||
|
Loading…
Reference in New Issue
Block a user