-
Notifications
You must be signed in to change notification settings - Fork 22
108 refresh token #114
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
108 refresh token #114
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,271 +1,97 @@ | ||
GEM | ||
remote: https://rubygems.org/ | ||
specs: | ||
activesupport (6.0.6) | ||
concurrent-ruby (~> 1.0, >= 1.0.2) | ||
i18n (>= 0.7, < 2) | ||
minitest (~> 5.1) | ||
tzinfo (~> 1.1) | ||
zeitwerk (~> 2.2, >= 2.2.2) | ||
addressable (2.8.1) | ||
public_suffix (>= 2.0.2, < 6.0) | ||
coffee-script (2.4.1) | ||
coffee-script-source | ||
execjs | ||
coffee-script-source (1.11.1) | ||
addressable (2.8.7) | ||
public_suffix (>= 2.0.2, < 7.0) | ||
bigdecimal (3.1.8) | ||
colorator (1.1.0) | ||
commonmarker (0.23.6) | ||
concurrent-ruby (1.1.10) | ||
dnsruby (1.61.9) | ||
simpleidn (~> 0.1) | ||
concurrent-ruby (1.3.4) | ||
em-websocket (0.5.3) | ||
eventmachine (>= 0.12.9) | ||
http_parser.rb (~> 0) | ||
ethon (0.15.0) | ||
ffi (>= 1.15.0) | ||
eventmachine (1.2.7) | ||
execjs (2.8.1) | ||
faraday (2.6.0) | ||
faraday-net_http (>= 2.0, < 3.1) | ||
ruby2_keywords (>= 0.0.4) | ||
faraday-net_http (3.0.1) | ||
ffi (1.15.5) | ||
ffi (1.17.0-arm64-darwin) | ||
ffi (1.17.0-x86_64-darwin) | ||
forwardable-extended (2.6.0) | ||
gemoji (3.0.1) | ||
github-pages (227) | ||
github-pages-health-check (= 1.17.9) | ||
jekyll (= 3.9.2) | ||
jekyll-avatar (= 0.7.0) | ||
jekyll-coffeescript (= 1.1.1) | ||
jekyll-commonmark-ghpages (= 0.2.0) | ||
jekyll-default-layout (= 0.1.4) | ||
jekyll-feed (= 0.15.1) | ||
jekyll-gist (= 1.5.0) | ||
jekyll-github-metadata (= 2.13.0) | ||
jekyll-include-cache (= 0.2.1) | ||
jekyll-mentions (= 1.6.0) | ||
jekyll-optional-front-matter (= 0.3.2) | ||
jekyll-paginate (= 1.1.0) | ||
jekyll-readme-index (= 0.3.0) | ||
jekyll-redirect-from (= 0.16.0) | ||
jekyll-relative-links (= 0.6.1) | ||
jekyll-remote-theme (= 0.4.3) | ||
jekyll-sass-converter (= 1.5.2) | ||
jekyll-seo-tag (= 2.8.0) | ||
jekyll-sitemap (= 1.4.0) | ||
jekyll-swiss (= 1.0.0) | ||
jekyll-theme-architect (= 0.2.0) | ||
jekyll-theme-cayman (= 0.2.0) | ||
jekyll-theme-dinky (= 0.2.0) | ||
jekyll-theme-hacker (= 0.2.0) | ||
jekyll-theme-leap-day (= 0.2.0) | ||
jekyll-theme-merlot (= 0.2.0) | ||
jekyll-theme-midnight (= 0.2.0) | ||
jekyll-theme-minimal (= 0.2.0) | ||
jekyll-theme-modernist (= 0.2.0) | ||
jekyll-theme-primer (= 0.6.0) | ||
jekyll-theme-slate (= 0.2.0) | ||
jekyll-theme-tactile (= 0.2.0) | ||
jekyll-theme-time-machine (= 0.2.0) | ||
jekyll-titles-from-headings (= 0.5.3) | ||
jemoji (= 0.12.0) | ||
kramdown (= 2.3.2) | ||
kramdown-parser-gfm (= 1.1.0) | ||
liquid (= 4.0.3) | ||
mercenary (~> 0.3) | ||
minima (= 2.5.1) | ||
nokogiri (>= 1.13.6, < 2.0) | ||
rouge (= 3.26.0) | ||
terminal-table (~> 1.4) | ||
github-pages-health-check (1.17.9) | ||
addressable (~> 2.3) | ||
dnsruby (~> 1.60) | ||
octokit (~> 4.0) | ||
public_suffix (>= 3.0, < 5.0) | ||
typhoeus (~> 1.3) | ||
html-pipeline (2.14.3) | ||
activesupport (>= 2) | ||
nokogiri (>= 1.4) | ||
google-protobuf (4.28.2-arm64-darwin) | ||
bigdecimal | ||
rake (>= 13) | ||
google-protobuf (4.28.2-x86_64-darwin) | ||
bigdecimal | ||
rake (>= 13) | ||
http_parser.rb (0.8.0) | ||
i18n (0.9.5) | ||
i18n (1.14.6) | ||
concurrent-ruby (~> 1.0) | ||
jekyll (3.9.2) | ||
jekyll (4.3.4) | ||
addressable (~> 2.4) | ||
colorator (~> 1.0) | ||
em-websocket (~> 0.5) | ||
i18n (~> 0.7) | ||
jekyll-sass-converter (~> 1.0) | ||
i18n (~> 1.0) | ||
jekyll-sass-converter (>= 2.0, < 4.0) | ||
jekyll-watch (~> 2.0) | ||
kramdown (>= 1.17, < 3) | ||
kramdown (~> 2.3, >= 2.3.1) | ||
kramdown-parser-gfm (~> 1.0) | ||
liquid (~> 4.0) | ||
mercenary (~> 0.3.3) | ||
mercenary (>= 0.3.6, < 0.5) | ||
pathutil (~> 0.9) | ||
rouge (>= 1.7, < 4) | ||
rouge (>= 3.0, < 5.0) | ||
safe_yaml (~> 1.0) | ||
jekyll-avatar (0.7.0) | ||
jekyll (>= 3.0, < 5.0) | ||
jekyll-coffeescript (1.1.1) | ||
coffee-script (~> 2.2) | ||
coffee-script-source (~> 1.11.1) | ||
jekyll-commonmark (1.4.0) | ||
commonmarker (~> 0.22) | ||
jekyll-commonmark-ghpages (0.2.0) | ||
commonmarker (~> 0.23.4) | ||
jekyll (~> 3.9.0) | ||
jekyll-commonmark (~> 1.4.0) | ||
rouge (>= 2.0, < 4.0) | ||
jekyll-default-layout (0.1.4) | ||
jekyll (~> 3.0) | ||
terminal-table (>= 1.8, < 4.0) | ||
webrick (~> 1.7) | ||
jekyll-feed (0.15.1) | ||
jekyll (>= 3.7, < 5.0) | ||
jekyll-gist (1.5.0) | ||
octokit (~> 4.2) | ||
jekyll-github-metadata (2.13.0) | ||
jekyll (>= 3.4, < 5.0) | ||
octokit (~> 4.0, != 4.4.0) | ||
jekyll-include-cache (0.2.1) | ||
jekyll (>= 3.7, < 5.0) | ||
jekyll-mentions (1.6.0) | ||
html-pipeline (~> 2.3) | ||
jekyll (>= 3.7, < 5.0) | ||
jekyll-optional-front-matter (0.3.2) | ||
jekyll (>= 3.0, < 5.0) | ||
jekyll-paginate (1.1.0) | ||
jekyll-readme-index (0.3.0) | ||
jekyll (>= 3.0, < 5.0) | ||
jekyll-redirect-from (0.16.0) | ||
jekyll (>= 3.3, < 5.0) | ||
jekyll-relative-links (0.6.1) | ||
jekyll (>= 3.3, < 5.0) | ||
jekyll-remote-theme (0.4.3) | ||
addressable (~> 2.0) | ||
jekyll (>= 3.5, < 5.0) | ||
jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) | ||
rubyzip (>= 1.3.0, < 3.0) | ||
jekyll-sass-converter (1.5.2) | ||
sass (~> 3.4) | ||
jekyll-sass-converter (3.0.0) | ||
sass-embedded (~> 1.54) | ||
jekyll-seo-tag (2.8.0) | ||
jekyll (>= 3.8, < 5.0) | ||
jekyll-sitemap (1.4.0) | ||
jekyll (>= 3.7, < 5.0) | ||
jekyll-swiss (1.0.0) | ||
jekyll-theme-architect (0.2.0) | ||
jekyll (> 3.5, < 5.0) | ||
jekyll-seo-tag (~> 2.0) | ||
jekyll-theme-cayman (0.2.0) | ||
jekyll (> 3.5, < 5.0) | ||
jekyll-seo-tag (~> 2.0) | ||
jekyll-theme-dinky (0.2.0) | ||
jekyll (> 3.5, < 5.0) | ||
jekyll-seo-tag (~> 2.0) | ||
jekyll-theme-hacker (0.2.0) | ||
jekyll (> 3.5, < 5.0) | ||
jekyll-seo-tag (~> 2.0) | ||
jekyll-theme-leap-day (0.2.0) | ||
jekyll (> 3.5, < 5.0) | ||
jekyll-seo-tag (~> 2.0) | ||
jekyll-theme-merlot (0.2.0) | ||
jekyll (> 3.5, < 5.0) | ||
jekyll-seo-tag (~> 2.0) | ||
jekyll-theme-midnight (0.2.0) | ||
jekyll (> 3.5, < 5.0) | ||
jekyll-seo-tag (~> 2.0) | ||
jekyll-theme-minimal (0.2.0) | ||
jekyll (> 3.5, < 5.0) | ||
jekyll-seo-tag (~> 2.0) | ||
jekyll-theme-modernist (0.2.0) | ||
jekyll (> 3.5, < 5.0) | ||
jekyll-seo-tag (~> 2.0) | ||
jekyll-theme-primer (0.6.0) | ||
jekyll (> 3.5, < 5.0) | ||
jekyll-github-metadata (~> 2.9) | ||
jekyll-seo-tag (~> 2.0) | ||
jekyll-theme-slate (0.2.0) | ||
jekyll (> 3.5, < 5.0) | ||
jekyll-seo-tag (~> 2.0) | ||
jekyll-theme-tactile (0.2.0) | ||
jekyll (> 3.5, < 5.0) | ||
jekyll-seo-tag (~> 2.0) | ||
jekyll-theme-time-machine (0.2.0) | ||
jekyll (> 3.5, < 5.0) | ||
jekyll-seo-tag (~> 2.0) | ||
jekyll-titles-from-headings (0.5.3) | ||
jekyll (>= 3.3, < 5.0) | ||
jekyll-watch (2.2.1) | ||
listen (~> 3.0) | ||
jemoji (0.12.0) | ||
gemoji (~> 3.0) | ||
html-pipeline (~> 2.2) | ||
jekyll (>= 3.0, < 5.0) | ||
kramdown (2.3.2) | ||
kramdown (2.4.0) | ||
rexml | ||
kramdown-parser-gfm (1.1.0) | ||
kramdown (~> 2.0) | ||
liquid (4.0.3) | ||
listen (3.7.1) | ||
liquid (4.0.4) | ||
listen (3.9.0) | ||
rb-fsevent (~> 0.10, >= 0.10.3) | ||
rb-inotify (~> 0.9, >= 0.9.10) | ||
mercenary (0.3.6) | ||
mercenary (0.4.0) | ||
minima (2.5.1) | ||
jekyll (>= 3.5, < 5.0) | ||
jekyll-feed (~> 0.9) | ||
jekyll-seo-tag (~> 2.1) | ||
minitest (5.16.3) | ||
nokogiri (1.13.8-x86_64-darwin) | ||
racc (~> 1.4) | ||
octokit (4.25.1) | ||
faraday (>= 1, < 3) | ||
sawyer (~> 0.9) | ||
pathutil (0.16.2) | ||
forwardable-extended (~> 2.6) | ||
public_suffix (4.0.7) | ||
racc (1.6.0) | ||
public_suffix (6.0.1) | ||
rake (13.2.1) | ||
rb-fsevent (0.11.2) | ||
rb-inotify (0.10.1) | ||
rb-inotify (0.11.1) | ||
ffi (~> 1.0) | ||
rexml (3.2.5) | ||
rouge (3.26.0) | ||
ruby2_keywords (0.0.5) | ||
rubyzip (2.3.2) | ||
rexml (3.3.8) | ||
rouge (4.4.0) | ||
safe_yaml (1.0.5) | ||
sass (3.7.4) | ||
sass-listen (~> 4.0.0) | ||
sass-listen (4.0.0) | ||
rb-fsevent (~> 0.9, >= 0.9.4) | ||
rb-inotify (~> 0.9, >= 0.9.7) | ||
sawyer (0.9.2) | ||
addressable (>= 2.3.5) | ||
faraday (>= 0.17.3, < 3) | ||
simpleidn (0.2.1) | ||
unf (~> 0.1.4) | ||
terminal-table (1.8.0) | ||
unicode-display_width (~> 1.1, >= 1.1.1) | ||
thread_safe (0.3.6) | ||
typhoeus (1.4.0) | ||
ethon (>= 0.9.0) | ||
tzinfo (1.2.10) | ||
thread_safe (~> 0.1) | ||
unf (0.1.4) | ||
unf_ext | ||
unf_ext (0.0.8.2) | ||
unicode-display_width (1.8.0) | ||
webrick (1.7.0) | ||
zeitwerk (2.6.1) | ||
sass-embedded (1.79.4-arm64-darwin) | ||
google-protobuf (~> 4.27) | ||
sass-embedded (1.79.4-x86_64-darwin) | ||
google-protobuf (~> 4.27) | ||
terminal-table (3.0.2) | ||
unicode-display_width (>= 1.1.1, < 3) | ||
unicode-display_width (2.6.0) | ||
webrick (1.8.2) | ||
|
||
PLATFORMS | ||
arm64-darwin-23 | ||
x86_64-darwin-21 | ||
x86_64-darwin-22 | ||
|
||
DEPENDENCIES | ||
github-pages (~> 227) | ||
http_parser.rb (~> 0.6.0) | ||
jekyll (~> 3.9.2) | ||
jekyll (~> 4.2) | ||
jekyll-feed (~> 0.12) | ||
minima (~> 2.5) | ||
tzinfo (~> 1.2) | ||
tzinfo-data | ||
wdm (~> 0.1.1) | ||
webrick (~> 1.7) | ||
webrick (~> 1.8) | ||
|
||
BUNDLED WITH | ||
2.4.19 |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -144,6 +144,32 @@ const { Util } = require("./util.js"); | |
faultString = faultString.trim(); | ||
} | ||
|
||
// https://github.com/adobe/acc-js-sdk/issues/108 | ||
// 401 error code is hidden in error message and incorrectly reported as HTTP 500 error causing the refresh token | ||
// callback not to be called | ||
// Extract specific error code if possible | ||
if (errorCode == "SOP-330007" && errorMessage && errorMessage.indexOf("XSV-350114") != -1 && errorMessage.indexOf(" 401") != -1) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Use a const for SOP-330007 as IMS_TOKEN_EXPIRY_CODE and then we can add it to comparison. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. `// Define constants for error codes function isTokenExpiryError(errorMessage) {
} // Main logic |
||
statusCode = 401; | ||
} | ||
// Because Campaign security zones may hide the previous error, fallback by trying to decode | ||
// the JWT token and check if it is expired | ||
else if (call && call._bearerToken) { | ||
try { | ||
const jwt = Util.decodeJwtToken(call._bearerToken); | ||
if (jwt) { | ||
const createdAt = +jwt.created_at; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I hope this time is in milliseconds as Date.now is in milliseconds. |
||
const expiresIn = +jwt.expires_in; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we create a small helper method to check if JWT is expired just to divide the responsibility of the method |
||
const expiredAt = createdAt + expiresIn; | ||
const now = Date.now(); | ||
const hasExpired = now > expiredAt; | ||
statusCode = hasExpired ? 401 : statusCode; | ||
} | ||
} catch(ex) { | ||
// Invalid JWT token | ||
statusCode = 401; | ||
} | ||
} | ||
|
||
/** | ||
* The type of exception, always "CampaignException" | ||
* @type {string} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess the space character before 401 is there on purpose, maybe we could encode it (
\u0020
) to prevent any unwanted removal.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Optionally comparisons can be made strong with
===