oauth.d.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /// <reference types="node" />
  2. import { Response } from 'superagent';
  3. import { ContentType, IClient, IConfig, OAuthServerConfig, OpenIdToken } from '../../definitions';
  4. export interface AuthorizationParameters {
  5. [key: string]: string;
  6. }
  7. export interface TokenParameters {
  8. [key: string]: string;
  9. }
  10. export interface OAuth2FlowOptions {
  11. readonly redirectHost?: string;
  12. readonly redirectPort?: number;
  13. readonly accessTokenRequestContentType?: ContentType;
  14. }
  15. export interface OAuth2FlowDeps {
  16. readonly client: IClient;
  17. readonly config: IConfig;
  18. }
  19. export declare abstract class OAuth2Flow<T extends OpenIdToken> {
  20. readonly e: OAuth2FlowDeps;
  21. abstract readonly flowName: string;
  22. readonly oauthConfig: OAuthServerConfig;
  23. readonly redirectHost: string;
  24. readonly redirectPort: number;
  25. readonly accessTokenRequestContentType: ContentType;
  26. constructor({ redirectHost, redirectPort, accessTokenRequestContentType }: OAuth2FlowOptions, e: OAuth2FlowDeps);
  27. get redirectUrl(): string;
  28. run(): Promise<T>;
  29. exchangeRefreshToken(refreshToken: string): Promise<T>;
  30. protected abstract generateAuthorizationParameters(challenge: string): AuthorizationParameters;
  31. protected abstract generateTokenParameters(authorizationCode: string, verifier: string): TokenParameters;
  32. protected abstract generateRefreshTokenParameters(refreshToken: string): TokenParameters;
  33. protected abstract checkValidExchangeTokenRes(res: Response): boolean;
  34. protected abstract getAuthConfig(): OAuthServerConfig;
  35. protected getSuccessHtml(): Promise<string>;
  36. protected getAuthorizationCode(): Promise<{
  37. code: string;
  38. state?: string;
  39. }>;
  40. protected exchangeAuthForAccessToken(authorizationCode: string, verifier: string): Promise<T>;
  41. protected generateVerifier(): string;
  42. protected generateChallenge(verifier: string): string;
  43. protected base64URLEncode(buffer: Buffer): string;
  44. }