Skip to content

Commit

Permalink
Remove SPNameQualifier from logout template and update nameId selector (
Browse files Browse the repository at this point in the history
  • Loading branch information
purmac authored and tngan committed Jul 30, 2019
1 parent 28e111e commit a15b6d7
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 5 deletions.
9 changes: 6 additions & 3 deletions src/binding-post.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ async function base64LoginResponse(requestInfo: any = {}, entity: any, user: any
idp: entity.idp.entityMeta,
sp: entity.sp.entityMeta,
};
const nameIDFormat = idpSetting.nameIDFormat;
const selectedNameIDFormat = Array.isArray(nameIDFormat) ? nameIDFormat[0] : nameIDFormat;
if (metadata && metadata.idp && metadata.sp) {
const base = metadata.sp.getAssertionConsumerService(binding.post);
let rawSamlResponse: string;
Expand All @@ -113,7 +115,7 @@ async function base64LoginResponse(requestInfo: any = {}, entity: any, user: any
ConditionsNotBefore: now,
ConditionsNotOnOrAfter: fiveMinutesLater,
SubjectConfirmationDataNotOnOrAfter: fiveMinutesLater,
NameIDFormat: namespace.format[idpSetting.logoutNameIDFormat] || namespace.format.emailAddress,
NameIDFormat: selectedNameIDFormat,
NameID: user.email || '',
InResponseTo: get(requestInfo, 'extract.request.id', ''),
AuthnStatement: '',
Expand Down Expand Up @@ -214,7 +216,8 @@ async function base64LoginResponse(requestInfo: any = {}, entity: any, user: any
function base64LogoutRequest(user, referenceTagXPath, entity, customTagReplacement?: (template: string) => BindingContext): BindingContext {
const metadata = { init: entity.init.entityMeta, target: entity.target.entityMeta };
const initSetting = entity.init.entitySetting;
let id: string = '';
const nameIDFormat = initSetting.nameIDFormat;
const selectedNameIDFormat = Array.isArray(nameIDFormat) ? nameIDFormat[0] : nameIDFormat; let id: string = '';
if (metadata && metadata.init && metadata.target) {
let rawSamlRequest: string;
if (initSetting.logoutRequestTemplate && customTagReplacement) {
Expand All @@ -229,7 +232,7 @@ function base64LogoutRequest(user, referenceTagXPath, entity, customTagReplaceme
Issuer: metadata.init.getEntityID(),
IssueInstant: new Date().toISOString(),
EntityID: metadata.init.getEntityID(),
NameIDFormat: namespace.format[initSetting.logoutNameIDFormat] || namespace.format.transient,
NameIDFormat: selectedNameIDFormat,
NameID: user.logoutNameID,
};
rawSamlRequest = libsaml.replaceTagsByValue(libsaml.defaultLogoutRequestTemplate.context, tvalue);
Expand Down
5 changes: 4 additions & 1 deletion src/binding-redirect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,9 @@ function logoutRequestRedirectURL(user, entity, relayState?: string, customTagRe
const metadata = { init: entity.init.entityMeta, target: entity.target.entityMeta };
const initSetting = entity.init.entitySetting;
let id: string = initSetting.generateID();
const nameIDFormat = initSetting.nameIDFormat;
const selectedNameIDFormat = Array.isArray(nameIDFormat) ? nameIDFormat[0] : nameIDFormat;

if (metadata && metadata.init && metadata.target) {
const base = metadata.target.getSingleLogoutService(binding.redirect);
let rawSamlRequest: string = '';
Expand All @@ -134,7 +137,7 @@ function logoutRequestRedirectURL(user, entity, relayState?: string, customTagRe
EntityID: metadata.init.getEntityID(),
Issuer: metadata.init.getEntityID(),
IssueInstant: new Date().toISOString(),
NameIDFormat: namespace.format[initSetting.logoutNameIDFormat] || namespace.format.emailAddress,
NameIDFormat: selectedNameIDFormat,
NameID: user.logoutNameID,
SessionIndex: user.sessionIndex,
};
Expand Down
2 changes: 1 addition & 1 deletion src/libsaml.ts
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ const libSaml = () => {
* @type {LogoutRequestTemplate}
*/
const defaultLogoutRequestTemplate = {
context: '<samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="{ID}" Version="2.0" IssueInstant="{IssueInstant}" Destination="{Destination}"><saml:Issuer>{Issuer}</saml:Issuer><saml:NameID SPNameQualifier="{EntityID}" Format="{NameIDFormat}">{NameID}</saml:NameID></samlp:LogoutRequest>',
context: '<samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="{ID}" Version="2.0" IssueInstant="{IssueInstant}" Destination="{Destination}"><saml:Issuer>{Issuer}</saml:Issuer><saml:NameID Format="{NameIDFormat}">{NameID}</saml:NameID></samlp:LogoutRequest>',
};
/**
* @desc Default login response template
Expand Down

0 comments on commit a15b6d7

Please sign in to comment.