public const string CLAIMS_REGEX = @"(?<IdentityClaim>[ic])?:?0(?<ClaimType>[#\.5\!\+\-%?\\])(?<ClaimValueType>[\.\+])(?<AuthMode>[wstmrfc])(\|(?<OriginalIssuer>[^\|]*))?(\|(?<ClaimValue>.*))";
public static string GetAdUserIdForClaim(string login)
{
string userName = login;
foreach (Match m in Regex.Matches(login, CLAIMS_REGEX, RegexOptions.IgnoreCase))
{
try
{
if (m.Groups["AuthMode"].Captures[0].Value.ToLower() == "w")
{
userName = m.Groups["ClaimValue"].Captures[0].Value;
}
}
catch { }
}
return userName;
}
public static string GetClaimForAdUserId(string login)
{
string userName = login;
SPClaimProviderManager mgr = SPClaimProviderManager.Local;
if (mgr == null) return userName;
SPClaim claim = new SPClaim(SPClaimTypes.UserLogonName, login, "http://www.w3.org/2001/XMLSchema#string", SPOriginalIssuers.Format(SPOriginalIssuerType.Windows));
userName = mgr.EncodeClaim(claim);
return userName;
}
public static bool IsLoginClaims(string login)
{
Regex re = new Regex(CLAIMS_REGEX, RegexOptions.IgnoreCase);
return re.IsMatch(login);
}