openid.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.OpenIDFlow = void 0;
  4. const guards_1 = require("../../guards");
  5. const oauth_1 = require("./oauth");
  6. class OpenIDFlow extends oauth_1.OAuth2Flow {
  7. constructor({ accessTokenRequestContentType = "application/x-www-form-urlencoded" /* ContentType.FORM_URLENCODED */, ...options }, e, authorizationUrlOverride) {
  8. super({ accessTokenRequestContentType, ...options }, e);
  9. this.e = e;
  10. this.flowName = 'open_id';
  11. if (authorizationUrlOverride) {
  12. this.oauthConfig.authorizationUrl = authorizationUrlOverride;
  13. }
  14. }
  15. generateAuthorizationParameters(challenge) {
  16. return {
  17. audience: this.oauthConfig.apiAudience,
  18. scope: 'openid profile email offline_access',
  19. response_type: 'code',
  20. client_id: this.oauthConfig.clientId,
  21. code_challenge: challenge,
  22. code_challenge_method: 'S256',
  23. redirect_uri: this.redirectUrl,
  24. nonce: this.generateVerifier(),
  25. };
  26. }
  27. generateTokenParameters(code, verifier) {
  28. return {
  29. grant_type: 'authorization_code',
  30. client_id: this.oauthConfig.clientId,
  31. code_verifier: verifier,
  32. code,
  33. redirect_uri: this.redirectUrl,
  34. };
  35. }
  36. generateRefreshTokenParameters(refreshToken) {
  37. return {
  38. refresh_token: refreshToken,
  39. grant_type: 'refresh_token',
  40. client_id: this.oauthConfig.clientId,
  41. };
  42. }
  43. checkValidExchangeTokenRes(res) {
  44. return (0, guards_1.isOpenIDTokenExchangeResponse)(res);
  45. }
  46. getAuthConfig() {
  47. return this.e.config.getOpenIDOAuthConfig();
  48. }
  49. }
  50. exports.OpenIDFlow = OpenIDFlow;