From fe3e4e9c212fda6f217310d8e6a6aec45adb15c2 Mon Sep 17 00:00:00 2001
From: Sandra Westerhoff <westerhoff@itc.rwth-aachen.de>
Date: Thu, 9 Jun 2022 09:40:07 +0200
Subject: [PATCH] Update: extend parsing of pairwise id (coscine/issues#2115)

---
 src/STS/Controllers/ShibbolethController.cs | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/STS/Controllers/ShibbolethController.cs b/src/STS/Controllers/ShibbolethController.cs
index 4431a73..4a6ce66 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
-- 
GitLab