@okta/okta-auth-js 5.4.3 → 5.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/CHANGELOG.md +59 -4
  2. package/README.md +66 -977
  3. package/cjs/AuthStateManager.js +5 -0
  4. package/cjs/AuthStateManager.js.map +1 -1
  5. package/cjs/OktaAuth.js +74 -29
  6. package/cjs/OktaAuth.js.map +1 -1
  7. package/cjs/OktaUserAgent.js +2 -2
  8. package/cjs/StorageManager.js +16 -0
  9. package/cjs/StorageManager.js.map +1 -1
  10. package/cjs/TransactionManager.js +44 -8
  11. package/cjs/TransactionManager.js.map +1 -1
  12. package/cjs/browser/browserStorage.js +5 -5
  13. package/cjs/browser/browserStorage.js.map +1 -1
  14. package/cjs/builderUtil.js +6 -0
  15. package/cjs/builderUtil.js.map +1 -1
  16. package/cjs/constants.js +5 -1
  17. package/cjs/constants.js.map +1 -1
  18. package/cjs/fetch/fetchRequest.js +10 -3
  19. package/cjs/fetch/fetchRequest.js.map +1 -1
  20. package/cjs/http/request.js +4 -0
  21. package/cjs/http/request.js.map +1 -1
  22. package/cjs/idx/interact.js +5 -2
  23. package/cjs/idx/interact.js.map +1 -1
  24. package/cjs/idx/introspect.js +24 -7
  25. package/cjs/idx/introspect.js.map +1 -1
  26. package/cjs/idx/remediate.js +35 -41
  27. package/cjs/idx/remediate.js.map +1 -1
  28. package/cjs/idx/remediators/Base/AuthenticatorData.js +7 -7
  29. package/cjs/idx/remediators/Base/AuthenticatorData.js.map +1 -1
  30. package/cjs/idx/remediators/Base/Remediator.js +13 -7
  31. package/cjs/idx/remediators/Base/Remediator.js.map +1 -1
  32. package/cjs/idx/remediators/Base/SelectAuthenticator.js +6 -6
  33. package/cjs/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
  34. package/cjs/idx/remediators/Base/VerifyAuthenticator.js +18 -14
  35. package/cjs/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
  36. package/cjs/idx/remediators/EnrollProfile.js +14 -0
  37. package/cjs/idx/remediators/EnrollProfile.js.map +1 -1
  38. package/cjs/idx/remediators/Identify.js +5 -2
  39. package/cjs/idx/remediators/Identify.js.map +1 -1
  40. package/cjs/idx/remediators/ReEnrollAuthenticator.js +1 -1
  41. package/cjs/idx/remediators/ReEnrollAuthenticator.js.map +1 -1
  42. package/cjs/idx/run.js +28 -6
  43. package/cjs/idx/run.js.map +1 -1
  44. package/cjs/idx/transactionMeta.js +24 -9
  45. package/cjs/idx/transactionMeta.js.map +1 -1
  46. package/cjs/idx/types/idx-js.js +5 -0
  47. package/cjs/idx/types/idx-js.js.map +1 -1
  48. package/cjs/idx/types/index.js +17 -6
  49. package/cjs/idx/types/index.js.map +1 -1
  50. package/cjs/oidc/getToken.js +14 -9
  51. package/cjs/oidc/getToken.js.map +1 -1
  52. package/cjs/oidc/getWithPopup.js +9 -2
  53. package/cjs/oidc/getWithPopup.js.map +1 -1
  54. package/cjs/oidc/getWithRedirect.js.map +1 -1
  55. package/cjs/oidc/parseFromUrl.js +59 -20
  56. package/cjs/oidc/parseFromUrl.js.map +1 -1
  57. package/cjs/oidc/renewTokens.js +28 -5
  58. package/cjs/oidc/renewTokens.js.map +1 -1
  59. package/cjs/oidc/util/browser.js +1 -13
  60. package/cjs/oidc/util/browser.js.map +1 -1
  61. package/cjs/oidc/util/loginRedirect.js +9 -5
  62. package/cjs/oidc/util/loginRedirect.js.map +1 -1
  63. package/cjs/oidc/util/urlParams.js +1 -1
  64. package/cjs/oidc/util/urlParams.js.map +1 -1
  65. package/cjs/oidc/util/validateClaims.js +8 -6
  66. package/cjs/oidc/util/validateClaims.js.map +1 -1
  67. package/cjs/options.js +15 -2
  68. package/cjs/options.js.map +1 -1
  69. package/cjs/server/serverStorage.js +2 -1
  70. package/cjs/server/serverStorage.js.map +1 -1
  71. package/cjs/tx/AuthTransaction.js +1 -3
  72. package/cjs/tx/AuthTransaction.js.map +1 -1
  73. package/cjs/tx/api.js +3 -0
  74. package/cjs/tx/api.js.map +1 -1
  75. package/cjs/types/Transaction.js.map +1 -1
  76. package/cjs/util/emailVerify.js +28 -0
  77. package/cjs/util/emailVerify.js.map +1 -0
  78. package/cjs/util/index.js +13 -0
  79. package/cjs/util/index.js.map +1 -1
  80. package/cjs/util/sharedStorage.js +54 -0
  81. package/cjs/util/sharedStorage.js.map +1 -0
  82. package/dist/okta-auth-js.min.js +2 -74
  83. package/dist/okta-auth-js.min.js.LICENSE.txt +32 -0
  84. package/dist/okta-auth-js.min.js.map +1 -1
  85. package/dist/okta-auth-js.polyfill.js +2 -18
  86. package/dist/okta-auth-js.polyfill.js.LICENSE.txt +18 -0
  87. package/dist/okta-auth-js.polyfill.js.map +1 -1
  88. package/dist/okta-auth-js.umd.js +2 -74
  89. package/dist/okta-auth-js.umd.js.LICENSE.txt +32 -0
  90. package/dist/okta-auth-js.umd.js.map +1 -1
  91. package/esm/AuthStateManager.js +5 -0
  92. package/esm/AuthStateManager.js.map +1 -1
  93. package/esm/OktaAuth.js +75 -31
  94. package/esm/OktaAuth.js.map +1 -1
  95. package/esm/OktaUserAgent.js +2 -2
  96. package/esm/StorageManager.js +17 -1
  97. package/esm/StorageManager.js.map +1 -1
  98. package/esm/TransactionManager.js +43 -8
  99. package/esm/TransactionManager.js.map +1 -1
  100. package/esm/browser/browserStorage.js +5 -5
  101. package/esm/browser/browserStorage.js.map +1 -1
  102. package/esm/builderUtil.js +6 -0
  103. package/esm/builderUtil.js.map +1 -1
  104. package/esm/constants.js +2 -0
  105. package/esm/constants.js.map +1 -1
  106. package/esm/fetch/fetchRequest.js +10 -3
  107. package/esm/fetch/fetchRequest.js.map +1 -1
  108. package/esm/http/request.js +4 -0
  109. package/esm/http/request.js.map +1 -1
  110. package/esm/idx/interact.js +5 -2
  111. package/esm/idx/interact.js.map +1 -1
  112. package/esm/idx/introspect.js +22 -6
  113. package/esm/idx/introspect.js.map +1 -1
  114. package/esm/idx/remediate.js +36 -37
  115. package/esm/idx/remediate.js.map +1 -1
  116. package/esm/idx/remediators/Base/AuthenticatorData.js +7 -7
  117. package/esm/idx/remediators/Base/AuthenticatorData.js.map +1 -1
  118. package/esm/idx/remediators/Base/Remediator.js +13 -8
  119. package/esm/idx/remediators/Base/Remediator.js.map +1 -1
  120. package/esm/idx/remediators/Base/SelectAuthenticator.js +6 -6
  121. package/esm/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
  122. package/esm/idx/remediators/Base/VerifyAuthenticator.js +18 -15
  123. package/esm/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
  124. package/esm/idx/remediators/EnrollProfile.js +21 -4
  125. package/esm/idx/remediators/EnrollProfile.js.map +1 -1
  126. package/esm/idx/remediators/Identify.js +4 -2
  127. package/esm/idx/remediators/Identify.js.map +1 -1
  128. package/esm/idx/remediators/ReEnrollAuthenticator.js +1 -1
  129. package/esm/idx/remediators/ReEnrollAuthenticator.js.map +1 -1
  130. package/esm/idx/run.js +27 -6
  131. package/esm/idx/run.js.map +1 -1
  132. package/esm/idx/transactionMeta.js +23 -10
  133. package/esm/idx/transactionMeta.js.map +1 -1
  134. package/esm/idx/types/idx-js.js +3 -0
  135. package/esm/idx/types/idx-js.js.map +1 -1
  136. package/esm/idx/types/index.js +15 -5
  137. package/esm/idx/types/index.js.map +1 -1
  138. package/esm/oidc/getToken.js +15 -10
  139. package/esm/oidc/getToken.js.map +1 -1
  140. package/esm/oidc/getWithPopup.js +8 -2
  141. package/esm/oidc/getWithPopup.js.map +1 -1
  142. package/esm/oidc/getWithRedirect.js.map +1 -1
  143. package/esm/oidc/parseFromUrl.js +59 -17
  144. package/esm/oidc/parseFromUrl.js.map +1 -1
  145. package/esm/oidc/renewTokens.js +27 -5
  146. package/esm/oidc/renewTokens.js.map +1 -1
  147. package/esm/oidc/util/browser.js +1 -12
  148. package/esm/oidc/util/browser.js.map +1 -1
  149. package/esm/oidc/util/loginRedirect.js +9 -5
  150. package/esm/oidc/util/loginRedirect.js.map +1 -1
  151. package/esm/oidc/util/urlParams.js +1 -1
  152. package/esm/oidc/util/urlParams.js.map +1 -1
  153. package/esm/oidc/util/validateClaims.js +8 -6
  154. package/esm/oidc/util/validateClaims.js.map +1 -1
  155. package/esm/options.js +15 -2
  156. package/esm/options.js.map +1 -1
  157. package/esm/server/serverStorage.js +2 -1
  158. package/esm/server/serverStorage.js.map +1 -1
  159. package/esm/tx/AuthTransaction.js +1 -3
  160. package/esm/tx/AuthTransaction.js.map +1 -1
  161. package/esm/tx/api.js +3 -0
  162. package/esm/tx/api.js.map +1 -1
  163. package/esm/types/Transaction.js.map +1 -1
  164. package/esm/util/emailVerify.js +21 -0
  165. package/esm/util/emailVerify.js.map +1 -0
  166. package/esm/util/index.js +1 -0
  167. package/esm/util/index.js.map +1 -1
  168. package/esm/util/sharedStorage.js +43 -0
  169. package/esm/util/sharedStorage.js.map +1 -0
  170. package/lib/AuthStateManager.d.ts +4 -2
  171. package/lib/OktaAuth.d.ts +9 -5
  172. package/lib/StorageManager.d.ts +2 -0
  173. package/lib/TransactionManager.d.ts +5 -1
  174. package/lib/constants.d.ts +2 -0
  175. package/lib/crypto/base64.d.ts +2 -2
  176. package/lib/crypto/oidcHash.d.ts +1 -1
  177. package/lib/crypto/verifyToken.d.ts +1 -1
  178. package/lib/idx/introspect.d.ts +2 -1
  179. package/lib/idx/remediators/Base/AuthenticatorData.d.ts +2 -5
  180. package/lib/idx/remediators/Base/Remediator.d.ts +3 -6
  181. package/lib/idx/remediators/Base/SelectAuthenticator.d.ts +3 -6
  182. package/lib/idx/remediators/Base/VerifyAuthenticator.d.ts +1 -1
  183. package/lib/idx/remediators/EnrollProfile.d.ts +1 -0
  184. package/lib/idx/remediators/Identify.d.ts +1 -5
  185. package/lib/idx/run.d.ts +1 -0
  186. package/lib/idx/transactionMeta.d.ts +4 -3
  187. package/lib/idx/types/idx-js.d.ts +2 -0
  188. package/lib/idx/types/index.d.ts +20 -9
  189. package/lib/oidc/getToken.d.ts +2 -2
  190. package/lib/oidc/parseFromUrl.d.ts +4 -1
  191. package/lib/oidc/renewTokens.d.ts +0 -12
  192. package/lib/oidc/util/loginRedirect.d.ts +1 -1
  193. package/lib/types/AuthState.d.ts +1 -0
  194. package/lib/types/OktaAuthOptions.d.ts +2 -1
  195. package/lib/types/Storage.d.ts +3 -0
  196. package/lib/types/Transaction.d.ts +5 -1
  197. package/lib/types/api.d.ts +9 -4
  198. package/lib/types/http.d.ts +1 -0
  199. package/lib/util/emailVerify.d.ts +17 -0
  200. package/lib/util/index.d.ts +1 -0
  201. package/lib/util/sharedStorage.d.ts +6 -0
  202. package/package.json +12 -10
