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