@okta/okta-angular
Version:
Angular support for Okta
1 lines • 32.5 kB
Source Map (JSON)
{"version":3,"file":"okta-okta-angular.mjs","sources":["../../lib/src/okta/models/okta.config.ts","../../lib/src/okta/services/auth-config.serice.ts","../../lib/src/okta/components/callback.component.ts","../../lib/src/okta/okta.guard.ts","../../lib/src/okta/services/auth-state.service.ts","../../lib/src/okta/packageInfo.ts","../../lib/src/okta/services/auth-factory.service.ts","../../lib/src/okta/has-any-group.directive.ts","../../lib/src/okta/okta.module.ts","../../lib/src/okta-angular.ts","../../lib/src/public-api.ts","../../lib/src/okta-okta-angular.ts"],"sourcesContent":["/*\n * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { InjectionToken, Injector } from '@angular/core';\nimport { OktaAuth, TokenParams } from '@okta/okta-auth-js';\n\nexport type AuthRequiredFunction = (oktaAuth: OktaAuth, injector: Injector, options?: TokenParams) => void;\n\nexport interface TestingObject {\n disableHttpsCheck: boolean;\n}\n\nexport interface OktaConfig {\n oktaAuth: OktaAuth;\n onAuthRequired?: AuthRequiredFunction;\n onAuthResume?: AuthRequiredFunction;\n testing?: TestingObject;\n}\n\nexport const OKTA_CONFIG = new InjectionToken<OktaConfig>('okta.config.angular');\nexport const OKTA_AUTH = new InjectionToken<OktaAuth>('okta.auth');\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { OktaConfig, OKTA_CONFIG } from '../models/okta.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class OktaAuthConfigService {\n private config: OktaConfig | undefined;\n\n constructor(\n @Optional() @Inject(OKTA_CONFIG) config?: OktaConfig\n ) {\n if (config) {\n this.config = config;\n }\n }\n\n public getConfig(): OktaConfig | undefined {\n return this.config;\n }\n\n public setConfig(config: OktaConfig): void {\n this.config = config;\n }\n}\n","/*\n * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Component, OnInit, Optional, Injector, Inject } from '@angular/core';\nimport { OktaAuth } from '@okta/okta-auth-js';\nimport { OKTA_AUTH } from '../models/okta.config';\nimport { OktaAuthConfigService } from '../services/auth-config.serice';\n\n@Component({\n template: `<div>{{error}}</div>`\n})\nexport class OktaCallbackComponent implements OnInit {\n error?: string;\n\n constructor(\n private configService: OktaAuthConfigService,\n @Inject(OKTA_AUTH) private oktaAuth: OktaAuth,\n @Optional() private injector?: Injector\n ) {}\n\n async ngOnInit(): Promise<void> {\n const config = this.configService.getConfig();\n if (!config) {\n throw new Error('Okta config is not provided');\n }\n try {\n // Parse code or tokens from the URL, store tokens in the TokenManager, and redirect back to the originalUri\n await this.oktaAuth.handleLoginRedirect();\n } catch (e) {\n // Callback from social IDP. Show custom login page to continue.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Supports auth-js v5 & v6-7\n const isInteractionRequiredError = this.oktaAuth.isInteractionRequiredError || this.oktaAuth.idx.isInteractionRequiredError;\n if (isInteractionRequiredError(e) && this.injector) {\n const { onAuthResume, onAuthRequired } = config;\n const callbackFn = onAuthResume || onAuthRequired;\n if (callbackFn) {\n callbackFn(this.oktaAuth, this.injector);\n return;\n }\n }\n this.error = (e as Error).toString();\n }\n }\n}\n","/*\n * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Injectable, Injector, Inject } from '@angular/core';\nimport {\n CanActivate,\n CanActivateChild,\n ActivatedRouteSnapshot,\n RouterStateSnapshot,\n Router,\n NavigationStart, \n Event,\n CanLoad,\n Route,\n Data\n} from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\nimport { OktaAuth, AuthState, TokenParams } from '@okta/okta-auth-js';\nimport { OktaAuthConfigService } from './services/auth-config.serice';\nimport { AuthRequiredFunction, OKTA_AUTH } from './models/okta.config';\n\n@Injectable()\nexport class OktaAuthGuard implements CanActivate, CanActivateChild, CanLoad {\n private state: RouterStateSnapshot;\n private routeData: Data;\n private onAuthRequired?: AuthRequiredFunction;\n\n constructor(\n @Inject(OKTA_AUTH) private oktaAuth: OktaAuth, \n private injector: Injector,\n private configService: OktaAuthConfigService\n ) {\n const config = this.configService.getConfig();\n if (!config) {\n throw new Error('Okta config is not provided');\n }\n this.onAuthRequired = config.onAuthRequired;\n\n // Unsubscribe updateAuthStateListener when route change\n const router = injector.get(Router);\n router.events.pipe(\n filter((e: Event) => e instanceof NavigationStart && this.state && this.state.url !== e.url)\n ).subscribe(() => {\n this.oktaAuth.authStateManager.unsubscribe(this.updateAuthStateListener);\n });\n }\n\n async canLoad(route: Route): Promise<boolean> {\n this.onAuthRequired = route.data?.onAuthRequired || this.onAuthRequired;\n\n const isAuthenticated = await this.isAuthenticated(route.data);\n if (isAuthenticated) {\n return true;\n }\n\n const router = this.injector.get(Router);\n const nav = router.getCurrentNavigation();\n const originalUri = nav ? nav.extractedUrl.toString() : undefined;\n await this.handleLogin(originalUri, route.data);\n\n return false;\n }\n\n /**\n * Gateway for protected route. Returns true if there is a valid idToken,\n * otherwise it will cache the route and start the login flow.\n * @param route\n * @param state\n */\n async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {\n // Track states for current route\n this.state = state;\n this.routeData = route.data;\n this.onAuthRequired = route.data && route.data.onAuthRequired || this.onAuthRequired;\n\n // Protect the route after accessing\n this.oktaAuth.authStateManager.subscribe(this.updateAuthStateListener);\n const isAuthenticated = await this.isAuthenticated(route.data);\n if (isAuthenticated) {\n return true;\n }\n\n await this.handleLogin(state.url, route.data);\n\n return false;\n }\n\n async canActivateChild(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Promise<boolean> {\n return this.canActivate(route, state);\n }\n\n private async isAuthenticated(routeData?: Data, authState?: AuthState | null) {\n const isAuthenticated = authState ? authState?.isAuthenticated : await this.oktaAuth.isAuthenticated();\n let res = isAuthenticated;\n if (routeData?.okta?.acrValues) {\n if (!authState) {\n authState = this.oktaAuth.authStateManager.getAuthState();\n }\n res = authState?.idToken?.claims.acr === routeData?.okta?.acrValues;\n }\n return res;\n }\n\n private async handleLogin(originalUri?: string, routeData?: Data): Promise<void> {\n // Store the current path\n if (originalUri) {\n this.oktaAuth.setOriginalUri(originalUri);\n }\n\n const options: TokenParams = {};\n if (routeData?.okta?.acrValues) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Supports auth-js >= 7.1.0\n options.acrValues = routeData.okta.acrValues;\n }\n\n if (this.onAuthRequired) {\n this.onAuthRequired(this.oktaAuth, this.injector, options);\n } else {\n this.oktaAuth.signInWithRedirect(options);\n }\n }\n\n private updateAuthStateListener = async (authState: AuthState) => {\n const isAuthenticated = await this.isAuthenticated(this.routeData, authState);\n if (!isAuthenticated) {\n this.handleLogin(this.state.url, this.routeData);\n }\n };\n\n}\n","import { Injectable, OnDestroy, Inject } from '@angular/core';\nimport { AuthState, OktaAuth, UserClaims } from '@okta/okta-auth-js';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\nimport { OKTA_AUTH } from '../models/okta.config';\n\nconst defaultAuthState = {\n isAuthenticated: false\n};\n\nexport type Groups = string | string[] | { [key: string]: string[] };\n\n@Injectable()\nexport class OktaAuthStateService implements OnDestroy {\n private _authState: BehaviorSubject<AuthState> = new BehaviorSubject<AuthState>(defaultAuthState);\n \n // only expose readonly property\n public readonly authState$: Observable<AuthState> = this._authState.asObservable();\n\n constructor(@Inject(OKTA_AUTH) private oktaAuth: OktaAuth) {\n this.updateAuthState = this.updateAuthState.bind(this);\n\n // set initial authState\n const initialAuthState = this.oktaAuth.authStateManager.getAuthState() || defaultAuthState;\n this._authState.next(initialAuthState);\n\n // subscribe to future changes\n this.oktaAuth.authStateManager.subscribe(this.updateAuthState);\n }\n\n ngOnDestroy(): void {\n this.oktaAuth.authStateManager.unsubscribe(this.updateAuthState);\n }\n\n // Observes as true when any group input can match groups from user claims \n hasAnyGroups(groups: Groups): Observable<boolean> {\n return this.authState$.pipe(\n mergeMap(async ({ isAuthenticated, idToken }) => {\n // return false when not authenticated or openid is not in scopes\n if (!isAuthenticated || !idToken) {\n return false;\n }\n\n // transform inputs to consistent object format\n if (typeof groups === 'string') {\n groups = { groups: [groups] };\n }\n if (Array.isArray(groups)) {\n groups = { groups };\n }\n\n const key = Object.keys(groups)[0] as keyof UserClaims;\n const value = groups[key];\n\n // groups or custom claims is available in idToken\n if (idToken.claims[key]) {\n return value.some((authority: string) => (idToken.claims[key] as unknown as string[]).includes(authority));\n }\n\n // try /userinfo endpoint when thin idToken (no groups claim) is returned\n // https://developer.okta.com/docs/concepts/api-access-management/#tokens-and-scopes\n const userInfo = await this.oktaAuth.getUser();\n if (!userInfo[key]) {\n return false;\n }\n return value.some((authority: string) => (userInfo[key] as unknown as string[]).includes(authority));\n })\n );\n }\n\n private updateAuthState(authState: AuthState): void {\n this._authState.next(authState);\n }\n}\n","export default {\n 'name': '@okta/okta-angular',\n 'version': '7.0.0',\n 'authJSMinSupportedVersion': '5.3.1'\n};\n","import { Location } from '@angular/common';\nimport { VERSION } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthSdkError, OktaAuth, toRelativeUrl } from '@okta/okta-auth-js';\nimport { OktaAuthConfigService } from './auth-config.serice';\nimport { compare } from 'compare-versions';\nimport packageInfo from '../packageInfo';\n\nexport class OktaAuthFactoryService {\n private static setupOktaAuth(\n oktaAuth: OktaAuth,\n router?: Router, \n location?: Location\n ): void {\n const isAuthJsSupported = oktaAuth._oktaUserAgent && compare(oktaAuth._oktaUserAgent.getVersion(), packageInfo.authJSMinSupportedVersion, '>=');\n if (!isAuthJsSupported) {\n throw new AuthSdkError(`Passed in oktaAuth is not compatible with the SDK, minimum supported okta-auth-js version is ${packageInfo.authJSMinSupportedVersion}.`);\n }\n\n // Add Okta UA\n oktaAuth._oktaUserAgent.addEnvironment(`${packageInfo.name}/${packageInfo.version}`);\n oktaAuth._oktaUserAgent.addEnvironment(`Angular/${VERSION.full}`);\n\n // Provide a default implementation of `restoreOriginalUri`\n if (!oktaAuth.options.restoreOriginalUri && router && location) {\n oktaAuth.options.restoreOriginalUri = async (_, originalUri: string | undefined) => {\n const baseUrl = window.location.origin + location.prepareExternalUrl('');\n const routePath = toRelativeUrl(originalUri || '/', baseUrl);\n router.navigateByUrl(routePath);\n };\n }\n\n // Start services\n oktaAuth.start();\n }\n\n public static createOktaAuth(\n configService: OktaAuthConfigService, \n router?: Router, \n location?: Location\n ): OktaAuth {\n const config = configService.getConfig();\n if (!config) {\n throw new Error('Okta config is not provided');\n }\n\n const { oktaAuth } = config;\n if (!oktaAuth) {\n throw new Error('Okta config should contain oktaAuth');\n }\n\n OktaAuthFactoryService.setupOktaAuth(oktaAuth, router, location);\n\n return oktaAuth;\n }\n}","import { Directive, Input, TemplateRef, ViewContainerRef, OnInit, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\nimport { ReplaySubject, Subject } from 'rxjs';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\nimport { OktaAuthStateService, Groups } from './services/auth-state.service';\n\n@Directive({ selector: '[oktaHasAnyGroup]'})\nexport class OktaHasAnyGroupDirective implements OnInit, OnChanges, OnDestroy {\n private groupsSub$: Subject<Groups> = new ReplaySubject<Groups>();\n private destroySub$ = new Subject<void>();\n\n constructor(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef,\n private authStateService: OktaAuthStateService\n ) { }\n\n @Input() oktaHasAnyGroup!: Groups;\n\n ngOnInit(): void {\n this.groupsSub$.pipe(\n filter(groups => !!groups),\n switchMap(groups => this.authStateService.hasAnyGroups(groups)),\n takeUntil(this.destroySub$)\n ).subscribe(isAuthorized => {\n this.viewContainer.clear();\n if (isAuthorized) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['oktaHasAnyGroup'].currentValue !== changes['oktaHasAnyGroup'].previousValue) {\n this.groupsSub$.next(changes['oktaHasAnyGroup'].currentValue as Groups);\n }\n }\n\n ngOnDestroy(): void {\n this.destroySub$.next();\n this.destroySub$.complete();\n }\n}\n","/*\n * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { NgModule, ModuleWithProviders, Optional } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Location } from '@angular/common';\nimport { OktaCallbackComponent } from './components/callback.component';\nimport { OktaAuthGuard } from './okta.guard';\nimport { OktaAuthConfigService } from './services/auth-config.serice';\nimport { OktaAuthStateService } from './services/auth-state.service';\nimport { OktaAuthFactoryService } from './services/auth-factory.service';\nimport { OktaHasAnyGroupDirective } from './has-any-group.directive';\nimport { OktaConfig, OKTA_CONFIG, OKTA_AUTH } from './models/okta.config';\n\n\n@NgModule({\n declarations: [\n OktaCallbackComponent,\n OktaHasAnyGroupDirective,\n ],\n exports: [\n OktaCallbackComponent,\n OktaHasAnyGroupDirective,\n ],\n providers: [\n OktaAuthConfigService,\n OktaAuthStateService,\n OktaAuthGuard,\n {\n provide: OKTA_AUTH,\n useFactory: OktaAuthFactoryService.createOktaAuth,\n deps: [\n OktaAuthConfigService,\n [new Optional(), Router],\n [new Optional(), Location]\n ]\n },\n ]\n})\nexport class OktaAuthModule {\n static forRoot(config?: OktaConfig): ModuleWithProviders<OktaAuthModule> {\n return {\n ngModule: OktaAuthModule,\n providers: [\n { provide: OKTA_CONFIG, useValue: config },\n ]\n };\n }\n\n // Should not have constructor to support lazy load of config with APP_INITIALIZER\n\n}\n","/*\n * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport { OktaAuthModule } from './okta/okta.module';\nexport { OktaAuthGuard } from './okta/okta.guard';\nexport { OktaConfig, OKTA_CONFIG, OKTA_AUTH } from './okta/models/okta.config';\nexport { OktaAuthStateService } from './okta/services/auth-state.service';\nexport { OktaAuthConfigService } from './okta/services/auth-config.serice';\nexport { OktaHasAnyGroupDirective } from './okta/has-any-group.directive';\n\n// Okta View Components\nexport { OktaCallbackComponent } from './okta/components/callback.component';\n","/**\n * Entry point for all public APIs of the package.\n */\nexport * from './okta-angular';\n\n// This file only reexports content of the `src` folder. Keep it that way.\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.OktaAuthConfigService","i1.OktaAuthStateService"],"mappings":"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"}