mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-07 20:31:06 -05:00
91c4cf16cc
GitOrigin-RevId: 4cb1d7f6e5636bbed77c4279d7d7704ab9b9ab77
47 lines
959 B
JavaScript
47 lines
959 B
JavaScript
'use strict'
|
|
|
|
const _ = require('lodash')
|
|
|
|
class UKAMFEntity {
|
|
constructor(data) {
|
|
this.data = data
|
|
}
|
|
|
|
getSamlConfig() {
|
|
const idp = this.data.IDPSSODescriptor[0]
|
|
const keys = idp.KeyDescriptor
|
|
const signingKey = keys.find(key => _.get(key, ['$', 'use']) === 'signing')
|
|
const entityId = this.data.$.entityID
|
|
|
|
let cert = _.get(signingKey, [
|
|
'ds:KeyInfo',
|
|
0,
|
|
'ds:X509Data',
|
|
0,
|
|
'ds:X509Certificate',
|
|
0
|
|
])
|
|
if (!cert) {
|
|
throw new Error('no cert')
|
|
}
|
|
cert = cert.replace(/\s/g, '')
|
|
|
|
let entryPoint = idp.SingleSignOnService.find(
|
|
sso =>
|
|
_.get(sso, ['$', 'Binding']) ===
|
|
'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect'
|
|
)
|
|
entryPoint = _.get(entryPoint, ['$', 'Location'])
|
|
if (!entryPoint) {
|
|
throw new Error('no entryPoint')
|
|
}
|
|
|
|
return {
|
|
cert,
|
|
entityId,
|
|
entryPoint
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = UKAMFEntity
|