diff --git a/Microsoft.SCIM.Sample/App.config b/Microsoft.SCIM.Sample/App.config deleted file mode 100644 index dade2946..00000000 --- a/Microsoft.SCIM.Sample/App.config +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Microsoft.SCIM.Sample/InMemoryGroupProvider.cs b/Microsoft.SCIM.Sample/InMemoryGroupProvider.cs deleted file mode 100644 index c80c1135..00000000 --- a/Microsoft.SCIM.Sample/InMemoryGroupProvider.cs +++ /dev/null @@ -1,277 +0,0 @@ -//------------------------------------------------------------ -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------ - -namespace Microsoft.SCIM.Sample -{ - using System; - using System.Collections.Generic; - using System.Linq; - using System.Net; - using System.Threading.Tasks; - using System.Web.Http; - using Microsoft.SCIM; - using Microsoft.SCIM.Sample.Properties; - - public class InMemoryGroupProvider : ProviderBase - { - private readonly InMemoryStorage storage; - - public InMemoryGroupProvider() - { - this.storage = InMemoryStorage.Instance; - } - - public override Task CreateAsync(Resource resource, string correlationIdentifier) - { - if (resource.Identifier != null) - { - throw new HttpResponseException(HttpStatusCode.BadRequest); - } - - Core2Group group = resource as Core2Group; - - if (string.IsNullOrWhiteSpace(group.DisplayName)) - { - throw new HttpResponseException(HttpStatusCode.BadRequest); - } - - IEnumerable exisitingGroups = this.storage.Groups.Values; - if - ( - exisitingGroups.Any( - (Core2Group exisitingGroup) => - string.Equals(exisitingGroup.DisplayName, group.DisplayName, StringComparison.Ordinal)) - ) - { - throw new HttpResponseException(HttpStatusCode.Conflict); - } - - string resourceIdentifier = Guid.NewGuid().ToString(); - resource.Identifier = resourceIdentifier; - this.storage.Groups.Add(resourceIdentifier, group); - - return Task.FromResult(resource); - } - - public override Task DeleteAsync(IResourceIdentifier resourceIdentifier, string correlationIdentifier) - { - if (string.IsNullOrWhiteSpace(resourceIdentifier?.Identifier)) - { - throw new HttpResponseException(HttpStatusCode.BadRequest); - } - - string identifier = resourceIdentifier.Identifier; - - if (this.storage.Groups.ContainsKey(identifier)) - { - this.storage.Groups.Remove(identifier); - } - - return Task.CompletedTask; - } - - public override Task QueryAsync(IQueryParameters parameters, string correlationIdentifier) - { - if (parameters == null) - { - throw new ArgumentNullException(nameof(parameters)); - } - - if (string.IsNullOrWhiteSpace(correlationIdentifier)) - { - throw new ArgumentNullException(nameof(correlationIdentifier)); - } - - if (null == parameters.AlternateFilters) - { - throw new ArgumentException(SampleServiceResources.ExceptionInvalidParameters); - } - - if (string.IsNullOrWhiteSpace(parameters.SchemaIdentifier)) - { - throw new ArgumentException(SampleServiceResources.ExceptionInvalidParameters); - } - - Resource[] results; - IFilter queryFilter = parameters.AlternateFilters.SingleOrDefault(); - IEnumerable buffer = Enumerable.Empty(); - if (queryFilter == null) - { - buffer = this.storage.Groups.Values; - } - else - { - if (string.IsNullOrWhiteSpace(queryFilter.AttributePath)) - { - throw new ArgumentException(SampleServiceResources.ExceptionInvalidParameters); - } - - if (string.IsNullOrWhiteSpace(queryFilter.ComparisonValue)) - { - throw new ArgumentException(SampleServiceResources.ExceptionInvalidParameters); - } - - if (queryFilter.FilterOperator != ComparisonOperator.Equals) - { - throw new NotSupportedException(SampleServiceResources.UnsupportedComparisonOperator); - } - - if (queryFilter.AttributePath.Equals(AttributeNames.DisplayName)) - { - buffer = - this.storage.Groups.Values - .Where( - (Core2Group item) => - string.Equals( - item.DisplayName, - parameters.AlternateFilters.Single().ComparisonValue, - StringComparison.OrdinalIgnoreCase)); - } - else - { - throw new NotSupportedException(SampleServiceResources.UnsupportedFilterAttributeGroup); - } - } - - results = - buffer - .Select((Core2Group item) => - { - Core2Group bufferItem = - new Core2Group - { - DisplayName = item.DisplayName, - ExternalIdentifier = item.ExternalIdentifier, - Identifier = item.Identifier, - Members = item.Members, - Metadata = item.Metadata - }; - - if (parameters?.ExcludedAttributePaths?.Any( - (string excludedAttributes) => - excludedAttributes.Equals(AttributeNames.Members, StringComparison.OrdinalIgnoreCase)) - == true) - { - bufferItem.Members = null; - } - - return bufferItem; - }) - .Select((Core2Group item) => item as Resource) - .ToArray(); - - return Task.FromResult(results); - } - - public override Task ReplaceAsync(Resource resource, string correlationIdentifier) - { - if (resource.Identifier == null) - { - throw new HttpResponseException(HttpStatusCode.BadRequest); - } - - Core2Group group = resource as Core2Group; - - if (string.IsNullOrWhiteSpace(group.DisplayName)) - { - throw new HttpResponseException(HttpStatusCode.BadRequest); - } - - IEnumerable exisitingGroups = this.storage.Groups.Values; - if - ( - exisitingGroups.Any( - (Core2Group exisitingUser) => - string.Equals(exisitingUser.DisplayName, group.DisplayName, StringComparison.Ordinal) && - !string.Equals(exisitingUser.Identifier, group.Identifier, StringComparison.OrdinalIgnoreCase)) - ) - { - throw new HttpResponseException(HttpStatusCode.Conflict); - } - - if (!this.storage.Groups.TryGetValue(group.Identifier, out Core2Group _)) - { - throw new HttpResponseException(HttpStatusCode.NotFound); - } - - this.storage.Groups[group.Identifier] = group; - Resource result = group as Resource; - return Task.FromResult(result); - } - - public override Task RetrieveAsync(IResourceRetrievalParameters parameters, string correlationIdentifier) - { - if (parameters == null) - { - throw new ArgumentNullException(nameof(parameters)); - } - - if (string.IsNullOrWhiteSpace(correlationIdentifier)) - { - throw new ArgumentNullException(nameof(correlationIdentifier)); - } - - if (string.IsNullOrEmpty(parameters?.ResourceIdentifier?.Identifier)) - { - throw new ArgumentNullException(nameof(parameters)); - } - - string identifier = parameters.ResourceIdentifier.Identifier; - - if (this.storage.Groups.ContainsKey(identifier)) - { - if (this.storage.Groups.TryGetValue(identifier, out Core2Group group)) - { - Resource result = group as Resource; - return Task.FromResult(result); - } - } - - throw new HttpResponseException(HttpStatusCode.NotFound); - } - - public override Task UpdateAsync(IPatch patch, string correlationIdentifier) - { - if (null == patch) - { - throw new ArgumentNullException(nameof(patch)); - } - - if (null == patch.ResourceIdentifier) - { - throw new ArgumentException(SampleServiceResources.ExceptionInvalidPatch); - } - - if (string.IsNullOrWhiteSpace(patch.ResourceIdentifier.Identifier)) - { - throw new ArgumentException(SampleServiceResources.ExceptionInvalidPatch); - } - - if (null == patch.PatchRequest) - { - throw new ArgumentException(SampleServiceResources.ExceptionInvalidPatch); - } - - PatchRequest2 patchRequest = - patch.PatchRequest as PatchRequest2; - - if (null == patchRequest) - { - string unsupportedPatchTypeName = patch.GetType().FullName; - throw new NotSupportedException(unsupportedPatchTypeName); - } - - if (this.storage.Groups.TryGetValue(patch.ResourceIdentifier.Identifier, out Core2Group group)) - { - group.Apply(patchRequest); - } - else - { - throw new HttpResponseException(HttpStatusCode.NotFound); - } - - return Task.CompletedTask; - } - } -} diff --git a/Microsoft.SCIM.Sample/InMemoryProvider.cs b/Microsoft.SCIM.Sample/InMemoryProvider.cs deleted file mode 100644 index 0ac17053..00000000 --- a/Microsoft.SCIM.Sample/InMemoryProvider.cs +++ /dev/null @@ -1,127 +0,0 @@ -//------------------------------------------------------------ -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------ - -namespace Microsoft.SCIM.Sample -{ - using System; - using System.Threading.Tasks; - using Microsoft.SCIM; - - public class InMemoryProvider : ProviderBase - { - private readonly ProviderBase groupProvider; - private readonly ProviderBase userProvider; - - public InMemoryProvider() - { - this.groupProvider = new InMemoryGroupProvider(); - this.userProvider = new InMemoryUserProvider(); - } - - public override Task CreateAsync(Resource resource, string correlationIdentifier) - { - if (resource is Core2EnterpriseUser) - { - return this.userProvider.CreateAsync(resource, correlationIdentifier); - } - - if (resource is Core2Group) - { - return this.groupProvider.CreateAsync(resource, correlationIdentifier); - } - - throw new NotImplementedException(); - } - - public override Task DeleteAsync(IResourceIdentifier resourceIdentifier, string correlationIdentifier) - { - if (resourceIdentifier.SchemaIdentifier.Equals(SchemaIdentifiers.Core2EnterpriseUser)) - { - return this.userProvider.DeleteAsync(resourceIdentifier, correlationIdentifier); - } - - if (resourceIdentifier.SchemaIdentifier.Equals(SchemaIdentifiers.Core2Group)) - { - return this.groupProvider.DeleteAsync(resourceIdentifier, correlationIdentifier); - } - - throw new NotImplementedException(); - } - - public override Task QueryAsync(IQueryParameters parameters, string correlationIdentifier) - { - if (parameters.SchemaIdentifier.Equals(SchemaIdentifiers.Core2EnterpriseUser)) - { - return this.userProvider.QueryAsync(parameters, correlationIdentifier); - } - - if (parameters.SchemaIdentifier.Equals(SchemaIdentifiers.Core2Group)) - { - return this.groupProvider.QueryAsync(parameters, correlationIdentifier); - } - - throw new NotImplementedException(); - } - - public override Task ReplaceAsync(Resource resource, string correlationIdentifier) - { - if (resource is Core2EnterpriseUser) - { - return this.userProvider.ReplaceAsync(resource, correlationIdentifier); - } - - if (resource is Core2Group) - { - return this.groupProvider.ReplaceAsync(resource, correlationIdentifier); - } - - throw new NotImplementedException(); - } - - public override Task RetrieveAsync(IResourceRetrievalParameters parameters, string correlationIdentifier) - { - if (parameters.SchemaIdentifier.Equals(SchemaIdentifiers.Core2EnterpriseUser)) - { - return this.userProvider.RetrieveAsync(parameters, correlationIdentifier); - } - - if (parameters.SchemaIdentifier.Equals(SchemaIdentifiers.Core2Group)) - { - return this.groupProvider.RetrieveAsync(parameters, correlationIdentifier); - } - - throw new NotImplementedException(); - } - - public override Task UpdateAsync(IPatch patch, string correlationIdentifier) - { - if (patch == null) - { - throw new ArgumentNullException(nameof(patch)); - } - - if (string.IsNullOrWhiteSpace(patch.ResourceIdentifier.Identifier)) - { - throw new ArgumentException(nameof(patch)); - } - - if (string.IsNullOrWhiteSpace(patch.ResourceIdentifier.SchemaIdentifier)) - { - throw new ArgumentException(nameof(patch)); - } - - if (patch.ResourceIdentifier.SchemaIdentifier.Equals(SchemaIdentifiers.Core2EnterpriseUser)) - { - return this.userProvider.UpdateAsync(patch, correlationIdentifier); - } - - if (patch.ResourceIdentifier.SchemaIdentifier.Equals(SchemaIdentifiers.Core2Group)) - { - return this.groupProvider.UpdateAsync(patch, correlationIdentifier); - } - - throw new NotImplementedException(); - } - } -} diff --git a/Microsoft.SCIM.Sample/InMemoryStorage.cs b/Microsoft.SCIM.Sample/InMemoryStorage.cs deleted file mode 100644 index bde0e4f2..00000000 --- a/Microsoft.SCIM.Sample/InMemoryStorage.cs +++ /dev/null @@ -1,35 +0,0 @@ -//------------------------------------------------------------ -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------ - -namespace Microsoft.SCIM.Sample -{ - using System; - using System.Collections.Generic; - using Microsoft.SCIM; - - public class InMemoryStorage - { - internal readonly IDictionary Groups; - internal readonly IDictionary Users; - - private InMemoryStorage() - { - this.Groups = new Dictionary(); - this.Users = new Dictionary(); - } - - private static readonly Lazy InstanceValue = - new Lazy( - () => - new InMemoryStorage()); - - public static InMemoryStorage Instance - { - get - { - return InMemoryStorage.InstanceValue.Value; - } - } - } -} diff --git a/Microsoft.SCIM.Sample/InMemoryUserProvider.cs b/Microsoft.SCIM.Sample/InMemoryUserProvider.cs deleted file mode 100644 index f8a58287..00000000 --- a/Microsoft.SCIM.Sample/InMemoryUserProvider.cs +++ /dev/null @@ -1,265 +0,0 @@ -//------------------------------------------------------------ -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------ - -namespace Microsoft.SCIM.Sample -{ - using System; - using System.Collections.Generic; - using System.Linq; - using System.Net; - using System.Threading.Tasks; - using System.Web.Http; - using Microsoft.SCIM; - using Microsoft.SCIM.Sample.Properties; - - public class InMemoryUserProvider : ProviderBase - { - private readonly InMemoryStorage storage; - - public InMemoryUserProvider() - { - this.storage = InMemoryStorage.Instance; - } - - public override Task CreateAsync(Resource resource, string correlationIdentifier) - { - if (resource.Identifier != null) - { - throw new HttpResponseException(HttpStatusCode.BadRequest); - } - - Core2EnterpriseUser user = resource as Core2EnterpriseUser; - if (string.IsNullOrWhiteSpace(user.UserName)) - { - throw new HttpResponseException(HttpStatusCode.BadRequest); - } - - IEnumerable exisitingUsers = this.storage.Users.Values; - if - ( - exisitingUsers.Any( - (Core2EnterpriseUser exisitingUser) => - string.Equals(exisitingUser.UserName, user.UserName, StringComparison.Ordinal)) - ) - { - throw new HttpResponseException(HttpStatusCode.Conflict); - } - - string resourceIdentifier = Guid.NewGuid().ToString(); - resource.Identifier = resourceIdentifier; - this.storage.Users.Add(resourceIdentifier, user); - - return Task.FromResult(resource); - } - - public override Task DeleteAsync(IResourceIdentifier resourceIdentifier, string correlationIdentifier) - { - if (string.IsNullOrWhiteSpace(resourceIdentifier?.Identifier)) - { - throw new HttpResponseException(HttpStatusCode.BadRequest); - } - - string identifier = resourceIdentifier.Identifier; - - if (this.storage.Users.ContainsKey(identifier)) - { - this.storage.Users.Remove(identifier); - } - - return Task.CompletedTask; - } - - public override Task QueryAsync(IQueryParameters parameters, string correlationIdentifier) - { - if (parameters == null) - { - throw new ArgumentNullException(nameof(parameters)); - } - - if (string.IsNullOrWhiteSpace(correlationIdentifier)) - { - throw new ArgumentNullException(nameof(correlationIdentifier)); - } - - if (null == parameters.AlternateFilters) - { - throw new ArgumentException(SampleServiceResources.ExceptionInvalidParameters); - } - - if (string.IsNullOrWhiteSpace(parameters.SchemaIdentifier)) - { - throw new ArgumentException(SampleServiceResources.ExceptionInvalidParameters); - } - - Resource[] results; - IFilter queryFilter = parameters.AlternateFilters.SingleOrDefault(); - if (queryFilter == null) - { - IEnumerable allUsers = this.storage.Users.Values; - results = - allUsers.Select((Core2EnterpriseUser user) => user as Resource).ToArray(); - - return Task.FromResult(results); - } - - if (string.IsNullOrWhiteSpace(queryFilter.AttributePath)) - { - throw new ArgumentException(SampleServiceResources.ExceptionInvalidParameters); - } - - if (string.IsNullOrWhiteSpace(queryFilter.ComparisonValue)) - { - throw new ArgumentException(SampleServiceResources.ExceptionInvalidParameters); - } - - if (queryFilter.FilterOperator != ComparisonOperator.Equals) - { - throw new NotSupportedException(SampleServiceResources.UnsupportedComparisonOperator); - } - - if (queryFilter.AttributePath.Equals(AttributeNames.UserName)) - { - IEnumerable allUsers = this.storage.Users.Values; - results = - allUsers.Where( - (Core2EnterpriseUser item) => - string.Equals( - item.UserName, - parameters.AlternateFilters.Single().ComparisonValue, - StringComparison.OrdinalIgnoreCase)) - .Select((Core2EnterpriseUser user) => user as Resource).ToArray(); - - return Task.FromResult(results); - } - - if (queryFilter.AttributePath.Equals(AttributeNames.ExternalIdentifier)) - { - IEnumerable allUsers = this.storage.Users.Values; - results = - allUsers.Where( - (Core2EnterpriseUser item) => - string.Equals( - item.ExternalIdentifier, - parameters.AlternateFilters.Single().ComparisonValue, - StringComparison.OrdinalIgnoreCase)) - .Select((Core2EnterpriseUser user) => user as Resource).ToArray(); - - return Task.FromResult(results); - } - - throw new NotSupportedException(SampleServiceResources.UnsupportedFilterAttributeUser); - } - - public override Task ReplaceAsync(Resource resource, string correlationIdentifier) - { - if (resource.Identifier == null) - { - throw new HttpResponseException(HttpStatusCode.BadRequest); - } - - Core2EnterpriseUser user = resource as Core2EnterpriseUser; - - if (string.IsNullOrWhiteSpace(user.UserName)) - { - throw new HttpResponseException(HttpStatusCode.BadRequest); - } - - IEnumerable exisitingUsers = this.storage.Users.Values; - if - ( - exisitingUsers.Any( - (Core2EnterpriseUser exisitingUser) => - string.Equals(exisitingUser.UserName, user.UserName, StringComparison.Ordinal) && - !string.Equals(exisitingUser.Identifier, user.Identifier, StringComparison.OrdinalIgnoreCase)) - ) - { - throw new HttpResponseException(HttpStatusCode.Conflict); - } - - if (!this.storage.Users.TryGetValue(user.Identifier, out Core2EnterpriseUser _)) - { - throw new HttpResponseException(HttpStatusCode.NotFound); - } - - this.storage.Users[user.Identifier] = user; - Resource result = user as Resource; - return Task.FromResult(result); - } - - public override Task RetrieveAsync(IResourceRetrievalParameters parameters, string correlationIdentifier) - { - if (parameters == null) - { - throw new ArgumentNullException(nameof(parameters)); - } - - if (string.IsNullOrWhiteSpace(correlationIdentifier)) - { - throw new ArgumentNullException(nameof(correlationIdentifier)); - } - - if (string.IsNullOrEmpty(parameters?.ResourceIdentifier?.Identifier)) - { - throw new ArgumentNullException(nameof(parameters)); - } - - Resource result = null; - string identifier = parameters.ResourceIdentifier.Identifier; - - if (this.storage.Users.ContainsKey(identifier)) - { - if (this.storage.Users.TryGetValue(identifier, out Core2EnterpriseUser user)) - { - result = user as Resource; - return Task.FromResult(result); - } - } - - throw new HttpResponseException(HttpStatusCode.NotFound); - } - - public override Task UpdateAsync(IPatch patch, string correlationIdentifier) - { - if (null == patch) - { - throw new ArgumentNullException(nameof(patch)); - } - - if (null == patch.ResourceIdentifier) - { - throw new ArgumentException(SampleServiceResources.ExceptionInvalidPatch); - } - - if (string.IsNullOrWhiteSpace(patch.ResourceIdentifier.Identifier)) - { - throw new ArgumentException(SampleServiceResources.ExceptionInvalidPatch); - } - - if (null == patch.PatchRequest) - { - throw new ArgumentException(SampleServiceResources.ExceptionInvalidPatch); - } - - PatchRequest2 patchRequest = - patch.PatchRequest as PatchRequest2; - - if (null == patchRequest) - { - string unsupportedPatchTypeName = patch.GetType().FullName; - throw new NotSupportedException(unsupportedPatchTypeName); - } - - if (this.storage.Users.TryGetValue(patch.ResourceIdentifier.Identifier, out Core2EnterpriseUser user)) - { - user.Apply(patchRequest); - } - else - { - throw new HttpResponseException(HttpStatusCode.NotFound); - } - - return Task.CompletedTask; - } - } -} diff --git a/Microsoft.SCIM.Sample/Microsoft.SCIM.Sample.csproj b/Microsoft.SCIM.Sample/Microsoft.SCIM.Sample.csproj deleted file mode 100644 index 86f590d8..00000000 --- a/Microsoft.SCIM.Sample/Microsoft.SCIM.Sample.csproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - netcoreapp3.1 - - - - DEBUG - - - - - - - diff --git a/Microsoft.SCIM.Sample/Properties/SampleServiceResources.Designer.cs b/Microsoft.SCIM.Sample/Properties/SampleServiceResources.Designer.cs deleted file mode 100644 index 1e4ab2c1..00000000 --- a/Microsoft.SCIM.Sample/Properties/SampleServiceResources.Designer.cs +++ /dev/null @@ -1,109 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Microsoft.SCIM.Sample.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class SampleServiceResources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal SampleServiceResources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.SystemForCrossDomainIdentityManagement.Sample.Properties.SampleServiceR" + - "esources", typeof(SampleServiceResources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized string similar to Invalid parameters.. - /// - internal static string ExceptionInvalidParameters { - get { - return ResourceManager.GetString("ExceptionInvalidParameters", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Invalid patch.. - /// - internal static string ExceptionInvalidPatch { - get { - return ResourceManager.GetString("ExceptionInvalidPatch", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The comparison operator is not supported. The only supported operator is 'eq'.. - /// - internal static string UnsupportedComparisonOperator { - get { - return ResourceManager.GetString("UnsupportedComparisonOperator", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The filter attribute is not supported. The supported filter attributes are displayName and externalId.. - /// - internal static string UnsupportedFilterAttributeGroup { - get { - return ResourceManager.GetString("UnsupportedFilterAttributeGroup", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The filter attribute is not supported. The supported filter attributes are userName and externalId.. - /// - internal static string UnsupportedFilterAttributeUser { - get { - return ResourceManager.GetString("UnsupportedFilterAttributeUser", resourceCulture); - } - } - } -} diff --git a/Microsoft.SCIM.Sample/Properties/SampleServiceResources.resx b/Microsoft.SCIM.Sample/Properties/SampleServiceResources.resx deleted file mode 100644 index 3ec37902..00000000 --- a/Microsoft.SCIM.Sample/Properties/SampleServiceResources.resx +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Invalid parameters. - - - Invalid patch. - - - The comparison operator is not supported. The only supported operator is 'eq'. - - - The filter attribute is not supported. The supported filter attributes are displayName and externalId. - - - The filter attribute is not supported. The supported filter attributes are userName and externalId. - - \ No newline at end of file diff --git a/Microsoft.SCIM.Sample/Startup.cs b/Microsoft.SCIM.Sample/Startup.cs deleted file mode 100644 index aba08a01..00000000 --- a/Microsoft.SCIM.Sample/Startup.cs +++ /dev/null @@ -1,37 +0,0 @@ -//------------------------------------------------------------ -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------ - -#pragma warning disable IDE0065 // Misplaced using directive -#pragma warning restore IDE0065 // Misplaced using directive - -namespace Microsoft.SCIM.Sample -{ - using System; - using Microsoft.SCIM; - - public class Startup - { - private const string baseAddress = "http://localhost:20000"; - - static void Main() - { - Service service = new ServiceProvider(); - service.Start(new Uri(Startup.baseAddress)); - - Console.ReadKey(true); - } - } - - internal class ServiceProvider : Service - { - public override IMonitor MonitoringBehavior { get; set; } - public override IProvider ProviderBehavior { get; set; } - - public ServiceProvider() - { - this.MonitoringBehavior = new ConsoleMonitor(); - this.ProviderBehavior = new InMemoryProvider(); - } - } -} diff --git a/Microsoft.SCIM.WebHostSample/.config/dotnet-tools.json b/Microsoft.SCIM.WebHostSample/.config/dotnet-tools.json new file mode 100644 index 00000000..56e0950c --- /dev/null +++ b/Microsoft.SCIM.WebHostSample/.config/dotnet-tools.json @@ -0,0 +1,12 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "dotnet-ef": { + "version": "3.1.2", + "commands": [ + "dotnet-ef" + ] + } + } +} \ No newline at end of file diff --git a/Microsoft.SCIM.sln b/Microsoft.SCIM.sln index a0dcf760..fff9b0ca 100644 --- a/Microsoft.SCIM.sln +++ b/Microsoft.SCIM.sln @@ -5,9 +5,7 @@ VisualStudioVersion = 16.0.29709.97 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.SCIM", "Microsoft.SystemForCrossDomainIdentityManagement\Microsoft.SCIM.csproj", "{C9ED6410-1995-4B98-AD57-C02D5F16631C}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.SCIM.Sample", "Microsoft.SCIM.Sample\Microsoft.SCIM.Sample.csproj", "{06220587-471C-4AB0-BBB6-F1D9E35DBDDF}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.SCIM.WebHostSample", "Microsoft.SCIM.WebHostSample\Microsoft.SCIM.WebHostSample.csproj", "{238F1B05-D3EE-4AB4-871E-ADEA0A1665CF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.SCIM.WebHostSample", "Microsoft.SCIM.WebHostSample\Microsoft.SCIM.WebHostSample.csproj", "{238F1B05-D3EE-4AB4-871E-ADEA0A1665CF}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -19,10 +17,6 @@ Global {C9ED6410-1995-4B98-AD57-C02D5F16631C}.Debug|Any CPU.Build.0 = Debug|Any CPU {C9ED6410-1995-4B98-AD57-C02D5F16631C}.Release|Any CPU.ActiveCfg = Release|Any CPU {C9ED6410-1995-4B98-AD57-C02D5F16631C}.Release|Any CPU.Build.0 = Release|Any CPU - {06220587-471C-4AB0-BBB6-F1D9E35DBDDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {06220587-471C-4AB0-BBB6-F1D9E35DBDDF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {06220587-471C-4AB0-BBB6-F1D9E35DBDDF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {06220587-471C-4AB0-BBB6-F1D9E35DBDDF}.Release|Any CPU.Build.0 = Release|Any CPU {238F1B05-D3EE-4AB4-871E-ADEA0A1665CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {238F1B05-D3EE-4AB4-871E-ADEA0A1665CF}.Debug|Any CPU.Build.0 = Debug|Any CPU {238F1B05-D3EE-4AB4-871E-ADEA0A1665CF}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/Microsoft.SystemForCrossDomainIdentityManagement/Service/Service.cs b/Microsoft.SystemForCrossDomainIdentityManagement/Service/Service.cs deleted file mode 100644 index 9d1c3632..00000000 --- a/Microsoft.SystemForCrossDomainIdentityManagement/Service/Service.cs +++ /dev/null @@ -1,76 +0,0 @@ -//------------------------------------------------------------ -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------ - -namespace Microsoft.SCIM -{ - using System; - using System.IO; - using Microsoft.AspNetCore.Hosting; - using Microsoft.Extensions.DependencyInjection; - - public abstract class Service : IDisposable - { - private readonly object thisLock = new object(); - private IDisposable webHost; - - public abstract IMonitor MonitoringBehavior { get; set; } - public abstract IProvider ProviderBehavior { get; set; } - - public void Dispose() - { - this.Dispose(true); - GC.SuppressFinalize(this); - } - - protected virtual void Dispose(bool disposing) - { - if (this.webHost != null) - { - lock (this.thisLock) - { - if (this.webHost != null) - { - this.webHost.Dispose(); - this.webHost = null; - } - } - } - } - - public void Start(Uri baseAddress) - { - if (null == baseAddress) - { - throw new ArgumentNullException(nameof(baseAddress)); - } - - if (null == this.ProviderBehavior) - { - throw new InvalidOperationException(SystemForCrossDomainIdentityManagementServiceResources.ExceptionNotInitializedProviderBehavior); - } - - if (null == this.MonitoringBehavior) - { - throw new InvalidOperationException(SystemForCrossDomainIdentityManagementServiceResources.ExceptionNotInitializedMonitoringBehavior); - } - - lock (this.thisLock) - { - IWebHost host = - new WebHostBuilder() - .UseKestrel() - .UseContentRoot(Directory.GetCurrentDirectory()) - .ConfigureServices(services => - { - services.AddSingleton(typeof(IProvider), this.ProviderBehavior); - services.AddSingleton(typeof(IMonitor), this.MonitoringBehavior); - }) - .UseStartup() - .Build(); - - host.Run(); - } - } - } -} diff --git a/Microsoft.SystemForCrossDomainIdentityManagement/Service/WebApplicationStarter.cs b/Microsoft.SystemForCrossDomainIdentityManagement/Service/WebApplicationStarter.cs deleted file mode 100644 index 5bb4ff02..00000000 --- a/Microsoft.SystemForCrossDomainIdentityManagement/Service/WebApplicationStarter.cs +++ /dev/null @@ -1,67 +0,0 @@ -//---------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -//---------------------------------------------------------------- - -namespace Microsoft.SCIM -{ - using System; - using System.Text; - using Microsoft.AspNetCore.Authentication.JwtBearer; - using Microsoft.AspNetCore.Builder; - using Microsoft.AspNetCore.Routing; - using Microsoft.Extensions.Configuration; - using Microsoft.Extensions.DependencyInjection; - using Microsoft.IdentityModel.Tokens; - - public class WebApplicationStarter - { - public WebApplicationStarter(IConfiguration configuration) - { - this.Configuration = configuration; - } - - public IConfiguration Configuration { get; } - - public static void ConfigureServices(IServiceCollection services) - { - services.AddAuthentication(options => - { - options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; - options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; - options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; - }) - .AddJwtBearer(options => - { - options.TokenValidationParameters = - new TokenValidationParameters - { - ValidateIssuer = false, - ValidateAudience = false, - ValidateLifetime = false, - ValidateIssuerSigningKey = false, - ValidIssuer = ServiceConstants.TokenIssuer, - ValidAudience = ServiceConstants.TokenAudience, - IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(ServiceConstants.TokenIssuer)) - }; - }); - - services.AddControllers().AddNewtonsoftJson(); - } - - public static void Configure(IApplicationBuilder applicationBuilder) - { - applicationBuilder.UseHsts(); - - applicationBuilder.UseRouting(); - //app.UseHttpsRedirection(); - //app.UseAuthentication(); - //app.UseAuthorization(); - - applicationBuilder.UseEndpoints( - (IEndpointRouteBuilder endpoints) => - { - endpoints.MapDefaultControllerRoute(); - }); - } - } -}