diff --git a/src/STS/Controllers/ShibbolethController.cs b/src/STS/Controllers/ShibbolethController.cs index 4431a73255a7e94ceae3248f752a6d988f6eb729..4a6ce66d6838be3cd7537c3b48da5609148f0ca2 100644 --- a/src/STS/Controllers/ShibbolethController.cs +++ b/src/STS/Controllers/ShibbolethController.cs @@ -48,12 +48,22 @@ namespace Coscine.Api.STS.Controllers entity = info.Principal.FindFirstValue(ShibbolethAttributeMapping.PairwiseID); } - var identifier = entity[(entity.IndexOf(">") + 1)..]; - identifier = identifier.Substring(0, identifier.IndexOf("<")); - - var entityId = entity[(entity.IndexOf("NameQualifier=\"") + "NameQualifier=\"".Length)..]; - entityId = entityId.Substring(0, entityId.IndexOf("\"")); + var identifier = ""; + var entityId = ""; + if (entity.IndexOf(">") > -1) + { + identifier = entity[(entity.IndexOf(">") + 1)..]; + identifier = identifier.Substring(0, identifier.IndexOf("<")); + entityId = entity[(entity.IndexOf("NameQualifier=\"") + "NameQualifier=\"".Length)..]; + entityId = entityId.Substring(0, entityId.IndexOf("\"")); + } + else + { + identifier = entity; + entityId = info.AuthenticationProperties.Items["idp"]; + } + var mapping = externalIdModel.GetAllWhere((map) => map.ExternalId1 == identifier && map.ExternalAuthenticatorId == shibbolethAuthItem.Id