Skip to content

Commit

Permalink
feat: add public getAuthorizeMessage method (#235)
Browse files Browse the repository at this point in the history
  • Loading branch information
aykutbulca committed Apr 15, 2023
1 parent 44fc789 commit cb89ced
Show file tree
Hide file tree
Showing 3 changed files with 397 additions and 113 deletions.
45 changes: 28 additions & 17 deletions src/saml.ts
Original file line number Diff line number Diff line change
Expand Up @@ -515,6 +515,33 @@ class SAML {
);
}

async getAuthorizeMessageAsync(
RelayState: string,
host?: string
): Promise<querystring.ParsedUrlQueryInput> {
assertRequired(this.options.entryPoint, "entryPoint is required");

const request = await this.generateAuthorizeRequestAsync(this.options.passive, true, host);
let buffer: Buffer;
if (this.options.skipRequestCompression) {
buffer = Buffer.from(request, "utf8");
} else {
buffer = await deflateRawAsync(request);
}

const operation = "authorize";
const additionalParameters = this._getAdditionalParams(RelayState, operation);
const samlMessage: querystring.ParsedUrlQueryInput = {
SAMLRequest: buffer.toString("base64"),
};

Object.keys(additionalParameters).forEach((k) => {
samlMessage[k] = additionalParameters[k] || "";
});

return samlMessage;
}

async getAuthorizeFormAsync(RelayState: string, host?: string): Promise<string> {
assertRequired(this.options.entryPoint, "entryPoint is required");

Expand Down Expand Up @@ -548,23 +575,7 @@ class SAML {
);
};

const request = await this.generateAuthorizeRequestAsync(this.options.passive, true, host);
let buffer: Buffer;
if (this.options.skipRequestCompression) {
buffer = Buffer.from(request, "utf8");
} else {
buffer = await deflateRawAsync(request);
}

const operation = "authorize";
const additionalParameters = this._getAdditionalParams(RelayState, operation);
const samlMessage: querystring.ParsedUrlQueryInput = {
SAMLRequest: buffer.toString("base64"),
};

Object.keys(additionalParameters).forEach((k) => {
samlMessage[k] = additionalParameters[k] || "";
});
const samlMessage = await this.getAuthorizeMessageAsync(RelayState, host);

const formInputs = Object.keys(samlMessage)
.map((k) => {
Expand Down
Loading

0 comments on commit cb89ced

Please sign in to comment.