Add key pair
This commit is contained in:
parent
631a3b6884
commit
c7fc57cc7e
@ -1,15 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICSjCCAbOgAwIBAgIBADANBgkqhkiG9w0BAQ0FADBCMQswCQYDVQQGEwJ1czEN
|
||||
MAsGA1UECAwERGVtbzEPMA0GA1UECgwGQm94eUhRMRMwEQYDVQQDDApib3h5aHEu
|
||||
Y29tMB4XDTIyMDExMzE3NTQ1NVoXDTIzMDExMzE3NTQ1NVowQjELMAkGA1UEBhMC
|
||||
dXMxDTALBgNVBAgMBERlbW8xDzANBgNVBAoMBkJveHlIUTETMBEGA1UEAwwKYm94
|
||||
eWhxLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA4lbyAVpXmp1bGPGn
|
||||
PfauUzTvPil0gDJaGBTYQ50A7lDLrD0rh/SbsRY5e8VA2JnYaKT7k53FL4n9ogjx
|
||||
HQRT4b7s9ZjUUC7BHYPd4CzATjf6Iy48bbout2VphuZdWjwbY1uEfolaZR2QU4IR
|
||||
4RYfa4L4fGZufA8ayunCWXTackMCAwEAAaNQME4wHQYDVR0OBBYEFKk0NXw5l0fq
|
||||
MQ3GW4mNzazrZeEQMB8GA1UdIwQYMBaAFKk0NXw5l0fqMQ3GW4mNzazrZeEQMAwG
|
||||
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQENBQADgYEABIL+uv5KbnqLnvbeyglcuDSf
|
||||
MVlPqMlvvliPLZa2TGluutL3t+jFfJNi6Vavd4BNyVsCYRe/ab8+/nok1Lu/IqKF
|
||||
vifu1QGHsF1vKyafmVC8cMX/lxsvjedsOs++59yOAHAgXn+0IuBwupinKF4Tuqd7
|
||||
n5gl9V4czyfFtrJUCQc=
|
||||
-----END CERTIFICATE-----
|
||||
@ -1,15 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICSjCCAbOgAwIBAgIBADANBgkqhkiG9w0BAQ0FADBCMQswCQYDVQQGEwJ1czEN
|
||||
MAsGA1UECAwERGVtbzEPMA0GA1UECgwGQm94eUhRMRMwEQYDVQQDDApib3h5aHEu
|
||||
Y29tMB4XDTIyMDExMzE3NTQ1NVoXDTIzMDExMzE3NTQ1NVowQjELMAkGA1UEBhMC
|
||||
dXMxDTALBgNVBAgMBERlbW8xDzANBgNVBAoMBkJveHlIUTETMBEGA1UEAwwKYm94
|
||||
eWhxLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA4lbyAVpXmp1bGPGn
|
||||
PfauUzTvPil0gDJaGBTYQ50A7lDLrD0rh/SbsRY5e8VA2JnYaKT7k53FL4n9ogjx
|
||||
HQRT4b7s9ZjUUC7BHYPd4CzATjf6Iy48bbout2VphuZdWjwbY1uEfolaZR2QU4IR
|
||||
4RYfa4L4fGZufA8ayunCWXTackMCAwEAAaNQME4wHQYDVR0OBBYEFKk0NXw5l0fq
|
||||
MQ3GW4mNzazrZeEQMB8GA1UdIwQYMBaAFKk0NXw5l0fqMQ3GW4mNzazrZeEQMAwG
|
||||
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQENBQADgYEABIL+uv5KbnqLnvbeyglcuDSf
|
||||
MVlPqMlvvliPLZa2TGluutL3t+jFfJNi6Vavd4BNyVsCYRe/ab8+/nok1Lu/IqKF
|
||||
vifu1QGHsF1vKyafmVC8cMX/lxsvjedsOs++59yOAHAgXn+0IuBwupinKF4Tuqd7
|
||||
n5gl9V4czyfFtrJUCQc=
|
||||
-----END CERTIFICATE-----
|
||||
@ -2,11 +2,11 @@ import { promises as fs } from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
const fetchPublicKey = async (): Promise<string> => {
|
||||
return await fs.readFile(path.join('data', 'idp-public.key'), 'ascii');
|
||||
return await fs.readFile(path.join('data', 'public.crt'), 'ascii');
|
||||
};
|
||||
|
||||
const fetchPrivateKey = async (): Promise<string> => {
|
||||
return await fs.readFile(path.join('data', 'idp-private.key'), 'ascii');
|
||||
return await fs.readFile(path.join('data', 'key.pem'), 'ascii');
|
||||
}
|
||||
|
||||
const stripCertHeaderAndFooter = (cert: string): string => {
|
||||
|
||||
26
utils/idp.ts
Normal file
26
utils/idp.ts
Normal file
@ -0,0 +1,26 @@
|
||||
import { promises as fs } from 'fs';
|
||||
import path from 'path';
|
||||
import { stripCertHeaderAndFooter } from './certificate';
|
||||
|
||||
const createIdPMetadataXML = async ({
|
||||
idpEntityId,
|
||||
idpSsoUrl,
|
||||
certificate,
|
||||
}: {
|
||||
idpEntityId: string;
|
||||
idpSsoUrl: string;
|
||||
certificate: string;
|
||||
}): Promise<string> => {
|
||||
const xmlPath = path.join('data', 'idp-metadata.xml');
|
||||
const xml = await fs.readFile(xmlPath, 'utf8');
|
||||
certificate = stripCertHeaderAndFooter(certificate)
|
||||
|
||||
return xml
|
||||
.replace('idp_entity_id', idpEntityId)
|
||||
.replace('idp_certificate', certificate)
|
||||
.replace(/idp_sso_url/g, idpSsoUrl);
|
||||
};
|
||||
|
||||
export {
|
||||
createIdPMetadataXML,
|
||||
}
|
||||
@ -1,3 +1,4 @@
|
||||
export * from './certificate'
|
||||
export * from './request'
|
||||
export * from './response'
|
||||
export * from './certificate';
|
||||
export * from './request';
|
||||
export * from './response';
|
||||
export * from './idp';
|
||||
@ -33,25 +33,7 @@ const extractSAMLRequestAttributes = async (samlRequest: string) => {
|
||||
};
|
||||
};
|
||||
|
||||
const createIdPMetadataXML = async ({
|
||||
idpEntityId,
|
||||
idpSsoUrl,
|
||||
certificate,
|
||||
}: {
|
||||
idpEntityId: string;
|
||||
idpSsoUrl: string;
|
||||
certificate: string;
|
||||
}): Promise<string> => {
|
||||
const xmlPath = path.join('data', 'idp-metadata.xml');
|
||||
const xml = await fs.readFile(xmlPath, 'utf8');
|
||||
|
||||
return xml
|
||||
.replace('idp_entity_id', idpEntityId)
|
||||
.replace('idp_certificate', certificate)
|
||||
.replace(/idp_sso_url/g, idpSsoUrl);
|
||||
};
|
||||
|
||||
export {
|
||||
extractSAMLRequestAttributes,
|
||||
createIdPMetadataXML,
|
||||
}
|
||||
@ -150,7 +150,7 @@ const signResponseXML = async (xml: string, signingKey: any, publicKey: any): Pr
|
||||
console.log({publicKey, signingKey})
|
||||
|
||||
sig.signatureAlgorithm = 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256';
|
||||
sig.keyInfoProvider = new FileKeyInfo(stripCertHeaderAndFooter(publicKey));
|
||||
sig.keyInfoProvider = new FileKeyInfo(publicKey);
|
||||
sig.signingKey = signingKey;
|
||||
|
||||
sig.addReference(responseXPath, ['http://www.w3.org/2000/09/xmldsig#enveloped-signature', 'http://www.w3.org/2001/10/xml-exc-c14n#'], 'http://www.w3.org/2001/04/xmlenc#sha256');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user