/// <summary> /// Ensures the service principal. /// </summary> /// <returns>PSADServicePrincipal.</returns> public PSADServicePrincipal EnsureServicePrincipal() { string applicationId = KailaniAppId.ToString(); var servicePrincipals = ActiveDirectoryClient.FilterServicePrincipals(new ODataQuery <ServicePrincipal>(s => s.AppId == applicationId)); PSADServicePrincipal servicePrincipal = servicePrincipals.FirstOrDefault(); if (servicePrincipal == null) { VerboseLogger.Invoke(StorageSyncResources.CreateServicePrincipalMessage); // Create an application and get the applicationId var passwordCredential = new PSADPasswordCredential() { StartDate = DateTime.Now, EndDate = DateTime.Now.AddYears(1), KeyId = Guid.NewGuid(), Password = SecureStringExtensions.ConvertToString(Guid.NewGuid().ToString().ConvertToSecureString()) }; var createParameters = new CreatePSServicePrincipalParameters { ApplicationId = KailaniAppId, AccountEnabled = true, PasswordCredentials = new PSADPasswordCredential[] { passwordCredential } }; servicePrincipal = ActiveDirectoryClient.CreateServicePrincipal(createParameters); } return(servicePrincipal); }
public static (string, string) GetDetailsFromADObjectId(string objectId, ActiveDirectoryClient adClient) { var displayName = ""; var upnOrSpn = ""; var objectType = "Unknown"; if (adClient == null || string.IsNullOrWhiteSpace(objectId)) { return(displayName, objectType); } try { var obj = adClient.GetObjectsByObjectId(new List <string> { objectId }).FirstOrDefault(); if (obj != null) { if (obj.Type.Equals("user", StringComparison.InvariantCultureIgnoreCase)) { var user = adClient.FilterUsers(new ADObjectFilterOptions { Id = objectId }).FirstOrDefault(); displayName = user.DisplayName; upnOrSpn = user.UserPrincipalName; objectType = "User"; } else if (obj.Type.Equals("serviceprincipal", StringComparison.InvariantCultureIgnoreCase)) { var odataQuery = new Rest.Azure.OData.ODataQuery <Graph.RBAC.Version1_6.Models.ServicePrincipal>(s => s.ObjectId == objectId); var servicePrincipal = adClient.FilterServicePrincipals(odataQuery).FirstOrDefault(); displayName = servicePrincipal.DisplayName; upnOrSpn = servicePrincipal.ServicePrincipalNames.FirstOrDefault(); objectType = "Service Principal"; } else if (obj.Type.Equals("group", StringComparison.InvariantCultureIgnoreCase)) { var group = adClient.FilterGroups(new ADObjectFilterOptions { Id = objectId }).FirstOrDefault(); displayName = group.DisplayName; objectType = "Group"; } } } catch { // Error occurred. Don't get the friendly name } return( displayName + (!string.IsNullOrWhiteSpace(upnOrSpn) ? (" (" + upnOrSpn + ")") : ""), objectType ); }
private string GetObjectIdBySpn(string spn) { string objId = null; if (!string.IsNullOrWhiteSpace(spn)) { var servicePrincipal = ActiveDirectoryClient.FilterServicePrincipals(new ADObjectFilterOptions() { SPN = spn }).SingleOrDefault(); if (servicePrincipal != null) { objId = servicePrincipal.Id.ToString(); } } return(objId); }
private string GetObjectIdBySpn(string spn) { string objId = null; if (!string.IsNullOrWhiteSpace(spn)) { #if NETSTANDARD var odataQuery = new Rest.Azure.OData.ODataQuery <Graph.RBAC.Version1_6.Models.ServicePrincipal>(s => s.ServicePrincipalNames.Contains(spn)); var servicePrincipal = ActiveDirectoryClient.FilterServicePrincipals(odataQuery).SingleOrDefault(); objId = servicePrincipal?.Id.ToString(); #else var servicePrincipal = ActiveDirectoryClient.ServicePrincipals.Where(s => s.ServicePrincipalNames.Any(n => n.Equals(spn, StringComparison.OrdinalIgnoreCase))) .ExecuteAsync().GetAwaiter().GetResult().CurrentPage.SingleOrDefault(); objId = servicePrincipal?.ObjectId; #endif } return(objId); }
public static string GetDisplayNameForADObject(string objectId, ActiveDirectoryClient adClient) { string displayName = ""; string upnOrSpn = ""; if (adClient == null || string.IsNullOrWhiteSpace(objectId)) { return(displayName); } try { var obj = adClient.GetObjectsByObjectId(new List <string> { objectId }).FirstOrDefault(); if (obj != null) { if (obj.Type.Equals("user", StringComparison.InvariantCultureIgnoreCase)) { var user = adClient.FilterUsers(new ADObjectFilterOptions { Id = objectId }).FirstOrDefault(); displayName = user.DisplayName; upnOrSpn = user.UserPrincipalName; } else if (obj.Type.Equals("serviceprincipal", StringComparison.InvariantCultureIgnoreCase)) { var servicePrincipal = adClient.FilterServicePrincipals(new ADObjectFilterOptions { Id = objectId }).FirstOrDefault(); displayName = servicePrincipal.DisplayName; upnOrSpn = servicePrincipal.ServicePrincipalNames.FirstOrDefault(); } } } catch { // Error occured. Don't get the friendly name } return(displayName + (!string.IsNullOrWhiteSpace(upnOrSpn) ? (" (" + upnOrSpn + ")") : "")); }
private string GetObjectIdBySpn(string spn) { string objId = null; if (!string.IsNullOrWhiteSpace(spn)) { #if NETSTANDARD var servicePrincipal = ActiveDirectoryClient.FilterServicePrincipals(new ADObjectFilterOptions() { SPN = spn }).SingleOrDefault(); objId = servicePrincipal?.Id.ToString(); #else var servicePrincipal = ActiveDirectoryClient.ServicePrincipals.Where(s => s.ServicePrincipalNames.Any(n => n.Equals(spn, StringComparison.OrdinalIgnoreCase))) .ExecuteAsync().GetAwaiter().GetResult().CurrentPage.SingleOrDefault(); objId = servicePrincipal?.ObjectId; #endif } return(objId); }
public static string GetDisplayNameForADObject(string objectId, ActiveDirectoryClient adClient) { string displayName = ""; string upnOrSpn = ""; if (adClient == null || string.IsNullOrWhiteSpace(objectId)) { return(displayName); } try { #if NETSTANDARD var obj = adClient.GetObjectsByObjectId(new List <string> { objectId }).FirstOrDefault(); if (obj != null) { if (obj.Type.Equals("user", StringComparison.InvariantCultureIgnoreCase)) { var user = adClient.FilterUsers(new ADObjectFilterOptions { Id = objectId }).FirstOrDefault(); displayName = user.DisplayName; upnOrSpn = user.UserPrincipalName; } else if (obj.Type.Equals("serviceprincipal", StringComparison.InvariantCultureIgnoreCase)) { var servicePrincipal = adClient.FilterServicePrincipals(new ADObjectFilterOptions { Id = objectId }).FirstOrDefault(); displayName = servicePrincipal.DisplayName; upnOrSpn = servicePrincipal.ServicePrincipalNames.FirstOrDefault(); } else if (obj.Type.Equals("group", StringComparison.InvariantCultureIgnoreCase)) { var group = adClient.FilterGroups(new ADObjectFilterOptions { Id = objectId }).FirstOrDefault(); displayName = group.DisplayName; } } #else var obj = adClient.GetObjectsByObjectIdsAsync(new[] { objectId }, new string[] { }).GetAwaiter().GetResult().FirstOrDefault(); if (obj != null) { if (obj.ObjectType.Equals("user", StringComparison.InvariantCultureIgnoreCase)) { var user = adClient.Users.GetByObjectId(objectId).ExecuteAsync().GetAwaiter().GetResult(); displayName = user.DisplayName; upnOrSpn = user.UserPrincipalName; } else if (obj.ObjectType.Equals("serviceprincipal", StringComparison.InvariantCultureIgnoreCase)) { var servicePrincipal = adClient.ServicePrincipals.GetByObjectId(objectId).ExecuteAsync().GetAwaiter().GetResult(); displayName = servicePrincipal.AppDisplayName; upnOrSpn = servicePrincipal.ServicePrincipalNames.FirstOrDefault(); } else if (obj.ObjectType.Equals("group", StringComparison.InvariantCultureIgnoreCase)) { var group = adClient.Groups.GetByObjectId(objectId).ExecuteAsync().GetAwaiter().GetResult(); displayName = group.DisplayName; upnOrSpn = group.MailNickname; } } #endif } catch { // Error occured. Don't get the friendly name } return(displayName + (!string.IsNullOrWhiteSpace(upnOrSpn) ? (" (" + upnOrSpn + ")") : "")); }