Skip to content

Commit babe61f

Browse files
authored
chore: migrate to Blue ADFS for CPEx (#4052)
* Allow dynamic paths for sp and federation metadata * Update authentication to blue adfs * Update vercel.json to include auth xml files
1 parent a4de12a commit babe61f

File tree

5 files changed

+36
-4
lines changed

5 files changed

+36
-4
lines changed

website/src/serverless/FederationMetadata-cpex-staging.xml

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

website/src/serverless/FederationMetadata.xml

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

website/src/serverless/nus-auth.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,23 @@ const samlRespAttributes: { [key in keyof User]: string } = {
3131

3232
samlify.setSchemaValidator(validator);
3333

34+
let SP_FILE_PATH;
35+
let FEDERATION_METADATA_FILE_PATH;
36+
if (process.env.VERCEL_ENV === 'production') {
37+
SP_FILE_PATH = './sp.xml';
38+
FEDERATION_METADATA_FILE_PATH = './FederationMetadata.xml';
39+
} else {
40+
SP_FILE_PATH = './sp-cpex-staging.xml';
41+
FEDERATION_METADATA_FILE_PATH = './FederationMetadata-cpex-staging.xml';
42+
}
43+
3444
const idp = samlify.IdentityProvider({
35-
metadata: fs.readFileSync(path.join(__dirname, './FederationMetadata.xml')),
45+
metadata: fs.readFileSync(path.join(__dirname, FEDERATION_METADATA_FILE_PATH)),
3646
isAssertionEncrypted: true,
3747
});
3848

3949
const sp = samlify.ServiceProvider({
40-
metadata: fs.readFileSync(path.join(__dirname, './sp.xml')),
50+
metadata: fs.readFileSync(path.join(__dirname, SP_FILE_PATH)),
4151
encPrivateKey: process.env.NUS_EXCHANGE_SP_PRIVATE_KEY?.replace(/\\n/g, '\n'),
4252
});
4353

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0"?>
2+
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" validUntil="2025-03-26T12:31:27Z" cacheDuration="PT604800S" entityID="https://cpex-staging.nusmods.com">
3+
<md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
4+
<md:KeyDescriptor use="signing">
5+
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
6+
<ds:X509Data>
7+
<ds:X509Certificate>MIICajCCAdOgAwIBAgIBADANBgkqhkiG9w0BAQ0FADBRMQswCQYDVQQGEwJzZzESMBAGA1UECAwJU2luZ2Fwb3JlMRAwDgYDVQQKDAdOVVNNb2RzMRwwGgYDVQQDDBNodHRwczovL251c21vZHMuY29tMCAXDTIxMDIwMTA4MzE0N1oYDzIxMjEwMTA4MDgzMTQ3WjBRMQswCQYDVQQGEwJzZzESMBAGA1UECAwJU2luZ2Fwb3JlMRAwDgYDVQQKDAdOVVNNb2RzMRwwGgYDVQQDDBNodHRwczovL251c21vZHMuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDsUyFzxVrM8jDE8nmb+SEwo64rKvVAxO37W/AXsGIih/2j2ijl+WyGqHN8uDcPZi5hkyFaJ4t2tfdWn1cK1HdUQ1IO2YdKNv3ZvotU1wPoEa3uj6LMb+uOkNIIHM2Lep+E7KCAmZfP3tTAejuD0skHS90DAbV3rl70zkRH7PlbwIDAQABo1AwTjAdBgNVHQ4EFgQUUvQmIWw/43xDFkxbwnQ2D32oFLEwHwYDVR0jBBgwFoAUUvQmIWw/43xDFkxbwnQ2D32oFLEwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQ0FAAOBgQBs+6TosV25k/KIWTPGiNbCBBUTIEiy5SKUPx4e6WsTNSC91dlDlnwiV4Feag4v9RlanOLJI11XFibaw+SPQ1nUvpnfeKf4sU0jIzjoRHzFfd7VpirT5Uy5pmXZ4J01SGGP28PJ/wioxsnIDWe1HVJFbkMzlIBN3Mg/0pwwTJeZ0w==</ds:X509Certificate>
8+
</ds:X509Data>
9+
</ds:KeyInfo>
10+
</md:KeyDescriptor>
11+
<md:KeyDescriptor use="encryption">
12+
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
13+
<ds:X509Data>
14+
<ds:X509Certificate>MIICajCCAdOgAwIBAgIBADANBgkqhkiG9w0BAQ0FADBRMQswCQYDVQQGEwJzZzESMBAGA1UECAwJU2luZ2Fwb3JlMRAwDgYDVQQKDAdOVVNNb2RzMRwwGgYDVQQDDBNodHRwczovL251c21vZHMuY29tMCAXDTIxMDIwMTA4MzE0N1oYDzIxMjEwMTA4MDgzMTQ3WjBRMQswCQYDVQQGEwJzZzESMBAGA1UECAwJU2luZ2Fwb3JlMRAwDgYDVQQKDAdOVVNNb2RzMRwwGgYDVQQDDBNodHRwczovL251c21vZHMuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDsUyFzxVrM8jDE8nmb+SEwo64rKvVAxO37W/AXsGIih/2j2ijl+WyGqHN8uDcPZi5hkyFaJ4t2tfdWn1cK1HdUQ1IO2YdKNv3ZvotU1wPoEa3uj6LMb+uOkNIIHM2Lep+E7KCAmZfP3tTAejuD0skHS90DAbV3rl70zkRH7PlbwIDAQABo1AwTjAdBgNVHQ4EFgQUUvQmIWw/43xDFkxbwnQ2D32oFLEwHwYDVR0jBBgwFoAUUvQmIWw/43xDFkxbwnQ2D32oFLEwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQ0FAAOBgQBs+6TosV25k/KIWTPGiNbCBBUTIEiy5SKUPx4e6WsTNSC91dlDlnwiV4Feag4v9RlanOLJI11XFibaw+SPQ1nUvpnfeKf4sU0jIzjoRHzFfd7VpirT5Uy5pmXZ4J01SGGP28PJ/wioxsnIDWe1HVJFbkMzlIBN3Mg/0pwwTJeZ0w==</ds:X509Certificate>
15+
</ds:X509Data>
16+
</ds:KeyInfo>
17+
</md:KeyDescriptor>
18+
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
19+
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://cpex-staging.nusmods.com/api/nus/auth/login" index="1"/>
20+
</md:SPSSODescriptor>
21+
</md:EntityDescriptor>

website/vercel.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"functions": {
33
"api/**/*.ts": {
44
"excludeFiles": "./tsconfig.json",
5-
"includeFiles": "./api/tsconfig.json"
5+
"includeFiles": "{./api/tsconfig.json,./src/serverless/*.xml}"
66
}
77
},
88
"headers": [

0 commit comments

Comments
 (0)