<PackageReference Include="Relativity.Server.Import.SDK" Version="2.9.2" />

LoginHelper

public class LoginHelper
Defines helper methods for authentication in Relativity
using kCura.WinEDDS.Service; using kCura.WinEDDS.Service.Replacement; using Relativity.DataExchange; using Relativity.Logging; using System; using System.Globalization; using System.Net; using System.Threading; using System.Threading.Tasks; namespace kCura.WinEDDS.Api { public class LoginHelper { public static NetworkCredential LoginUsernamePassword(string username, string password, CookieContainer cookieContainer, IRunningContext runningContext, Func<string> correlationIdFunc) { return LoginUsernamePassword(username, password, cookieContainer, AppSettings.Instance.WebApiServiceUrl, runningContext, correlationIdFunc); } public static NetworkCredential LoginUsernamePassword(string username, string password, CookieContainer cookieContainer, string webServiceUrl, IRunningContext runningContext, Func<string> correlationIdFunc) { return LoginUsernamePassword(username, password, cookieContainer, AppSettings.Instance.WebApiServiceUrl, CancellationToken.None, runningContext, new NullLogger(), correlationIdFunc); } public static NetworkCredential LoginUsernamePassword(string username, string password, CookieContainer cookieContainer, string webServiceUrl, CancellationToken token, IRunningContext runningContext, ILog logger, Func<string> correlationIdFunc) { if (cookieContainer == null) throw new ArgumentException("cookieContainer"); if (string.IsNullOrEmpty(webServiceUrl)) throw new ArgumentException("webServiceUrl"); if (logger == null) throw new ArgumentException("logger"); webServiceUrl = AppSettings.Instance.ValidateUriFormat(webServiceUrl); NetworkCredential networkCredential = new NetworkCredential(username, password); using (IUserManager userManager = ManagerFactory.CreateUserManager(networkCredential, cookieContainer, webServiceUrl, correlationIdFunc)) { if (!userManager.Login(username, password)) return null; } using (IRelativityManager relativityManager = ManagerFactory.CreateRelativityManager(networkCredential, cookieContainer, correlationIdFunc, null)) { Initialize(relativityManager, webServiceUrl, networkCredential, cookieContainer, correlationIdFunc); ValidateVersionCompatibility(networkCredential, cookieContainer, webServiceUrl, token, runningContext, logger, correlationIdFunc); return networkCredential; } } public static void ValidateVersionCompatibility(NetworkCredential credential, CookieContainer cookieContainer, string webServiceUrl, CancellationToken token, IRunningContext runningContext, ILog logger, Func<string> correlationIdFunc) { if (credential == null) throw new ArgumentException("credential"); if (cookieContainer == null) throw new ArgumentException("cookieContainer"); if (string.IsNullOrEmpty(webServiceUrl)) throw new ArgumentException("webServiceUrl"); if (logger == null) throw new ArgumentException("logger"); webServiceUrl = AppSettings.Instance.ValidateUriFormat(webServiceUrl); ValidateVersionCompatibilityAsync(new RelativityInstanceInfo { Credentials = credential, CookieContainer = cookieContainer, WebApiServiceUrl = new Uri(webServiceUrl) }, token, runningContext, logger, correlationIdFunc).GetAwaiter().GetResult(); } internal static Task ValidateVersionCompatibilityAsync(RelativityInstanceInfo instanceInfo, CancellationToken token, IRunningContext runningContext, ILog logger, Func<string> correlationIdFunc) { return ((IImportExportCompatibilityCheck)new ImportExportCompatibilityCheck(instanceInfo, ManagerFactory.CreateApplicationVersionService(instanceInfo, AppSettings.Instance, logger, correlationIdFunc), runningContext, logger)).ValidateAsync(token); } private static void Initialize(IRelativityManager relativityManager, string webServiceUrl, NetworkCredential credentials, CookieContainer cookieContainer, Func<string> correlationIdFunc) { CultureInfo cultureInfo = new CultureInfo(CultureInfo.CurrentCulture.LCID, true); cultureInfo.NumberFormat.CurrencySymbol = relativityManager.RetrieveCurrencySymbol(); Thread.CurrentThread.CurrentCulture = cultureInfo; using (IUserManager userManager = ManagerFactory.CreateUserManager(credentials, cookieContainer, webServiceUrl, correlationIdFunc)) Settings.AuthenticationToken = userManager.GenerateDistributedAuthenticationToken(true); } } }