| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- '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
|