@@ -14,6 +14,7 @@ import { REDIRECT_NONCE_COOKIE_NAME, REDIRECT_OAUTH_PARAMS_NAME, REDIRECT_STATE_
14
14
  import { isTransactionMeta, isOAuthTransactionMeta } from './types';
15
15
  import { isRawIdxResponse } from './idx/types/idx-js';
16
16
  import { warn } from './util';
17
+ import { clearTransactionFromSharedStorage, loadTransactionFromSharedStorage, pruneSharedStorage, saveTransactionToSharedStorage } from './util/sharedStorage';
17
18
  export default class TransactionManager {
18
19
  constructor(options) {
19
20
  this.storageManager = options.storageManager;
@@ -21,15 +22,29 @@ export default class TransactionManager {
21
22
  this.saveNonceCookie = options.saveNonceCookie === false ? false : true;
22
23
  this.saveStateCookie = options.saveStateCookie === false ? false : true;
23
24
  this.saveParamsCookie = options.saveParamsCookie === false ? false : true;
25
+ this.enableSharedStorage = options.enableSharedStorage === false ? false : true;
24
26
  this.options = options;
25
- }
27
+ } // eslint-disable-next-line complexity
28
+
26
29
 
27
30
  clear() {
28
31
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
29
32
  var transactionStorage = this.storageManager.getTransactionStorage();
30
- transactionStorage.clearStorage();
33
+ var meta = transactionStorage.getStorage(); // Clear primary storage (by default, sessionStorage on browser)
34
+
35
+ transactionStorage.clearStorage(); // clear IDX response storage
36
+
31
37
  var idxStateStorage = this.storageManager.getIdxResponseStorage();
32
- idxStateStorage === null || idxStateStorage === void 0 ? void 0 : idxStateStorage.clearStorage();
38
+ idxStateStorage === null || idxStateStorage === void 0 ? void 0 : idxStateStorage.clearStorage(); // Usually we do NOT want to clear shared storage because another tab may need it to continue/complete a flow
39
+ // It can be cleared after a user succcesfully signs in and receives tokens
40
+
41
+ if (this.enableSharedStorage && options.clearSharedStorage) {
42
+ var state = options.state || (meta === null || meta === void 0 ? void 0 : meta.state);
43
+
44
+ if (state) {
45
+ clearTransactionFromSharedStorage(this.storageManager, state);
46
+ }
47
+ }
33
48
 
34
49
  if (!this.legacyWidgetSupport) {
35
50
  return;
@@ -52,18 +67,25 @@ export default class TransactionManager {
52
67
  // Before saving, check to see if a transaction is already stored.
53
68
  // An existing transaction indicates a concurrency/race/overlap condition
54
69
  var storage = this.storageManager.getTransactionStorage();
55
- var obj = storage.getStorage();
70
+ var obj = storage.getStorage(); // oie process may need to update transaction in the middle of process for tracking purpose
71
+ // false alarm might be caused
72
+ // TODO: revisit for a better solution, https://oktainc.atlassian.net/browse/OKTA-430919
56
73
 
57
- if (isTransactionMeta(obj)) {
74
+ if (isTransactionMeta(obj) && !options.muteWarning) {
58
75
  // eslint-disable-next-line max-len
59
76
  warn('a saved auth transaction exists in storage. This may indicate another auth flow is already in progress.');
60
77
  }
61
78
 
62
- storage.setStorage(meta);
79
+ storage.setStorage(meta); // Shared storage allows continuation of transaction in another tab
80
+
81
+ if (this.enableSharedStorage && meta.state) {
82
+ saveTransactionToSharedStorage(this.storageManager, meta.state, meta);
83
+ }
63
84
 
64
85
  if (!options.oauth) {
65
86
  return;
66
- }
87
+ } // Legacy cookie storage
88
+
67
89
 
68
90
  if (this.saveNonceCookie || this.saveStateCookie || this.saveParamsCookie) {
69
91
  var cookieStorage = this.storageManager.getStorage({
@@ -114,12 +136,25 @@ export default class TransactionManager {
114
136
  return false;
115
137
  }
116
138
  } // load transaction meta from storage
139
+ // eslint-disable-next-line complexity,max-statements
117
140
 
118
141
 
119
142
  load() {
120
143
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
144
+ var meta; // If state was passed, try loading transaction data from shared storage
145
+
146
+ if (this.enableSharedStorage && options.state) {
147
+ pruneSharedStorage(this.storageManager); // prune before load
148
+
149
+ meta = loadTransactionFromSharedStorage(this.storageManager, options.state);
150
+
151
+ if (isTransactionMeta(meta)) {
152
+ return meta;
153
+ }
154
+ }
155
+
121
156
  var storage = this.storageManager.getTransactionStorage();
122
- var meta = storage.getStorage();
157
+ meta = storage.getStorage();
123
158
 
124
159
  if (isTransactionMeta(meta)) {
125
160
  // if we have meta in the new location, there is no need to go further
@@ -1 +1 @@
1
- {"version":3,"sources":["../../lib/TransactionManager.ts"],"names":["AuthSdkError","REDIRECT_NONCE_COOKIE_NAME","REDIRECT_OAUTH_PARAMS_NAME","REDIRECT_STATE_COOKIE_NAME","isTransactionMeta","isOAuthTransactionMeta","isRawIdxResponse","warn","TransactionManager","constructor","options","storageManager","legacyWidgetSupport","saveNonceCookie","saveStateCookie","saveParamsCookie","clear","transactionStorage","getTransactionStorage","clearStorage","idxStateStorage","getIdxResponseStorage","oauth","clearLegacyOAuthParams","pkce","clearLegacyPKCE","save","meta","storage","obj","getStorage","setStorage","cookieStorage","storageType","responseType","state","nonce","scopes","clientId","urls","ignoreSignature","oauthParams","setItem","JSON","stringify","exists","load","loadLegacyOAuthParams","Object","assign","pkceMeta","loadLegacyPKCE","storageUtil","testStorageType","getLegacyPKCEStorage","codeVerifier","getLegacyOAuthParamsStorage","saveIdxResponse","idxResponse","loadIdxResponse"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-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\n\nimport { AuthSdkError } from './errors';\nimport { REDIRECT_NONCE_COOKIE_NAME, REDIRECT_OAUTH_PARAMS_NAME, REDIRECT_STATE_COOKIE_NAME } from './constants';\nimport StorageManager from './StorageManager';\nimport {\n StorageProvider,\n TransactionMeta,\n isTransactionMeta,\n isOAuthTransactionMeta,\n PKCETransactionMeta,\n OAuthTransactionMeta,\n TransactionMetaOptions,\n TransactionManagerOptions,\n CookieStorage\n} from './types';\nimport { RawIdxResponse, isRawIdxResponse } from './idx/types/idx-js';\nimport { warn } from './util';\n\nexport default class TransactionManager {\n options: TransactionManagerOptions;\n storageManager: StorageManager;\n legacyWidgetSupport: boolean;\n saveNonceCookie: boolean;\n saveStateCookie: boolean;\n saveParamsCookie: boolean;\n\n constructor(options: TransactionManagerOptions) {\n this.storageManager = options.storageManager;\n this.legacyWidgetSupport = options.legacyWidgetSupport === false ? false : true;\n this.saveNonceCookie = options.saveNonceCookie === false ? false : true;\n this.saveStateCookie = options.saveStateCookie === false ? false : true;\n this.saveParamsCookie = options.saveParamsCookie === false ? false : true;\n this.options = options;\n }\n\n clear(options: TransactionMetaOptions = {}) {\n const transactionStorage: StorageProvider = this.storageManager.getTransactionStorage();\n transactionStorage.clearStorage();\n\n const idxStateStorage: StorageProvider = this.storageManager.getIdxResponseStorage();\n idxStateStorage?.clearStorage();\n\n if (!this.legacyWidgetSupport) {\n return;\n }\n\n // This is for compatibility with older versions of the signin widget. OKTA-304806\n if (options.oauth) {\n this.clearLegacyOAuthParams();\n }\n\n if (options.pkce) {\n this.clearLegacyPKCE();\n }\n }\n\n // eslint-disable-next-line complexity\n save(meta: TransactionMeta, options: TransactionMetaOptions = {}) {\n // There must be only one transaction executing at a time.\n // Before saving, check to see if a transaction is already stored.\n // An existing transaction indicates a concurrency/race/overlap condition\n\n let storage: StorageProvider = this.storageManager.getTransactionStorage();\n const obj = storage.getStorage();\n if (isTransactionMeta(obj)) {\n // eslint-disable-next-line max-len\n warn('a saved auth transaction exists in storage. This may indicate another auth flow is already in progress.');\n }\n\n storage.setStorage(meta);\n\n if (!options.oauth) {\n return;\n }\n \n if (this.saveNonceCookie || this.saveStateCookie || this.saveParamsCookie) {\n const cookieStorage: CookieStorage = this.storageManager.getStorage({ storageType: 'cookie' }) as CookieStorage;\n\n if (this.saveParamsCookie) {\n const { \n responseType,\n state,\n nonce,\n scopes,\n clientId,\n urls,\n ignoreSignature\n } = meta;\n const oauthParams = {\n responseType,\n state,\n nonce,\n scopes,\n clientId,\n urls,\n ignoreSignature\n };\n cookieStorage.setItem(REDIRECT_OAUTH_PARAMS_NAME, JSON.stringify(oauthParams), null);\n }\n\n if (this.saveNonceCookie && meta.nonce) {\n // Set nonce cookie for servers to validate nonce in id_token\n cookieStorage.setItem(REDIRECT_NONCE_COOKIE_NAME, meta.nonce, null);\n }\n\n if (this.saveStateCookie && meta.state) {\n // Set state cookie for servers to validate state\n cookieStorage.setItem(REDIRECT_STATE_COOKIE_NAME, meta.state, null);\n }\n }\n }\n\n exists(options: TransactionMetaOptions = {}): boolean {\n try {\n const meta: TransactionMeta = this.load(options);\n return !!meta;\n } catch {\n return false;\n }\n }\n\n // load transaction meta from storage\n load(options: TransactionMetaOptions = {}): TransactionMeta {\n let storage: StorageProvider = this.storageManager.getTransactionStorage();\n let meta = storage.getStorage();\n if (isTransactionMeta(meta)) {\n // if we have meta in the new location, there is no need to go further\n return meta;\n }\n\n if (!this.legacyWidgetSupport) {\n return null;\n }\n\n // This is for compatibility with older versions of the signin widget. OKTA-304806\n if (options.oauth) {\n try {\n const oauthParams = this.loadLegacyOAuthParams();\n Object.assign(meta, oauthParams);\n } finally {\n this.clearLegacyOAuthParams();\n }\n }\n\n if (options.pkce) {\n try {\n const pkceMeta: PKCETransactionMeta = this.loadLegacyPKCE();\n Object.assign(meta, pkceMeta);\n } finally {\n this.clearLegacyPKCE();\n }\n }\n\n if (isTransactionMeta(meta)) {\n return meta;\n }\n return null;\n }\n\n // This is for compatibility with older versions of the signin widget. OKTA-304806\n clearLegacyPKCE(): void {\n // clear storages\n let storage: StorageProvider;\n\n if (this.storageManager.storageUtil.testStorageType('localStorage')) {\n storage = this.storageManager.getLegacyPKCEStorage({ storageType: 'localStorage' });\n storage.clearStorage();\n }\n\n if (this.storageManager.storageUtil.testStorageType('sessionStorage')) {\n storage = this.storageManager.getLegacyPKCEStorage({ storageType: 'sessionStorage' });\n storage.clearStorage();\n }\n }\n\n loadLegacyPKCE(): PKCETransactionMeta {\n let storage: StorageProvider;\n let obj;\n \n // Try reading from localStorage first.\n if (this.storageManager.storageUtil.testStorageType('localStorage')) {\n storage = this.storageManager.getLegacyPKCEStorage({ storageType: 'localStorage' });\n obj = storage.getStorage();\n if (obj && obj.codeVerifier) {\n return obj;\n }\n }\n\n // If meta is not valid, read from sessionStorage. This is expected for more recent versions of the widget.\n if (this.storageManager.storageUtil.testStorageType('sessionStorage')) {\n storage = this.storageManager.getLegacyPKCEStorage({ storageType: 'sessionStorage' });\n obj = storage.getStorage();\n if (obj && obj.codeVerifier) {\n return obj;\n }\n }\n\n // If meta is not valid, throw an exception to avoid misleading server-side error\n // The most likely cause of this error is trying to handle a callback twice\n // eslint-disable-next-line max-len\n throw new AuthSdkError('Could not load PKCE codeVerifier from storage. This may indicate the auth flow has already completed or multiple auth flows are executing concurrently.', null);\n }\n\n clearLegacyOAuthParams(): void {\n // clear storages\n let storage: StorageProvider;\n\n if (this.storageManager.storageUtil.testStorageType('sessionStorage')) {\n storage = this.storageManager.getLegacyOAuthParamsStorage({ storageType: 'sessionStorage' });\n storage.clearStorage();\n }\n\n if (this.storageManager.storageUtil.testStorageType('cookie')) {\n storage = this.storageManager.getLegacyOAuthParamsStorage({ storageType: 'cookie' });\n storage.clearStorage();\n }\n }\n\n loadLegacyOAuthParams(): OAuthTransactionMeta {\n let storage: StorageProvider;\n let oauthParams;\n \n // load first from session storage\n if (this.storageManager.storageUtil.testStorageType('sessionStorage')) {\n storage = this.storageManager.getLegacyOAuthParamsStorage({ storageType: 'sessionStorage' });\n oauthParams = storage.getStorage();\n }\n if (isOAuthTransactionMeta(oauthParams)) {\n return oauthParams;\n }\n\n // try to load from cookie\n if (this.storageManager.storageUtil.testStorageType('cookie')) {\n storage = this.storageManager.getLegacyOAuthParamsStorage({ storageType: 'cookie' });\n oauthParams = storage.getStorage();\n }\n\n if (isOAuthTransactionMeta(oauthParams)) {\n return oauthParams;\n }\n\n\n throw new AuthSdkError('Unable to retrieve OAuth redirect params from storage');\n\n // Something is there but we don't recognize it\n // throw new AuthSdkError('Unable to parse the ' + REDIRECT_OAUTH_PARAMS_NAME + ' value from storage');\n }\n\n saveIdxResponse(idxResponse: RawIdxResponse): void {\n const storage: StorageProvider = this.storageManager.getIdxResponseStorage();\n if (!storage) {\n return;\n }\n storage.setStorage(idxResponse);\n }\n\n loadIdxResponse(): RawIdxResponse {\n const storage: StorageProvider = this.storageManager.getIdxResponseStorage();\n if (!storage) {\n return null;\n }\n const idxResponse = storage.getStorage();\n if (!isRawIdxResponse(idxResponse)) {\n return null;\n }\n return idxResponse;\n }\n}"],"file":"TransactionManager.js"}
1
+ {"version":3,"sources":["../../lib/TransactionManager.ts"],"names":["AuthSdkError","REDIRECT_NONCE_COOKIE_NAME","REDIRECT_OAUTH_PARAMS_NAME","REDIRECT_STATE_COOKIE_NAME","isTransactionMeta","isOAuthTransactionMeta","isRawIdxResponse","warn","clearTransactionFromSharedStorage","loadTransactionFromSharedStorage","pruneSharedStorage","saveTransactionToSharedStorage","TransactionManager","constructor","options","storageManager","legacyWidgetSupport","saveNonceCookie","saveStateCookie","saveParamsCookie","enableSharedStorage","clear","transactionStorage","getTransactionStorage","meta","getStorage","clearStorage","idxStateStorage","getIdxResponseStorage","clearSharedStorage","state","oauth","clearLegacyOAuthParams","pkce","clearLegacyPKCE","save","storage","obj","muteWarning","setStorage","cookieStorage","storageType","responseType","nonce","scopes","clientId","urls","ignoreSignature","oauthParams","setItem","JSON","stringify","exists","load","loadLegacyOAuthParams","Object","assign","pkceMeta","loadLegacyPKCE","storageUtil","testStorageType","getLegacyPKCEStorage","codeVerifier","getLegacyOAuthParamsStorage","saveIdxResponse","idxResponse","loadIdxResponse"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-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\n\nimport { AuthSdkError } from './errors';\nimport { REDIRECT_NONCE_COOKIE_NAME, REDIRECT_OAUTH_PARAMS_NAME, REDIRECT_STATE_COOKIE_NAME } from './constants';\nimport StorageManager from './StorageManager';\nimport {\n StorageProvider,\n TransactionMeta,\n isTransactionMeta,\n isOAuthTransactionMeta,\n PKCETransactionMeta,\n OAuthTransactionMeta,\n TransactionMetaOptions,\n TransactionManagerOptions,\n CookieStorage\n} from './types';\nimport { RawIdxResponse, isRawIdxResponse } from './idx/types/idx-js';\nimport { warn } from './util';\nimport {\n clearTransactionFromSharedStorage,\n loadTransactionFromSharedStorage,\n pruneSharedStorage,\n saveTransactionToSharedStorage\n} from './util/sharedStorage';\n\nexport interface ClearTransactionMetaOptions extends TransactionMetaOptions {\n clearSharedStorage?: boolean;\n}\nexport default class TransactionManager {\n options: TransactionManagerOptions;\n storageManager: StorageManager;\n legacyWidgetSupport: boolean;\n saveNonceCookie: boolean;\n saveStateCookie: boolean;\n saveParamsCookie: boolean;\n enableSharedStorage: boolean;\n\n constructor(options: TransactionManagerOptions) {\n this.storageManager = options.storageManager;\n this.legacyWidgetSupport = options.legacyWidgetSupport === false ? false : true;\n this.saveNonceCookie = options.saveNonceCookie === false ? false : true;\n this.saveStateCookie = options.saveStateCookie === false ? false : true;\n this.saveParamsCookie = options.saveParamsCookie === false ? false : true;\n this.enableSharedStorage = options.enableSharedStorage === false ? false : true;\n this.options = options;\n }\n\n // eslint-disable-next-line complexity\n clear(options: ClearTransactionMetaOptions = {}) {\n const transactionStorage: StorageProvider = this.storageManager.getTransactionStorage();\n const meta = transactionStorage.getStorage();\n\n // Clear primary storage (by default, sessionStorage on browser)\n transactionStorage.clearStorage();\n\n // clear IDX response storage\n const idxStateStorage: StorageProvider = this.storageManager.getIdxResponseStorage();\n idxStateStorage?.clearStorage();\n\n // Usually we do NOT want to clear shared storage because another tab may need it to continue/complete a flow\n // It can be cleared after a user succcesfully signs in and receives tokens\n if (this.enableSharedStorage && options.clearSharedStorage) {\n const state = options.state || meta?.state;\n if (state) {\n clearTransactionFromSharedStorage(this.storageManager, state);\n }\n }\n \n if (!this.legacyWidgetSupport) {\n return;\n }\n\n // This is for compatibility with older versions of the signin widget. OKTA-304806\n if (options.oauth) {\n this.clearLegacyOAuthParams();\n }\n\n if (options.pkce) {\n this.clearLegacyPKCE();\n }\n }\n\n // eslint-disable-next-line complexity\n save(meta: TransactionMeta, options: TransactionMetaOptions = {}) {\n // There must be only one transaction executing at a time.\n // Before saving, check to see if a transaction is already stored.\n // An existing transaction indicates a concurrency/race/overlap condition\n\n let storage: StorageProvider = this.storageManager.getTransactionStorage();\n const obj = storage.getStorage();\n // oie process may need to update transaction in the middle of process for tracking purpose\n // false alarm might be caused \n // TODO: revisit for a better solution, https://oktainc.atlassian.net/browse/OKTA-430919\n if (isTransactionMeta(obj) && !options.muteWarning) {\n // eslint-disable-next-line max-len\n warn('a saved auth transaction exists in storage. This may indicate another auth flow is already in progress.');\n }\n\n storage.setStorage(meta);\n\n // Shared storage allows continuation of transaction in another tab\n if (this.enableSharedStorage && meta.state) {\n saveTransactionToSharedStorage(this.storageManager, meta.state, meta);\n }\n\n if (!options.oauth) {\n return;\n }\n \n // Legacy cookie storage\n if (this.saveNonceCookie || this.saveStateCookie || this.saveParamsCookie) {\n const cookieStorage: CookieStorage = this.storageManager.getStorage({ storageType: 'cookie' }) as CookieStorage;\n\n if (this.saveParamsCookie) {\n const { \n responseType,\n state,\n nonce,\n scopes,\n clientId,\n urls,\n ignoreSignature\n } = meta;\n const oauthParams = {\n responseType,\n state,\n nonce,\n scopes,\n clientId,\n urls,\n ignoreSignature\n };\n cookieStorage.setItem(REDIRECT_OAUTH_PARAMS_NAME, JSON.stringify(oauthParams), null);\n }\n\n if (this.saveNonceCookie && meta.nonce) {\n // Set nonce cookie for servers to validate nonce in id_token\n cookieStorage.setItem(REDIRECT_NONCE_COOKIE_NAME, meta.nonce, null);\n }\n\n if (this.saveStateCookie && meta.state) {\n // Set state cookie for servers to validate state\n cookieStorage.setItem(REDIRECT_STATE_COOKIE_NAME, meta.state, null);\n }\n }\n }\n\n exists(options: TransactionMetaOptions = {}): boolean {\n try {\n const meta: TransactionMeta = this.load(options);\n return !!meta;\n } catch {\n return false;\n }\n }\n\n // load transaction meta from storage\n // eslint-disable-next-line complexity,max-statements\n load(options: TransactionMetaOptions = {}): TransactionMeta {\n\n let meta: TransactionMeta;\n\n // If state was passed, try loading transaction data from shared storage\n if (this.enableSharedStorage && options.state) {\n pruneSharedStorage(this.storageManager); // prune before load\n meta = loadTransactionFromSharedStorage(this.storageManager, options.state);\n if (isTransactionMeta(meta)) {\n return meta;\n }\n }\n\n let storage: StorageProvider = this.storageManager.getTransactionStorage();\n meta = storage.getStorage();\n if (isTransactionMeta(meta)) {\n // if we have meta in the new location, there is no need to go further\n return meta;\n }\n\n if (!this.legacyWidgetSupport) {\n return null;\n }\n\n // This is for compatibility with older versions of the signin widget. OKTA-304806\n if (options.oauth) {\n try {\n const oauthParams = this.loadLegacyOAuthParams();\n Object.assign(meta, oauthParams);\n } finally {\n this.clearLegacyOAuthParams();\n }\n }\n\n if (options.pkce) {\n try {\n const pkceMeta: PKCETransactionMeta = this.loadLegacyPKCE();\n Object.assign(meta, pkceMeta);\n } finally {\n this.clearLegacyPKCE();\n }\n }\n\n if (isTransactionMeta(meta)) {\n return meta;\n }\n return null;\n }\n\n // This is for compatibility with older versions of the signin widget. OKTA-304806\n clearLegacyPKCE(): void {\n // clear storages\n let storage: StorageProvider;\n\n if (this.storageManager.storageUtil.testStorageType('localStorage')) {\n storage = this.storageManager.getLegacyPKCEStorage({ storageType: 'localStorage' });\n storage.clearStorage();\n }\n\n if (this.storageManager.storageUtil.testStorageType('sessionStorage')) {\n storage = this.storageManager.getLegacyPKCEStorage({ storageType: 'sessionStorage' });\n storage.clearStorage();\n }\n }\n\n loadLegacyPKCE(): PKCETransactionMeta {\n let storage: StorageProvider;\n let obj;\n \n // Try reading from localStorage first.\n if (this.storageManager.storageUtil.testStorageType('localStorage')) {\n storage = this.storageManager.getLegacyPKCEStorage({ storageType: 'localStorage' });\n obj = storage.getStorage();\n if (obj && obj.codeVerifier) {\n return obj;\n }\n }\n\n // If meta is not valid, read from sessionStorage. This is expected for more recent versions of the widget.\n if (this.storageManager.storageUtil.testStorageType('sessionStorage')) {\n storage = this.storageManager.getLegacyPKCEStorage({ storageType: 'sessionStorage' });\n obj = storage.getStorage();\n if (obj && obj.codeVerifier) {\n return obj;\n }\n }\n\n // If meta is not valid, throw an exception to avoid misleading server-side error\n // The most likely cause of this error is trying to handle a callback twice\n // eslint-disable-next-line max-len\n throw new AuthSdkError('Could not load PKCE codeVerifier from storage. This may indicate the auth flow has already completed or multiple auth flows are executing concurrently.', null);\n }\n\n clearLegacyOAuthParams(): void {\n // clear storages\n let storage: StorageProvider;\n\n if (this.storageManager.storageUtil.testStorageType('sessionStorage')) {\n storage = this.storageManager.getLegacyOAuthParamsStorage({ storageType: 'sessionStorage' });\n storage.clearStorage();\n }\n\n if (this.storageManager.storageUtil.testStorageType('cookie')) {\n storage = this.storageManager.getLegacyOAuthParamsStorage({ storageType: 'cookie' });\n storage.clearStorage();\n }\n }\n\n loadLegacyOAuthParams(): OAuthTransactionMeta {\n let storage: StorageProvider;\n let oauthParams;\n \n // load first from session storage\n if (this.storageManager.storageUtil.testStorageType('sessionStorage')) {\n storage = this.storageManager.getLegacyOAuthParamsStorage({ storageType: 'sessionStorage' });\n oauthParams = storage.getStorage();\n }\n if (isOAuthTransactionMeta(oauthParams)) {\n return oauthParams;\n }\n\n // try to load from cookie\n if (this.storageManager.storageUtil.testStorageType('cookie')) {\n storage = this.storageManager.getLegacyOAuthParamsStorage({ storageType: 'cookie' });\n oauthParams = storage.getStorage();\n }\n\n if (isOAuthTransactionMeta(oauthParams)) {\n return oauthParams;\n }\n\n\n throw new AuthSdkError('Unable to retrieve OAuth redirect params from storage');\n\n // Something is there but we don't recognize it\n // throw new AuthSdkError('Unable to parse the ' + REDIRECT_OAUTH_PARAMS_NAME + ' value from storage');\n }\n\n saveIdxResponse(idxResponse: RawIdxResponse): void {\n const storage: StorageProvider = this.storageManager.getIdxResponseStorage();\n if (!storage) {\n return;\n }\n storage.setStorage(idxResponse);\n }\n\n loadIdxResponse(): RawIdxResponse {\n const storage: StorageProvider = this.storageManager.getIdxResponseStorage();\n if (!storage) {\n return null;\n }\n const idxResponse = storage.getStorage();\n if (!isRawIdxResponse(idxResponse)) {\n return null;\n }\n return idxResponse;\n }\n}"],"file":"TransactionManager.js"}
@@ -192,14 +192,14 @@ var storageUtil = {
192
192
  };
193
193
  },
194
194
  // Provides an in-memory solution
195
+ inMemoryStore: {},
195
196
  getInMemoryStorage: function getInMemoryStorage() {
196
- var store = {};
197
197
  return {
198
- getItem: function getItem(key) {
199
- return store[key];
198
+ getItem: key => {
199
+ return this.inMemoryStore[key];
200
200
  },
201
- setItem: function setItem(key, value) {
202
- store[key] = value;
201
+ setItem: (key, value) => {
202
+ this.inMemoryStore[key] = value;
203
203
  }
204
204
  };
205
205
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/browser/browserStorage.ts"],"names":["AuthSdkError","warn","Cookies","require","storageUtil","getHttpCache","getPKCEStorage","browserHasLocalStorage","storage","getLocalStorage","testStorage","e","browserHasSessionStorage","getSessionStorage","testStorageType","storageType","supported","getStorageByType","options","storageProvider","getCookieStorage","getInMemoryStorage","findStorageType","types","curType","nextType","slice","shift","length","localStorage","sessionStorage","secure","sameSite","sessionCookie","getItem","get","setItem","key","value","expiresAt","set","removeItem","delete","useMultipleCookies","data","Object","keys","forEach","k","indexOf","replace","JSON","parse","stringify","existingValues","storageKey","valueToStore","store","name","cookieOptions","path","Date","expires","remove"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-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 */\n\nimport AuthSdkError from '../errors/AuthSdkError';\nimport {\n StorageProvider,\n StorageOptions,\n PKCEStorage,\n CookieOptions,\n SimpleStorage,\n StorageType,\n BrowserStorageUtil,\n CookieStorage\n} from '../types';\nimport { warn } from '../util';\n\nconst Cookies = require('js-cookie');\n\n// Building this as an object allows us to mock the functions in our tests\nvar storageUtil: BrowserStorageUtil = {\n\n // These are shimmed in `OktaAuthBase.ts`\n getHttpCache(): StorageProvider {\n return null;\n },\n\n getPKCEStorage(): PKCEStorage {\n return null;\n },\n\n // IE11 bug that Microsoft doesn't plan to fix\n // https://connect.microsoft.com/IE/Feedback/Details/1496040\n browserHasLocalStorage: function() {\n try {\n var storage = storageUtil.getLocalStorage();\n return storageUtil.testStorage(storage);\n } catch (e) {\n return false;\n }\n },\n\n browserHasSessionStorage: function() {\n try {\n var storage = storageUtil.getSessionStorage();\n return storageUtil.testStorage(storage);\n } catch (e) {\n return false;\n }\n },\n\n testStorageType: function(storageType: StorageType): boolean {\n var supported = false;\n switch (storageType) {\n case 'sessionStorage':\n supported = storageUtil.browserHasSessionStorage();\n break;\n case 'localStorage':\n supported = storageUtil.browserHasLocalStorage();\n break;\n case 'cookie':\n case 'memory':\n supported = true;\n break;\n default:\n supported = false;\n break;\n }\n return supported;\n },\n\n getStorageByType: function(storageType: StorageType, options: StorageOptions): SimpleStorage {\n let storageProvider = null;\n switch (storageType) {\n case 'sessionStorage':\n storageProvider = storageUtil.getSessionStorage();\n break;\n case 'localStorage':\n storageProvider = storageUtil.getLocalStorage();\n break;\n case 'cookie':\n storageProvider = storageUtil.getCookieStorage(options);\n break;\n case 'memory':\n storageProvider = storageUtil.getInMemoryStorage();\n break;\n default:\n throw new AuthSdkError(`Unrecognized storage option: ${storageType}`);\n break;\n }\n return storageProvider;\n },\n\n findStorageType: function(types: StorageType[]) {\n let curType;\n let nextType;\n \n types = types.slice(); // copy array\n curType = types.shift();\n nextType = types.length ? types[0] : null;\n if (!nextType) {\n return curType;\n }\n\n if (storageUtil.testStorageType(curType)) {\n return curType;\n }\n\n // preferred type was unsupported.\n warn(`This browser doesn't support ${curType}. Switching to ${nextType}.`);\n\n // fallback to the next type. this is a recursive call\n return storageUtil.findStorageType(types);\n },\n\n getLocalStorage: function() {\n return localStorage;\n },\n\n getSessionStorage: function() {\n return sessionStorage;\n },\n\n // Provides webStorage-like interface for cookies\n getCookieStorage: function(options): CookieStorage {\n const secure = options.secure;\n const sameSite = options.sameSite;\n const sessionCookie = options.sessionCookie;\n if (typeof secure === 'undefined' || typeof sameSite === 'undefined') {\n throw new AuthSdkError('getCookieStorage: \"secure\" and \"sameSite\" options must be provided');\n }\n const storage: CookieStorage = {\n getItem: storageUtil.storage.get,\n setItem: function(key, value, expiresAt = '2200-01-01T00:00:00.000Z') {\n // By defauilt, cookie shouldn't expire\n expiresAt = sessionCookie ? null : expiresAt;\n storageUtil.storage.set(key, value, expiresAt, {\n secure: secure, \n sameSite: sameSite,\n });\n },\n removeItem: function(key) {\n storageUtil.storage.delete(key);\n }\n };\n\n if (!options.useMultipleCookies) {\n return storage;\n }\n\n // options.useMultipleCookies - because cookies have size limits.\n // Can only be used when storing an object value. Object properties will be saved to separate cookies.\n // Each property of the object must also be an object.\n return {\n getItem: function(key) {\n var data = storage.getItem(); // read all cookies\n var value = {};\n Object.keys(data).forEach(k => {\n if (k.indexOf(key) === 0) { // filter out unrelated cookies\n value[k.replace(`${key}_`, '')] = JSON.parse(data[k]); // populate with cookie dataa\n }\n });\n return JSON.stringify(value);\n },\n setItem: function(key, value) {\n var existingValues = JSON.parse(this.getItem(key));\n value = JSON.parse(value);\n // Set key-value pairs from input to cookies\n Object.keys(value).forEach(k => {\n var storageKey = key + '_' + k;\n var valueToStore = JSON.stringify(value[k]);\n storage.setItem(storageKey, valueToStore);\n delete existingValues[k];\n });\n // Delete unmatched keys from existing cookies\n Object.keys(existingValues).forEach(k => {\n storage.removeItem(key + '_' + k);\n });\n },\n removeItem: function(key) {\n var existingValues = JSON.parse(this.getItem(key));\n Object.keys(existingValues).forEach(k => {\n storage.removeItem(key + '_' + k);\n });\n }\n };\n },\n\n // Provides an in-memory solution\n getInMemoryStorage: function() {\n var store = {};\n return {\n getItem: function(key) {\n return store[key];\n },\n setItem: function(key, value) {\n store[key] = value;\n }\n };\n },\n\n testStorage: function(storage) {\n var key = 'okta-test-storage';\n try {\n storage.setItem(key, key);\n storage.removeItem(key);\n return true;\n } catch (e) {\n return false;\n }\n },\n\n storage: {\n set: function(name: string, value: string, expiresAt: string, options: CookieOptions): string {\n const { sameSite, secure } = options;\n if (typeof secure === 'undefined' || typeof sameSite === 'undefined') {\n throw new AuthSdkError('storage.set: \"secure\" and \"sameSite\" options must be provided');\n }\n var cookieOptions: CookieOptions = {\n path: options.path || '/',\n secure,\n sameSite\n };\n\n // eslint-disable-next-line no-extra-boolean-cast\n if (!!(Date.parse(expiresAt))) {\n // Expires value can be converted to a Date object.\n //\n // If the 'expiresAt' value is not provided, or the value cannot be\n // parsed as a Date object, the cookie will set as a session cookie.\n cookieOptions.expires = new Date(expiresAt);\n }\n\n Cookies.set(name, value, cookieOptions);\n return storageUtil.storage.get(name);\n },\n\n get: function(name: string): string {\n return Cookies.get(name);\n },\n\n delete: function(name: string): string {\n return Cookies.remove(name, { path: '/' });\n }\n }\n};\n\nexport default storageUtil;\n"],"file":"browserStorage.js"}
1
+ {"version":3,"sources":["../../../lib/browser/browserStorage.ts"],"names":["AuthSdkError","warn","Cookies","require","storageUtil","getHttpCache","getPKCEStorage","browserHasLocalStorage","storage","getLocalStorage","testStorage","e","browserHasSessionStorage","getSessionStorage","testStorageType","storageType","supported","getStorageByType","options","storageProvider","getCookieStorage","getInMemoryStorage","findStorageType","types","curType","nextType","slice","shift","length","localStorage","sessionStorage","secure","sameSite","sessionCookie","getItem","get","setItem","key","value","expiresAt","set","removeItem","delete","useMultipleCookies","data","Object","keys","forEach","k","indexOf","replace","JSON","parse","stringify","existingValues","storageKey","valueToStore","inMemoryStore","name","cookieOptions","path","Date","expires","remove"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-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 */\n\nimport AuthSdkError from '../errors/AuthSdkError';\nimport {\n StorageProvider,\n StorageOptions,\n PKCEStorage,\n CookieOptions,\n SimpleStorage,\n StorageType,\n BrowserStorageUtil,\n CookieStorage\n} from '../types';\nimport { warn } from '../util';\n\nconst Cookies = require('js-cookie');\n\n// Building this as an object allows us to mock the functions in our tests\nvar storageUtil: BrowserStorageUtil = {\n\n // These are shimmed in `OktaAuthBase.ts`\n getHttpCache(): StorageProvider {\n return null;\n },\n\n getPKCEStorage(): PKCEStorage {\n return null;\n },\n\n // IE11 bug that Microsoft doesn't plan to fix\n // https://connect.microsoft.com/IE/Feedback/Details/1496040\n browserHasLocalStorage: function() {\n try {\n var storage = storageUtil.getLocalStorage();\n return storageUtil.testStorage(storage);\n } catch (e) {\n return false;\n }\n },\n\n browserHasSessionStorage: function() {\n try {\n var storage = storageUtil.getSessionStorage();\n return storageUtil.testStorage(storage);\n } catch (e) {\n return false;\n }\n },\n\n testStorageType: function(storageType: StorageType): boolean {\n var supported = false;\n switch (storageType) {\n case 'sessionStorage':\n supported = storageUtil.browserHasSessionStorage();\n break;\n case 'localStorage':\n supported = storageUtil.browserHasLocalStorage();\n break;\n case 'cookie':\n case 'memory':\n supported = true;\n break;\n default:\n supported = false;\n break;\n }\n return supported;\n },\n\n getStorageByType: function(storageType: StorageType, options: StorageOptions): SimpleStorage {\n let storageProvider = null;\n switch (storageType) {\n case 'sessionStorage':\n storageProvider = storageUtil.getSessionStorage();\n break;\n case 'localStorage':\n storageProvider = storageUtil.getLocalStorage();\n break;\n case 'cookie':\n storageProvider = storageUtil.getCookieStorage(options);\n break;\n case 'memory':\n storageProvider = storageUtil.getInMemoryStorage();\n break;\n default:\n throw new AuthSdkError(`Unrecognized storage option: ${storageType}`);\n break;\n }\n return storageProvider;\n },\n\n findStorageType: function(types: StorageType[]) {\n let curType;\n let nextType;\n \n types = types.slice(); // copy array\n curType = types.shift();\n nextType = types.length ? types[0] : null;\n if (!nextType) {\n return curType;\n }\n\n if (storageUtil.testStorageType(curType)) {\n return curType;\n }\n\n // preferred type was unsupported.\n warn(`This browser doesn't support ${curType}. Switching to ${nextType}.`);\n\n // fallback to the next type. this is a recursive call\n return storageUtil.findStorageType(types);\n },\n\n getLocalStorage: function() {\n return localStorage;\n },\n\n getSessionStorage: function() {\n return sessionStorage;\n },\n\n // Provides webStorage-like interface for cookies\n getCookieStorage: function(options): CookieStorage {\n const secure = options.secure;\n const sameSite = options.sameSite;\n const sessionCookie = options.sessionCookie;\n if (typeof secure === 'undefined' || typeof sameSite === 'undefined') {\n throw new AuthSdkError('getCookieStorage: \"secure\" and \"sameSite\" options must be provided');\n }\n const storage: CookieStorage = {\n getItem: storageUtil.storage.get,\n setItem: function(key, value, expiresAt = '2200-01-01T00:00:00.000Z') {\n // By defauilt, cookie shouldn't expire\n expiresAt = sessionCookie ? null : expiresAt;\n storageUtil.storage.set(key, value, expiresAt, {\n secure: secure, \n sameSite: sameSite,\n });\n },\n removeItem: function(key) {\n storageUtil.storage.delete(key);\n }\n };\n\n if (!options.useMultipleCookies) {\n return storage;\n }\n\n // options.useMultipleCookies - because cookies have size limits.\n // Can only be used when storing an object value. Object properties will be saved to separate cookies.\n // Each property of the object must also be an object.\n return {\n getItem: function(key) {\n var data = storage.getItem(); // read all cookies\n var value = {};\n Object.keys(data).forEach(k => {\n if (k.indexOf(key) === 0) { // filter out unrelated cookies\n value[k.replace(`${key}_`, '')] = JSON.parse(data[k]); // populate with cookie dataa\n }\n });\n return JSON.stringify(value);\n },\n setItem: function(key, value) {\n var existingValues = JSON.parse(this.getItem(key));\n value = JSON.parse(value);\n // Set key-value pairs from input to cookies\n Object.keys(value).forEach(k => {\n var storageKey = key + '_' + k;\n var valueToStore = JSON.stringify(value[k]);\n storage.setItem(storageKey, valueToStore);\n delete existingValues[k];\n });\n // Delete unmatched keys from existing cookies\n Object.keys(existingValues).forEach(k => {\n storage.removeItem(key + '_' + k);\n });\n },\n removeItem: function(key) {\n var existingValues = JSON.parse(this.getItem(key));\n Object.keys(existingValues).forEach(k => {\n storage.removeItem(key + '_' + k);\n });\n }\n };\n },\n\n // Provides an in-memory solution\n inMemoryStore: {},\n getInMemoryStorage: function() {\n return {\n getItem: (key) => {\n return this.inMemoryStore[key];\n },\n setItem: (key, value) => {\n this.inMemoryStore[key] = value;\n }\n };\n },\n\n testStorage: function(storage) {\n var key = 'okta-test-storage';\n try {\n storage.setItem(key, key);\n storage.removeItem(key);\n return true;\n } catch (e) {\n return false;\n }\n },\n\n storage: {\n set: function(name: string, value: string, expiresAt: string, options: CookieOptions): string {\n const { sameSite, secure } = options;\n if (typeof secure === 'undefined' || typeof sameSite === 'undefined') {\n throw new AuthSdkError('storage.set: \"secure\" and \"sameSite\" options must be provided');\n }\n var cookieOptions: CookieOptions = {\n path: options.path || '/',\n secure,\n sameSite\n };\n\n // eslint-disable-next-line no-extra-boolean-cast\n if (!!(Date.parse(expiresAt))) {\n // Expires value can be converted to a Date object.\n //\n // If the 'expiresAt' value is not provided, or the value cannot be\n // parsed as a Date object, the cookie will set as a session cookie.\n cookieOptions.expires = new Date(expiresAt);\n }\n\n Cookies.set(name, value, cookieOptions);\n return storageUtil.storage.get(name);\n },\n\n get: function(name: string): string {\n return Cookies.get(name);\n },\n\n delete: function(name: string): string {\n return Cookies.remove(name, { path: '/' });\n }\n }\n};\n\nexport default storageUtil;\n"],"file":"browserStorage.js"}
@@ -15,6 +15,12 @@ import AuthSdkError from './errors/AuthSdkError';
15
15
  // eslint-disable-next-line complexity
16
16
  function assertValidConfig(args) {
17
17
  args = args || {};
18
+ var scopes = args.scopes;
19
+
20
+ if (scopes && !Array.isArray(scopes)) {
21
+ throw new AuthSdkError('scopes must be a array of strings. ' + 'Required usage: new OktaAuth({scopes: ["openid", "email"]})');
22
+ }
23
+
18
24
  var issuer = args.issuer;
19
25
 
20
26
  if (!issuer) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../lib/builderUtil.ts"],"names":["AuthSdkError","assertValidConfig","args","issuer","isUrlRegex","RegExp","test","indexOf","getUserAgent","sdkValue","userAgent","value","template","replace"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAOA,YAAP,MAAyB,uBAAzB;;AAGA;AACA;AACA,SAASC,iBAAT,CAA2BC,IAA3B,EAAkD;AAChDA,EAAAA,IAAI,GAAGA,IAAI,IAAI,EAAf;AAEA,MAAIC,MAAM,GAAGD,IAAI,CAACC,MAAlB;;AACA,MAAI,CAACA,MAAL,EAAa;AACX,UAAM,IAAIH,YAAJ,CAAiB,sCACrB,8FADI,CAAN;AAED;;AAED,MAAII,UAAU,GAAG,IAAIC,MAAJ,CAAW,eAAX,CAAjB;;AACA,MAAI,CAACD,UAAU,CAACE,IAAX,CAAgBJ,IAAI,CAACC,MAArB,CAAL,EAAmC;AACjC,UAAM,IAAIH,YAAJ,CAAiB,iCACrB,8FADI,CAAN;AAED;;AAED,MAAIG,MAAM,CAACI,OAAP,CAAe,SAAf,MAA8B,CAAC,CAAnC,EAAsC;AACpC,UAAM,IAAIP,YAAJ,CAAiB,sEACrB,uEADI,CAAN;AAED;AACF;;AAED,SAASQ,YAAT,CAAsBN,IAAtB,EAA6CO,QAA7C,EAAuE;AACrE,MAAIC,SAAS,GAAGR,IAAI,CAACQ,SAAL,IAAkB,EAAlC;;AAEA,MAAIA,SAAS,CAACC,KAAd,EAAqB;AACnB,WAAOD,SAAS,CAACC,KAAjB;AACD;;AAED,MAAID,SAAS,CAACE,QAAd,EAAwB;AACtB,WAAOF,SAAS,CAACE,QAAV,CAAmBC,OAAnB,CAA2B,eAA3B,EAA4CJ,QAA5C,CAAP;AACD;;AAED,SAAOA,QAAP;AACD;;AAED,SACER,iBADF,EAEEO,YAFF","sourcesContent":["/*!\n * Copyright (c) 2018-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 AuthSdkError from './errors/AuthSdkError';\nimport { OktaAuthOptions } from './types';\n\n// TODO: use @okta/configuration-validation (move module to this monorepo?)\n// eslint-disable-next-line complexity\nfunction assertValidConfig(args: OktaAuthOptions) {\n args = args || {};\n\n var issuer = args.issuer;\n if (!issuer) {\n throw new AuthSdkError('No issuer passed to constructor. ' + \n 'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com/oauth2/{authServerId}\"})');\n }\n\n var isUrlRegex = new RegExp('^http?s?://.+');\n if (!isUrlRegex.test(args.issuer)) {\n throw new AuthSdkError('Issuer must be a valid URL. ' + \n 'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com/oauth2/{authServerId}\"})');\n }\n\n if (issuer.indexOf('-admin.') !== -1) {\n throw new AuthSdkError('Issuer URL passed to constructor contains \"-admin\" in subdomain. ' +\n 'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com})');\n }\n}\n\nfunction getUserAgent(args: OktaAuthOptions, sdkValue: string): string {\n var userAgent = args.userAgent || {};\n\n if (userAgent.value) {\n return userAgent.value;\n }\n\n if (userAgent.template) {\n return userAgent.template.replace('$OKTA_AUTH_JS', sdkValue);\n }\n\n return sdkValue;\n}\n\nexport {\n assertValidConfig,\n getUserAgent\n};\n"],"file":"builderUtil.js"}
1
+ {"version":3,"sources":["../../lib/builderUtil.ts"],"names":["AuthSdkError","assertValidConfig","args","scopes","Array","isArray","issuer","isUrlRegex","RegExp","test","indexOf","getUserAgent","sdkValue","userAgent","value","template","replace"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAOA,YAAP,MAAyB,uBAAzB;;AAGA;AACA;AACA,SAASC,iBAAT,CAA2BC,IAA3B,EAAkD;AAChDA,EAAAA,IAAI,GAAGA,IAAI,IAAI,EAAf;AAEA,MAAIC,MAAM,GAAGD,IAAI,CAACC,MAAlB;;AACA,MAAIA,MAAM,IAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAf,EAAsC;AACpC,UAAM,IAAIH,YAAJ,CAAiB,wCACrB,6DADI,CAAN;AAED;;AAED,MAAIM,MAAM,GAAGJ,IAAI,CAACI,MAAlB;;AACA,MAAI,CAACA,MAAL,EAAa;AACX,UAAM,IAAIN,YAAJ,CAAiB,sCACrB,8FADI,CAAN;AAED;;AAED,MAAIO,UAAU,GAAG,IAAIC,MAAJ,CAAW,eAAX,CAAjB;;AACA,MAAI,CAACD,UAAU,CAACE,IAAX,CAAgBP,IAAI,CAACI,MAArB,CAAL,EAAmC;AACjC,UAAM,IAAIN,YAAJ,CAAiB,iCACrB,8FADI,CAAN;AAED;;AAED,MAAIM,MAAM,CAACI,OAAP,CAAe,SAAf,MAA8B,CAAC,CAAnC,EAAsC;AACpC,UAAM,IAAIV,YAAJ,CAAiB,sEACrB,uEADI,CAAN;AAED;AACF;;AAED,SAASW,YAAT,CAAsBT,IAAtB,EAA6CU,QAA7C,EAAuE;AACrE,MAAIC,SAAS,GAAGX,IAAI,CAACW,SAAL,IAAkB,EAAlC;;AAEA,MAAIA,SAAS,CAACC,KAAd,EAAqB;AACnB,WAAOD,SAAS,CAACC,KAAjB;AACD;;AAED,MAAID,SAAS,CAACE,QAAd,EAAwB;AACtB,WAAOF,SAAS,CAACE,QAAV,CAAmBC,OAAnB,CAA2B,eAA3B,EAA4CJ,QAA5C,CAAP;AACD;;AAED,SAAOA,QAAP;AACD;;AAED,SACEX,iBADF,EAEEU,YAFF","sourcesContent":["/*!\n * Copyright (c) 2018-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 AuthSdkError from './errors/AuthSdkError';\nimport { OktaAuthOptions } from './types';\n\n// TODO: use @okta/configuration-validation (move module to this monorepo?)\n// eslint-disable-next-line complexity\nfunction assertValidConfig(args: OktaAuthOptions) {\n args = args || {};\n\n var scopes = args.scopes;\n if (scopes && !Array.isArray(scopes)) {\n throw new AuthSdkError('scopes must be a array of strings. ' +\n 'Required usage: new OktaAuth({scopes: [\"openid\", \"email\"]})');\n }\n\n var issuer = args.issuer;\n if (!issuer) {\n throw new AuthSdkError('No issuer passed to constructor. ' + \n 'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com/oauth2/{authServerId}\"})');\n }\n\n var isUrlRegex = new RegExp('^http?s?://.+');\n if (!isUrlRegex.test(args.issuer)) {\n throw new AuthSdkError('Issuer must be a valid URL. ' + \n 'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com/oauth2/{authServerId}\"})');\n }\n\n if (issuer.indexOf('-admin.') !== -1) {\n throw new AuthSdkError('Issuer URL passed to constructor contains \"-admin\" in subdomain. ' +\n 'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com})');\n }\n}\n\nfunction getUserAgent(args: OktaAuthOptions, sdkValue: string): string {\n var userAgent = args.userAgent || {};\n\n if (userAgent.value) {\n return userAgent.value;\n }\n\n if (userAgent.template) {\n return userAgent.template.replace('$OKTA_AUTH_JS', sdkValue);\n }\n\n return sdkValue;\n}\n\nexport {\n assertValidConfig,\n getUserAgent\n};\n"],"file":"builderUtil.js"}
package/esm/constants.js CHANGED
@@ -20,6 +20,8 @@ export var TOKEN_STORAGE_NAME = 'okta-token-storage';
20
20
  export var CACHE_STORAGE_NAME = 'okta-cache-storage';
21
21
  export var PKCE_STORAGE_NAME = 'okta-pkce-storage';
22
22
  export var TRANSACTION_STORAGE_NAME = 'okta-transaction-storage';
23
+ export var SHARED_TRANSACTION_STORAGE_NAME = 'okta-shared-transaction-storage';
24
+ export var ORIGINAL_URI_STORAGE_NAME = 'okta-original-uri-storage';
23
25
  export var IDX_RESPONSE_STORAGE_NAME = 'okta-idx-response-storage';
24
26
  export var ACCESS_TOKEN_STORAGE_KEY = 'accessToken';
25
27
  export var ID_TOKEN_STORAGE_KEY = 'idToken';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../lib/constants.ts"],"names":["STATE_TOKEN_KEY_NAME","DEFAULT_POLLING_DELAY","DEFAULT_MAX_CLOCK_SKEW","DEFAULT_CACHE_DURATION","REDIRECT_OAUTH_PARAMS_NAME","REDIRECT_STATE_COOKIE_NAME","REDIRECT_NONCE_COOKIE_NAME","TOKEN_STORAGE_NAME","CACHE_STORAGE_NAME","PKCE_STORAGE_NAME","TRANSACTION_STORAGE_NAME","IDX_RESPONSE_STORAGE_NAME","ACCESS_TOKEN_STORAGE_KEY","ID_TOKEN_STORAGE_KEY","REFRESH_TOKEN_STORAGE_KEY","REFERRER_PATH_STORAGE_KEY","MIN_VERIFIER_LENGTH","MAX_VERIFIER_LENGTH","DEFAULT_CODE_CHALLENGE_METHOD","IDX_API_VERSION"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAO,IAAMA,oBAAoB,GAAG,gBAA7B;AACP,OAAO,IAAMC,qBAAqB,GAAG,GAA9B;AACP,OAAO,IAAMC,sBAAsB,GAAG,GAA/B;AACP,OAAO,IAAMC,sBAAsB,GAAG,KAA/B;AACP,OAAO,IAAMC,0BAA0B,GAAG,4BAAnC;AACP,OAAO,IAAMC,0BAA0B,GAAG,kBAAnC;AACP,OAAO,IAAMC,0BAA0B,GAAG,kBAAnC;AACP,OAAO,IAAMC,kBAAkB,GAAG,oBAA3B;AACP,OAAO,IAAMC,kBAAkB,GAAG,oBAA3B;AACP,OAAO,IAAMC,iBAAiB,GAAG,mBAA1B;AACP,OAAO,IAAMC,wBAAwB,GAAG,0BAAjC;AACP,OAAO,IAAMC,yBAAyB,GAAG,2BAAlC;AACP,OAAO,IAAMC,wBAAwB,GAAG,aAAjC;AACP,OAAO,IAAMC,oBAAoB,GAAI,SAA9B;AACP,OAAO,IAAMC,yBAAyB,GAAI,cAAnC;AACP,OAAO,IAAMC,yBAAyB,GAAG,cAAlC,C,CAEP;AACA;;AACA,OAAO,IAAMC,mBAAmB,GAAG,EAA5B;AACP,OAAO,IAAMC,mBAAmB,GAAG,GAA5B;AACP,OAAO,IAAMC,6BAA6B,GAAG,MAAtC;AAEP,OAAO,IAAMC,eAAe,GAAG,OAAxB","sourcesContent":["/*!\n * Copyright (c) 2015-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 const STATE_TOKEN_KEY_NAME = 'oktaStateToken';\nexport const DEFAULT_POLLING_DELAY = 500;\nexport const DEFAULT_MAX_CLOCK_SKEW = 300;\nexport const DEFAULT_CACHE_DURATION = 86400;\nexport const REDIRECT_OAUTH_PARAMS_NAME = 'okta-oauth-redirect-params';\nexport const REDIRECT_STATE_COOKIE_NAME = 'okta-oauth-state';\nexport const REDIRECT_NONCE_COOKIE_NAME = 'okta-oauth-nonce';\nexport const TOKEN_STORAGE_NAME = 'okta-token-storage';\nexport const CACHE_STORAGE_NAME = 'okta-cache-storage';\nexport const PKCE_STORAGE_NAME = 'okta-pkce-storage';\nexport const TRANSACTION_STORAGE_NAME = 'okta-transaction-storage';\nexport const IDX_RESPONSE_STORAGE_NAME = 'okta-idx-response-storage';\nexport const ACCESS_TOKEN_STORAGE_KEY = 'accessToken';\nexport const ID_TOKEN_STORAGE_KEY = 'idToken';\nexport const REFRESH_TOKEN_STORAGE_KEY = 'refreshToken';\nexport const REFERRER_PATH_STORAGE_KEY = 'referrerPath';\n\n// Code verifier: Random URL-safe string with a minimum length of 43 characters.\n// Code challenge: Base64 URL-encoded SHA-256 hash of the code verifier.\nexport const MIN_VERIFIER_LENGTH = 43;\nexport const MAX_VERIFIER_LENGTH = 128;\nexport const DEFAULT_CODE_CHALLENGE_METHOD = 'S256';\n\nexport const IDX_API_VERSION = '1.0.0';"],"file":"constants.js"}
1
+ {"version":3,"sources":["../../lib/constants.ts"],"names":["STATE_TOKEN_KEY_NAME","DEFAULT_POLLING_DELAY","DEFAULT_MAX_CLOCK_SKEW","DEFAULT_CACHE_DURATION","REDIRECT_OAUTH_PARAMS_NAME","REDIRECT_STATE_COOKIE_NAME","REDIRECT_NONCE_COOKIE_NAME","TOKEN_STORAGE_NAME","CACHE_STORAGE_NAME","PKCE_STORAGE_NAME","TRANSACTION_STORAGE_NAME","SHARED_TRANSACTION_STORAGE_NAME","ORIGINAL_URI_STORAGE_NAME","IDX_RESPONSE_STORAGE_NAME","ACCESS_TOKEN_STORAGE_KEY","ID_TOKEN_STORAGE_KEY","REFRESH_TOKEN_STORAGE_KEY","REFERRER_PATH_STORAGE_KEY","MIN_VERIFIER_LENGTH","MAX_VERIFIER_LENGTH","DEFAULT_CODE_CHALLENGE_METHOD","IDX_API_VERSION"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAO,IAAMA,oBAAoB,GAAG,gBAA7B;AACP,OAAO,IAAMC,qBAAqB,GAAG,GAA9B;AACP,OAAO,IAAMC,sBAAsB,GAAG,GAA/B;AACP,OAAO,IAAMC,sBAAsB,GAAG,KAA/B;AACP,OAAO,IAAMC,0BAA0B,GAAG,4BAAnC;AACP,OAAO,IAAMC,0BAA0B,GAAG,kBAAnC;AACP,OAAO,IAAMC,0BAA0B,GAAG,kBAAnC;AACP,OAAO,IAAMC,kBAAkB,GAAG,oBAA3B;AACP,OAAO,IAAMC,kBAAkB,GAAG,oBAA3B;AACP,OAAO,IAAMC,iBAAiB,GAAG,mBAA1B;AACP,OAAO,IAAMC,wBAAwB,GAAG,0BAAjC;AACP,OAAO,IAAMC,+BAA+B,GAAG,iCAAxC;AACP,OAAO,IAAMC,yBAAyB,GAAG,2BAAlC;AACP,OAAO,IAAMC,yBAAyB,GAAG,2BAAlC;AACP,OAAO,IAAMC,wBAAwB,GAAG,aAAjC;AACP,OAAO,IAAMC,oBAAoB,GAAI,SAA9B;AACP,OAAO,IAAMC,yBAAyB,GAAI,cAAnC;AACP,OAAO,IAAMC,yBAAyB,GAAG,cAAlC,C,CAEP;AACA;;AACA,OAAO,IAAMC,mBAAmB,GAAG,EAA5B;AACP,OAAO,IAAMC,mBAAmB,GAAG,GAA5B;AACP,OAAO,IAAMC,6BAA6B,GAAG,MAAtC;AAEP,OAAO,IAAMC,eAAe,GAAG,OAAxB","sourcesContent":["/*!\n * Copyright (c) 2015-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 const STATE_TOKEN_KEY_NAME = 'oktaStateToken';\nexport const DEFAULT_POLLING_DELAY = 500;\nexport const DEFAULT_MAX_CLOCK_SKEW = 300;\nexport const DEFAULT_CACHE_DURATION = 86400;\nexport const REDIRECT_OAUTH_PARAMS_NAME = 'okta-oauth-redirect-params';\nexport const REDIRECT_STATE_COOKIE_NAME = 'okta-oauth-state';\nexport const REDIRECT_NONCE_COOKIE_NAME = 'okta-oauth-nonce';\nexport const TOKEN_STORAGE_NAME = 'okta-token-storage';\nexport const CACHE_STORAGE_NAME = 'okta-cache-storage';\nexport const PKCE_STORAGE_NAME = 'okta-pkce-storage';\nexport const TRANSACTION_STORAGE_NAME = 'okta-transaction-storage';\nexport const SHARED_TRANSACTION_STORAGE_NAME = 'okta-shared-transaction-storage';\nexport const ORIGINAL_URI_STORAGE_NAME = 'okta-original-uri-storage';\nexport const IDX_RESPONSE_STORAGE_NAME = 'okta-idx-response-storage';\nexport const ACCESS_TOKEN_STORAGE_KEY = 'accessToken';\nexport const ID_TOKEN_STORAGE_KEY = 'idToken';\nexport const REFRESH_TOKEN_STORAGE_KEY = 'refreshToken';\nexport const REFERRER_PATH_STORAGE_KEY = 'referrerPath';\n\n// Code verifier: Random URL-safe string with a minimum length of 43 characters.\n// Code challenge: Base64 URL-encoded SHA-256 hash of the code verifier.\nexport const MIN_VERIFIER_LENGTH = 43;\nexport const MAX_VERIFIER_LENGTH = 128;\nexport const DEFAULT_CODE_CHALLENGE_METHOD = 'S256';\n\nexport const IDX_API_VERSION = '1.0.0';"],"file":"constants.js"}
@@ -25,11 +25,18 @@ function readData(response) {
25
25
  }
26
26
  }
27
27
 
28
- function formatResult(status, data) {
28
+ function formatResult(status, data, response) {
29
29
  var isObject = typeof data === 'object';
30
+ var headers = {};
31
+
32
+ for (var pair of response.headers.entries()) {
33
+ headers[pair[0]] = pair[1];
34
+ }
35
+
30
36
  var result = {
31
37
  responseText: isObject ? JSON.stringify(data) : data,
32
- status: status
38
+ status: status,
39
+ headers
33
40
  };
34
41
 
35
42
  if (isObject) {
@@ -67,7 +74,7 @@ function fetchRequest(method, url, args) {
67
74
  var error = !response.ok;
68
75
  var status = response.status;
69
76
  return readData(response).then(data => {
70
- return formatResult(status, data);
77
+ return formatResult(status, data, response);
71
78
  }).then(result => {
72
79
  var _result$responseJSON;
73
80
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/fetch/fetchRequest.ts"],"names":["crossFetch","readData","response","headers","get","toLowerCase","indexOf","json","catch","e","error","errorSummary","text","formatResult","status","data","isObject","result","responseText","JSON","stringify","responseType","responseJSON","fetchRequest","method","url","args","body","contentType","fetch","global","fetchPromise","credentials","withCredentials","finally","Promise","resolve","then","ok"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2018-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 crossFetch from 'cross-fetch';\nimport { FetchOptions, FetchResponse, HttpResponse } from '../types';\n\nfunction readData(response: FetchResponse): Promise<object | string> {\n if (response.headers.get('Content-Type') &&\n response.headers.get('Content-Type').toLowerCase().indexOf('application/json') >= 0) {\n return response.json()\n // JSON parse can fail if response is not a valid object\n .catch(e => {\n return {\n error: e,\n errorSummary: 'Could not parse server response'\n };\n });\n } else {\n return response.text();\n }\n}\n\nfunction formatResult(status: number, data: object | string) {\n const isObject = typeof data === 'object';\n const result: HttpResponse = {\n responseText: isObject ? JSON.stringify(data) : data as string,\n status: status\n };\n if (isObject) {\n result.responseType = 'json';\n result.responseJSON = data as object;\n }\n return result;\n}\n\n/* eslint-disable complexity */\nfunction fetchRequest(method: string, url: string, args: FetchOptions) {\n var body = args.data;\n var headers = args.headers || {};\n var contentType = (headers['Content-Type'] || headers['content-type'] || '');\n\n // JSON encode body (if appropriate)\n if (contentType === 'application/json' && body && typeof body !== 'string') {\n body = JSON.stringify(body);\n }\n var fetch = global.fetch || crossFetch;\n var fetchPromise = fetch(url, {\n method: method,\n headers: args.headers,\n body: body as string,\n credentials: args.withCredentials ? 'include' : 'omit'\n });\n\n if (!fetchPromise.finally) {\n fetchPromise = Promise.resolve(fetchPromise);\n }\n\n return fetchPromise.then(function(response) {\n var error = !response.ok;\n var status = response.status;\n return readData(response)\n .then(data => {\n return formatResult(status, data);\n })\n .then(result => {\n if (error || result.responseJSON?.error) {\n // Throwing result object since error handling is done in http.js\n throw result;\n }\n return result;\n });\n });\n}\n\nexport default fetchRequest;\n"],"file":"fetchRequest.js"}
1
+ {"version":3,"sources":["../../../lib/fetch/fetchRequest.ts"],"names":["crossFetch","readData","response","headers","get","toLowerCase","indexOf","json","catch","e","error","errorSummary","text","formatResult","status","data","isObject","pair","entries","result","responseText","JSON","stringify","responseType","responseJSON","fetchRequest","method","url","args","body","contentType","fetch","global","fetchPromise","credentials","withCredentials","finally","Promise","resolve","then","ok"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2018-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 crossFetch from 'cross-fetch';\nimport { FetchOptions, FetchResponse, HttpResponse } from '../types';\n\nfunction readData(response: FetchResponse): Promise<object | string> {\n if (response.headers.get('Content-Type') &&\n response.headers.get('Content-Type').toLowerCase().indexOf('application/json') >= 0) {\n return response.json()\n // JSON parse can fail if response is not a valid object\n .catch(e => {\n return {\n error: e,\n errorSummary: 'Could not parse server response'\n };\n });\n } else {\n return response.text();\n }\n}\n\nfunction formatResult(status: number, data: object | string, response: Response) {\n const isObject = typeof data === 'object';\n const headers = {};\n for (const pair of response.headers.entries()) {\n headers[pair[0]] = pair[1];\n }\n const result: HttpResponse = {\n responseText: isObject ? JSON.stringify(data) : data as string,\n status: status,\n headers\n };\n if (isObject) {\n result.responseType = 'json';\n result.responseJSON = data as object;\n }\n return result;\n}\n\n/* eslint-disable complexity */\nfunction fetchRequest(method: string, url: string, args: FetchOptions) {\n var body = args.data;\n var headers = args.headers || {};\n var contentType = (headers['Content-Type'] || headers['content-type'] || '');\n\n // JSON encode body (if appropriate)\n if (contentType === 'application/json' && body && typeof body !== 'string') {\n body = JSON.stringify(body);\n }\n var fetch = global.fetch || crossFetch;\n var fetchPromise = fetch(url, {\n method: method,\n headers: args.headers,\n body: body as string,\n credentials: args.withCredentials ? 'include' : 'omit'\n });\n\n if (!fetchPromise.finally) {\n fetchPromise = Promise.resolve(fetchPromise);\n }\n\n return fetchPromise.then(function(response) {\n var error = !response.ok;\n var status = response.status;\n return readData(response)\n .then(data => {\n return formatResult(status, data, response);\n })\n .then(result => {\n if (error || result.responseJSON?.error) {\n // Throwing result object since error handling is done in http.js\n throw result;\n }\n return result;\n });\n });\n}\n\nexport default fetchRequest;\n"],"file":"fetchRequest.js"}
@@ -68,6 +68,10 @@ export function httpRequest(sdk, options) {
68
68
 
69
69
  if (res && isString(res)) {
70
70
  res = JSON.parse(res);
71
+
72
+ if (res && typeof res === 'object' && !res.headers) {
73
+ res.headers = resp.headers;
74
+ }
71
75
  }
72
76
 
73
77
  if (saveAuthnState) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/http/request.ts"],"names":["isString","clone","isAbsoluteUrl","removeNils","AuthApiError","STATE_TOKEN_KEY_NAME","DEFAULT_CACHE_DURATION","httpRequest","sdk","options","url","method","args","saveAuthnState","accessToken","withCredentials","storageUtil","storage","httpCache","storageManager","getHttpCache","cookies","cacheResponse","cacheContents","getStorage","cachedResponse","Date","now","expiresAt","Promise","resolve","response","oktaUserAgentHeader","_oktaUserAgent","getHttpHeader","headers","Object","assign","ajaxOptions","data","undefined","err","res","httpRequestClient","then","resp","responseText","JSON","parse","stateToken","delete","set","updateStorage","Math","floor","catch","serverErr","e","errorSummary","status","transformErrorXHR","errorCode","get","getIssuerOrigin","getOptions","post","postOptions"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-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 */\n\n/* eslint-disable complexity */\nimport { isString, clone, isAbsoluteUrl, removeNils } from '../util';\nimport AuthApiError from '../errors/AuthApiError';\nimport { STATE_TOKEN_KEY_NAME, DEFAULT_CACHE_DURATION } from '../constants';\nimport { OktaAuth, RequestOptions, FetchOptions, RequestData } from '../types';\n\nexport function httpRequest(sdk: OktaAuth, options: RequestOptions): Promise<any> {\n options = options || {};\n var url = options.url,\n method = options.method,\n args = options.args,\n saveAuthnState = options.saveAuthnState,\n accessToken = options.accessToken,\n withCredentials = options.withCredentials === true, // default value is false\n storageUtil = sdk.options.storageUtil,\n storage = storageUtil.storage,\n httpCache = sdk.storageManager.getHttpCache(sdk.options.cookies);\n\n if (options.cacheResponse) {\n var cacheContents = httpCache.getStorage();\n var cachedResponse = cacheContents[url];\n if (cachedResponse && Date.now()/1000 < cachedResponse.expiresAt) {\n return Promise.resolve(cachedResponse.response);\n }\n }\n\n var oktaUserAgentHeader = sdk._oktaUserAgent.getHttpHeader();\n var headers: HeadersInit = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n ...oktaUserAgentHeader\n };\n Object.assign(headers, sdk.options.headers, options.headers);\n headers = removeNils(headers) as HeadersInit;\n\n if (accessToken && isString(accessToken)) {\n headers['Authorization'] = 'Bearer ' + accessToken;\n }\n\n var ajaxOptions: FetchOptions = {\n headers,\n data: args || undefined,\n withCredentials\n };\n\n var err, res;\n return sdk.options.httpRequestClient(method, url, ajaxOptions)\n .then(function(resp) {\n res = resp.responseText;\n if (res && isString(res)) {\n res = JSON.parse(res);\n }\n\n if (saveAuthnState) {\n if (!res.stateToken) {\n storage.delete(STATE_TOKEN_KEY_NAME);\n }\n }\n\n if (res && res.stateToken && res.expiresAt) {\n storage.set(STATE_TOKEN_KEY_NAME, res.stateToken, res.expiresAt, sdk.options.cookies);\n }\n\n if (res && options.cacheResponse) {\n httpCache.updateStorage(url, {\n expiresAt: Math.floor(Date.now()/1000) + DEFAULT_CACHE_DURATION,\n response: res\n });\n }\n\n return res;\n })\n .catch(function(resp) {\n var serverErr = resp.responseText || {};\n if (isString(serverErr)) {\n try {\n serverErr = JSON.parse(serverErr);\n } catch (e) {\n serverErr = {\n errorSummary: 'Unknown error'\n };\n }\n }\n\n if (resp.status >= 500) {\n serverErr.errorSummary = 'Unknown error';\n }\n\n if (sdk.options.transformErrorXHR) {\n resp = sdk.options.transformErrorXHR(clone(resp));\n }\n\n err = new AuthApiError(serverErr, resp);\n\n if (err.errorCode === 'E0000011') {\n storage.delete(STATE_TOKEN_KEY_NAME);\n }\n\n throw err;\n });\n}\n\nexport function get(sdk: OktaAuth, url: string, options?: RequestOptions) {\n url = isAbsoluteUrl(url) ? url : sdk.getIssuerOrigin() + url;\n var getOptions = {\n url: url,\n method: 'GET'\n };\n Object.assign(getOptions, options);\n return httpRequest(sdk, getOptions);\n}\n\nexport function post(sdk: OktaAuth, url: string, args?: RequestData, options?: RequestOptions) {\n url = isAbsoluteUrl(url) ? url : sdk.getIssuerOrigin() + url;\n var postOptions = {\n url: url,\n method: 'POST',\n args: args,\n saveAuthnState: true\n };\n Object.assign(postOptions, options);\n return httpRequest(sdk, postOptions);\n}\n"],"file":"request.js"}
1
+ {"version":3,"sources":["../../../lib/http/request.ts"],"names":["isString","clone","isAbsoluteUrl","removeNils","AuthApiError","STATE_TOKEN_KEY_NAME","DEFAULT_CACHE_DURATION","httpRequest","sdk","options","url","method","args","saveAuthnState","accessToken","withCredentials","storageUtil","storage","httpCache","storageManager","getHttpCache","cookies","cacheResponse","cacheContents","getStorage","cachedResponse","Date","now","expiresAt","Promise","resolve","response","oktaUserAgentHeader","_oktaUserAgent","getHttpHeader","headers","Object","assign","ajaxOptions","data","undefined","err","res","httpRequestClient","then","resp","responseText","JSON","parse","stateToken","delete","set","updateStorage","Math","floor","catch","serverErr","e","errorSummary","status","transformErrorXHR","errorCode","get","getIssuerOrigin","getOptions","post","postOptions"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-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 */\n\n/* eslint-disable complexity */\nimport { isString, clone, isAbsoluteUrl, removeNils } from '../util';\nimport AuthApiError from '../errors/AuthApiError';\nimport { STATE_TOKEN_KEY_NAME, DEFAULT_CACHE_DURATION } from '../constants';\nimport { OktaAuth, RequestOptions, FetchOptions, RequestData } from '../types';\n\nexport function httpRequest(sdk: OktaAuth, options: RequestOptions): Promise<any> {\n options = options || {};\n var url = options.url,\n method = options.method,\n args = options.args,\n saveAuthnState = options.saveAuthnState,\n accessToken = options.accessToken,\n withCredentials = options.withCredentials === true, // default value is false\n storageUtil = sdk.options.storageUtil,\n storage = storageUtil.storage,\n httpCache = sdk.storageManager.getHttpCache(sdk.options.cookies);\n\n if (options.cacheResponse) {\n var cacheContents = httpCache.getStorage();\n var cachedResponse = cacheContents[url];\n if (cachedResponse && Date.now()/1000 < cachedResponse.expiresAt) {\n return Promise.resolve(cachedResponse.response);\n }\n }\n\n var oktaUserAgentHeader = sdk._oktaUserAgent.getHttpHeader();\n var headers: HeadersInit = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n ...oktaUserAgentHeader\n };\n Object.assign(headers, sdk.options.headers, options.headers);\n headers = removeNils(headers) as HeadersInit;\n\n if (accessToken && isString(accessToken)) {\n headers['Authorization'] = 'Bearer ' + accessToken;\n }\n\n var ajaxOptions: FetchOptions = {\n headers,\n data: args || undefined,\n withCredentials\n };\n\n var err, res;\n return sdk.options.httpRequestClient(method, url, ajaxOptions)\n .then(function(resp) {\n res = resp.responseText;\n if (res && isString(res)) {\n res = JSON.parse(res);\n if (res && typeof res === 'object' && !res.headers) {\n res.headers = resp.headers;\n }\n }\n\n if (saveAuthnState) {\n if (!res.stateToken) {\n storage.delete(STATE_TOKEN_KEY_NAME);\n }\n }\n\n if (res && res.stateToken && res.expiresAt) {\n storage.set(STATE_TOKEN_KEY_NAME, res.stateToken, res.expiresAt, sdk.options.cookies);\n }\n\n if (res && options.cacheResponse) {\n httpCache.updateStorage(url, {\n expiresAt: Math.floor(Date.now()/1000) + DEFAULT_CACHE_DURATION,\n response: res\n });\n }\n\n return res;\n })\n .catch(function(resp) {\n var serverErr = resp.responseText || {};\n if (isString(serverErr)) {\n try {\n serverErr = JSON.parse(serverErr);\n } catch (e) {\n serverErr = {\n errorSummary: 'Unknown error'\n };\n }\n }\n\n if (resp.status >= 500) {\n serverErr.errorSummary = 'Unknown error';\n }\n\n if (sdk.options.transformErrorXHR) {\n resp = sdk.options.transformErrorXHR(clone(resp));\n }\n\n err = new AuthApiError(serverErr, resp);\n\n if (err.errorCode === 'E0000011') {\n storage.delete(STATE_TOKEN_KEY_NAME);\n }\n\n throw err;\n });\n}\n\nexport function get(sdk: OktaAuth, url: string, options?: RequestOptions) {\n url = isAbsoluteUrl(url) ? url : sdk.getIssuerOrigin() + url;\n var getOptions = {\n url: url,\n method: 'GET'\n };\n Object.assign(getOptions, options);\n return httpRequest(sdk, getOptions);\n}\n\nexport function post(sdk: OktaAuth, url: string, args?: RequestData, options?: RequestOptions) {\n url = isAbsoluteUrl(url) ? url : sdk.getIssuerOrigin() + url;\n var postOptions = {\n url: url,\n method: 'POST',\n args: args,\n saveAuthnState: true\n };\n Object.assign(postOptions, options);\n return httpRequest(sdk, postOptions);\n}\n"],"file":"request.js"}
@@ -36,7 +36,10 @@ export function interact(_x) {
36
36
  function _interact() {
37
37
  _interact = _asyncToGenerator(function* (authClient) {
38
38
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
39
- var meta = yield getTransactionMeta(authClient); // Saved transaction, return meta
39
+ var state = options.state || authClient.options.state;
40
+ var meta = yield getTransactionMeta(authClient, {
41
+ state
42
+ }); // Saved transaction, return meta
40
43
 
41
44
  if (meta.interactionHandle) {
42
45
  return getResponse(meta);
@@ -53,7 +56,7 @@ function _interact() {
53
56
  redirectUri
54
57
  } = authClient.options; // These properties can be set in options, but also have a default value in global configuration.
55
58
 
56
- var state = options.state || authClient.options.state || meta.state;
59
+ state = state || meta.state;
57
60
  var scopes = options.scopes || authClient.options.scopes || meta.scopes;
58
61
  var baseUrl = getOAuthBaseUrl(authClient);
59
62
  return idx.interact({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/idx/interact.ts"],"names":["idx","getTransactionMeta","saveTransactionMeta","getOAuthBaseUrl","getResponse","meta","interactionHandle","state","interact","authClient","options","codeChallenge","codeChallengeMethod","clientId","redirectUri","scopes","baseUrl","then","newMeta"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAOA,GAAP,MAAgB,mBAAhB;AAEA,SAASC,kBAAT,EAA6BC,mBAA7B,QAAwD,mBAAxD;AACA,SAASC,eAAT,QAAgC,SAAhC;;AAaA,SAASC,WAAT,CAAqBC,IAArB,EAAiE;AAC/D,SAAO;AACLA,IAAAA,IADK;AAELC,IAAAA,iBAAiB,EAAED,IAAI,CAACC,iBAFnB;AAGLC,IAAAA,KAAK,EAAEF,IAAI,CAACE;AAHP,GAAP;AAKD,C,CAED;;;AACA,gBAAsBC,QAAtB;AAAA;AAAA;;;gCAAO,WAAyBC,UAAzB,EAAyG;AAAA,QAA1DC,OAA0D,uEAA/B,EAA+B;AAC9G,QAAML,IAAI,SAASJ,kBAAkB,CAACQ,UAAD,CAArC,CAD8G,CAG9G;;AACA,QAAIJ,IAAI,CAACC,iBAAT,EAA4B;AAC1B,aAAOF,WAAW,CAACC,IAAD,CAAlB;AACD,KAN6G,CAQ9G;;;AACA,QAAM;AAAEM,MAAAA,aAAF;AAAiBC,MAAAA;AAAjB,QAAyCP,IAA/C,CAT8G,CAW9G;;AACA,QAAM;AAAEQ,MAAAA,QAAF;AAAYC,MAAAA;AAAZ,QAA4BL,UAAU,CAACC,OAA7C,CAZ8G,CAc9G;;AACA,QAAMH,KAAK,GAAGG,OAAO,CAACH,KAAR,IAAiBE,UAAU,CAACC,OAAX,CAAmBH,KAApC,IAA6CF,IAAI,CAACE,KAAhE;AACA,QAAMQ,MAAM,GAAGL,OAAO,CAACK,MAAR,IAAkBN,UAAU,CAACC,OAAX,CAAmBK,MAArC,IAA+CV,IAAI,CAACU,MAAnE;AAEA,QAAMC,OAAO,GAAGb,eAAe,CAACM,UAAD,CAA/B;AACA,WAAOT,GAAG,CAACQ,QAAJ,CAAa;AAClB;AACAK,MAAAA,QAFkB;AAGlBG,MAAAA,OAHkB;AAIlBD,MAAAA,MAJkB;AAKlBR,MAAAA,KALkB;AAMlBO,MAAAA,WANkB;AAQlB;AACAH,MAAAA,aATkB;AAUlBC,MAAAA;AAVkB,KAAb,EAWJK,IAXI,CAWCX,iBAAiB,IAAI;AAC3B,UAAMY,OAAO,mCAAQb,IAAR;AAAcC,QAAAA,iBAAd;AAAiCC,QAAAA,KAAjC;AAAwCQ,QAAAA;AAAxC,QAAb,CAD2B,CAE3B;;;AACAb,MAAAA,mBAAmB,CAACO,UAAD,EAAaS,OAAb,CAAnB;AAEA,aAAOd,WAAW,CAACc,OAAD,CAAlB;AACD,KAjBM,CAAP;AAkBD,G","sourcesContent":["/*!\n * Copyright (c) 2021, 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 idx from '@okta/okta-idx-js';\nimport { OktaAuth, IdxTransactionMeta } from '../types';\nimport { getTransactionMeta, saveTransactionMeta } from './transactionMeta';\nimport { getOAuthBaseUrl } from '../oidc';\n\nexport interface InteractOptions {\n state?: string;\n scopes?: string[];\n}\n\nexport interface InteractResponse {\n state?: string;\n interactionHandle: string;\n meta: IdxTransactionMeta;\n}\n\nfunction getResponse(meta: IdxTransactionMeta): InteractResponse {\n return {\n meta,\n interactionHandle: meta.interactionHandle,\n state: meta.state\n };\n}\n\n// Begin or resume a transaction. Returns an interaction handle\nexport async function interact (authClient: OktaAuth, options: InteractOptions = {}): Promise<InteractResponse> {\n const meta = await getTransactionMeta(authClient);\n\n // Saved transaction, return meta\n if (meta.interactionHandle) {\n return getResponse(meta);\n }\n\n // These properties are always loaded from meta (or calculated fresh)\n const { codeChallenge, codeChallengeMethod } = meta;\n\n // These properties are defined by global configuration\n const { clientId, redirectUri } = authClient.options;\n\n // These properties can be set in options, but also have a default value in global configuration.\n const state = options.state || authClient.options.state || meta.state;\n const scopes = options.scopes || authClient.options.scopes || meta.scopes;\n\n const baseUrl = getOAuthBaseUrl(authClient);\n return idx.interact({\n // OAuth\n clientId, \n baseUrl,\n scopes,\n state,\n redirectUri,\n\n // PKCE\n codeChallenge,\n codeChallengeMethod\n }).then(interactionHandle => {\n const newMeta = { ...meta, interactionHandle, state, scopes };\n // Save transaction meta so it can be resumed\n saveTransactionMeta(authClient, newMeta);\n\n return getResponse(newMeta);\n });\n}\n"],"file":"interact.js"}
1
+ {"version":3,"sources":["../../../lib/idx/interact.ts"],"names":["idx","getTransactionMeta","saveTransactionMeta","getOAuthBaseUrl","getResponse","meta","interactionHandle","state","interact","authClient","options","codeChallenge","codeChallengeMethod","clientId","redirectUri","scopes","baseUrl","then","newMeta"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAOA,GAAP,MAAgB,mBAAhB;AAEA,SAASC,kBAAT,EAA6BC,mBAA7B,QAAwD,mBAAxD;AACA,SAASC,eAAT,QAAgC,SAAhC;;AAaA,SAASC,WAAT,CAAqBC,IAArB,EAAiE;AAC/D,SAAO;AACLA,IAAAA,IADK;AAELC,IAAAA,iBAAiB,EAAED,IAAI,CAACC,iBAFnB;AAGLC,IAAAA,KAAK,EAAEF,IAAI,CAACE;AAHP,GAAP;AAKD,C,CAED;;;AACA,gBAAsBC,QAAtB;AAAA;AAAA;;;gCAAO,WAAyBC,UAAzB,EAAyG;AAAA,QAA1DC,OAA0D,uEAA/B,EAA+B;AAC9G,QAAIH,KAAK,GAAGG,OAAO,CAACH,KAAR,IAAiBE,UAAU,CAACC,OAAX,CAAmBH,KAAhD;AACA,QAAMF,IAAI,SAASJ,kBAAkB,CAACQ,UAAD,EAAa;AAAEF,MAAAA;AAAF,KAAb,CAArC,CAF8G,CAI9G;;AACA,QAAIF,IAAI,CAACC,iBAAT,EAA4B;AAC1B,aAAOF,WAAW,CAACC,IAAD,CAAlB;AACD,KAP6G,CAS9G;;;AACA,QAAM;AAAEM,MAAAA,aAAF;AAAiBC,MAAAA;AAAjB,QAAyCP,IAA/C,CAV8G,CAY9G;;AACA,QAAM;AAAEQ,MAAAA,QAAF;AAAYC,MAAAA;AAAZ,QAA4BL,UAAU,CAACC,OAA7C,CAb8G,CAe9G;;AACAH,IAAAA,KAAK,GAAGA,KAAK,IAAIF,IAAI,CAACE,KAAtB;AACA,QAAMQ,MAAM,GAAGL,OAAO,CAACK,MAAR,IAAkBN,UAAU,CAACC,OAAX,CAAmBK,MAArC,IAA+CV,IAAI,CAACU,MAAnE;AAEA,QAAMC,OAAO,GAAGb,eAAe,CAACM,UAAD,CAA/B;AACA,WAAOT,GAAG,CAACQ,QAAJ,CAAa;AAClB;AACAK,MAAAA,QAFkB;AAGlBG,MAAAA,OAHkB;AAIlBD,MAAAA,MAJkB;AAKlBR,MAAAA,KALkB;AAMlBO,MAAAA,WANkB;AAQlB;AACAH,MAAAA,aATkB;AAUlBC,MAAAA;AAVkB,KAAb,EAWJK,IAXI,CAWCX,iBAAiB,IAAI;AAC3B,UAAMY,OAAO,mCAAQb,IAAR;AAAcC,QAAAA,iBAAd;AAAiCC,QAAAA,KAAjC;AAAwCQ,QAAAA;AAAxC,QAAb,CAD2B,CAE3B;;;AACAb,MAAAA,mBAAmB,CAACO,UAAD,EAAaS,OAAb,CAAnB;AAEA,aAAOd,WAAW,CAACc,OAAD,CAAlB;AACD,KAjBM,CAAP;AAkBD,G","sourcesContent":["/*!\n * Copyright (c) 2021, 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 idx from '@okta/okta-idx-js';\nimport { OktaAuth, IdxTransactionMeta } from '../types';\nimport { getTransactionMeta, saveTransactionMeta } from './transactionMeta';\nimport { getOAuthBaseUrl } from '../oidc';\n\nexport interface InteractOptions {\n state?: string;\n scopes?: string[];\n}\n\nexport interface InteractResponse {\n state?: string;\n interactionHandle: string;\n meta: IdxTransactionMeta;\n}\n\nfunction getResponse(meta: IdxTransactionMeta): InteractResponse {\n return {\n meta,\n interactionHandle: meta.interactionHandle,\n state: meta.state\n };\n}\n\n// Begin or resume a transaction. Returns an interaction handle\nexport async function interact (authClient: OktaAuth, options: InteractOptions = {}): Promise<InteractResponse> {\n let state = options.state || authClient.options.state;\n const meta = await getTransactionMeta(authClient, { state });\n\n // Saved transaction, return meta\n if (meta.interactionHandle) {\n return getResponse(meta);\n }\n\n // These properties are always loaded from meta (or calculated fresh)\n const { codeChallenge, codeChallengeMethod } = meta;\n\n // These properties are defined by global configuration\n const { clientId, redirectUri } = authClient.options;\n\n // These properties can be set in options, but also have a default value in global configuration.\n state = state || meta.state;\n const scopes = options.scopes || authClient.options.scopes || meta.scopes;\n\n const baseUrl = getOAuthBaseUrl(authClient);\n return idx.interact({\n // OAuth\n clientId, \n baseUrl,\n scopes,\n state,\n redirectUri,\n\n // PKCE\n codeChallenge,\n codeChallengeMethod\n }).then(interactionHandle => {\n const newMeta = { ...meta, interactionHandle, state, scopes };\n // Save transaction meta so it can be resumed\n saveTransactionMeta(authClient, newMeta);\n\n return getResponse(newMeta);\n });\n}\n"],"file":"interact.js"}
@@ -17,6 +17,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
17
17
  * See the License for the specific language governing permissions and limitations under the License.
18
18
  */
19
19
  import idx from '@okta/okta-idx-js';
20
+ import { isRawIdxResponse } from './types/idx-js';
20
21
  import { getOAuthDomain } from '../oidc';
21
22
  import { IDX_API_VERSION } from '../constants';
22
23
  export function introspect(_x, _x2) {
@@ -25,17 +26,32 @@ export function introspect(_x, _x2) {
25
26
 
26
27
  function _introspect() {
27
28
  _introspect = _asyncToGenerator(function* (authClient, options) {
28
- var rawIdxResponse; // try load from storage first
29
+ var useLastResponse = !options.stateTokenExternalId; // email verify callback: must make a new response
30
+
31
+ var rawIdxResponse;
32
+
33
+ if (useLastResponse) {
34
+ // try load from storage first
35
+ rawIdxResponse = authClient.transactionManager.loadIdxResponse();
36
+ } // call idx.introspect if no existing idx response available in storage
29
37
 
30
- rawIdxResponse = authClient.transactionManager.loadIdxResponse(); // call idx.introspect if no existing idx response available in storage
31
38
 
32
39
  if (!rawIdxResponse) {
33
40
  var version = IDX_API_VERSION;
34
41
  var domain = getOAuthDomain(authClient);
35
- rawIdxResponse = yield idx.introspect(_objectSpread({
36
- domain,
37
- version
38
- }, options));
42
+
43
+ try {
44
+ rawIdxResponse = yield idx.introspect(_objectSpread({
45
+ domain,
46
+ version
47
+ }, options));
48
+ } catch (err) {
49
+ if (isRawIdxResponse(err)) {
50
+ rawIdxResponse = err;
51
+ } else {
52
+ throw err;
53
+ }
54
+ }
39
55
  }
40
56
 
41
57
  return idx.makeIdxState(rawIdxResponse);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/idx/introspect.ts"],"names":["idx","getOAuthDomain","IDX_API_VERSION","introspect","authClient","options","rawIdxResponse","transactionManager","loadIdxResponse","version","domain","makeIdxState"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAOA,GAAP,MAAgB,mBAAhB;AAGA,SAASC,cAAT,QAA+B,SAA/B;AACA,SAASC,eAAT,QAAgC,cAAhC;AAOA,gBAAsBC,UAAtB;AAAA;AAAA;;;kCAAO,WAA2BC,UAA3B,EAAiDC,OAAjD,EAAmG;AACxG,QAAIC,cAAJ,CADwG,CAGxG;;AACAA,IAAAA,cAAc,GAAGF,UAAU,CAACG,kBAAX,CAA8BC,eAA9B,EAAjB,CAJwG,CAMxG;;AACA,QAAI,CAACF,cAAL,EAAqB;AACnB,UAAMG,OAAO,GAAGP,eAAhB;AACA,UAAMQ,MAAM,GAAGT,cAAc,CAACG,UAAD,CAA7B;AACAE,MAAAA,cAAc,SAASN,GAAG,CAACG,UAAJ;AAAiBO,QAAAA,MAAjB;AAAyBD,QAAAA;AAAzB,SAAqCJ,OAArC,EAAvB;AACD;;AAED,WAAOL,GAAG,CAACW,YAAJ,CAAiBL,cAAjB,CAAP;AACD,G","sourcesContent":["/*!\n * Copyright (c) 2021, 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 idx from '@okta/okta-idx-js';\nimport { OktaAuth } from '../types';\nimport { IdxResponse, RawIdxResponse } from './types/idx-js';\nimport { getOAuthDomain } from '../oidc';\nimport { IDX_API_VERSION } from '../constants';\n\nexport interface IntrospectOptions {\n interactionHandle: string;\n stateHandle?: string;\n}\n\nexport async function introspect (authClient: OktaAuth, options: IntrospectOptions): Promise<IdxResponse> {\n let rawIdxResponse: RawIdxResponse;\n \n // try load from storage first\n rawIdxResponse = authClient.transactionManager.loadIdxResponse();\n \n // call idx.introspect if no existing idx response available in storage\n if (!rawIdxResponse) {\n const version = IDX_API_VERSION;\n const domain = getOAuthDomain(authClient);\n rawIdxResponse = await idx.introspect({ domain, version, ...options });\n }\n\n return idx.makeIdxState(rawIdxResponse);\n}\n"],"file":"introspect.js"}
1
+ {"version":3,"sources":["../../../lib/idx/introspect.ts"],"names":["idx","isRawIdxResponse","getOAuthDomain","IDX_API_VERSION","introspect","authClient","options","useLastResponse","stateTokenExternalId","rawIdxResponse","transactionManager","loadIdxResponse","version","domain","err","makeIdxState"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAOA,GAAP,MAAgB,mBAAhB;AAEA,SAAsBC,gBAAtB,QAA8D,gBAA9D;AACA,SAASC,cAAT,QAA+B,SAA/B;AACA,SAASC,eAAT,QAAgC,cAAhC;AAQA,gBAAsBC,UAAtB;AAAA;AAAA;;;kCAAO,WAA2BC,UAA3B,EAAiDC,OAAjD,EAAmG;AACxG,QAAMC,eAAe,GAAG,CAACD,OAAO,CAACE,oBAAjC,CADwG,CACjD;;AACvD,QAAIC,cAAJ;;AAEA,QAAIF,eAAJ,EAAqB;AACnB;AACAE,MAAAA,cAAc,GAAGJ,UAAU,CAACK,kBAAX,CAA8BC,eAA9B,EAAjB;AACD,KAPuG,CASxG;;;AACA,QAAI,CAACF,cAAL,EAAqB;AACnB,UAAMG,OAAO,GAAGT,eAAhB;AACA,UAAMU,MAAM,GAAGX,cAAc,CAACG,UAAD,CAA7B;;AACA,UAAI;AACFI,QAAAA,cAAc,SAAST,GAAG,CAACI,UAAJ;AAAiBS,UAAAA,MAAjB;AAAyBD,UAAAA;AAAzB,WAAqCN,OAArC,EAAvB;AACD,OAFD,CAEE,OAAOQ,GAAP,EAAY;AACZ,YAAIb,gBAAgB,CAACa,GAAD,CAApB,EAA2B;AACzBL,UAAAA,cAAc,GAAGK,GAAjB;AACD,SAFD,MAEO;AACL,gBAAMA,GAAN;AACD;AACF;AACF;;AAED,WAAOd,GAAG,CAACe,YAAJ,CAAiBN,cAAjB,CAAP;AACD,G","sourcesContent":["/*!\n * Copyright (c) 2021, 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 idx from '@okta/okta-idx-js';\nimport { OktaAuth } from '../types';\nimport { IdxResponse, isRawIdxResponse, RawIdxResponse } from './types/idx-js';\nimport { getOAuthDomain } from '../oidc';\nimport { IDX_API_VERSION } from '../constants';\n\nexport interface IntrospectOptions {\n interactionHandle?: string;\n stateHandle?: string;\n stateTokenExternalId?: string;\n}\n\nexport async function introspect (authClient: OktaAuth, options: IntrospectOptions): Promise<IdxResponse> {\n const useLastResponse = !options.stateTokenExternalId; // email verify callback: must make a new response\n let rawIdxResponse: RawIdxResponse;\n \n if (useLastResponse) {\n // try load from storage first\n rawIdxResponse = authClient.transactionManager.loadIdxResponse();\n }\n \n // call idx.introspect if no existing idx response available in storage\n if (!rawIdxResponse) {\n const version = IDX_API_VERSION;\n const domain = getOAuthDomain(authClient);\n try {\n rawIdxResponse = await idx.introspect({ domain, version, ...options });\n } catch (err) {\n if (isRawIdxResponse(err)) {\n rawIdxResponse = err;\n } else {\n throw err;\n }\n }\n }\n\n return idx.makeIdxState(rawIdxResponse);\n}\n"],"file":"introspect.js"}