/// <summary> /// Rest definition creator /// </summary> private static RestDefinition CreateRestDefinition() { // Security settings String security = null; //var m_masterConfig = ApplicationServiceContext.Current.GetService<IConfigurationManager>().GetSection<RestConfigurationSection>(); //var authorizationPolicy = m_masterConfig.Services.FirstOrDefault(o => o.Name == "FHIR").Behaviors.Select(o => o.GetCustomAttribute<AuthenticationSchemeDescriptionAttribute>()).FirstOrDefault(o => o != null)?.Scheme; if (ApplicationServiceContext.Current.GetService <FhirMessageHandler>().Capabilities.HasFlag(ServiceEndpointCapabilities.BasicAuth)) { security = "Basic"; } if (ApplicationServiceContext.Current.GetService <FhirMessageHandler>().Capabilities.HasFlag(ServiceEndpointCapabilities.BearerAuth)) { security = "OAuth"; } var retVal = new RestDefinition() { Mode = "server", Documentation = "Default WCF REST Handler", Security = new SecurityDefinition() { Cors = true, Service = security == null ? null : new List <DataTypes.FhirCodeableConcept>() { new DataTypes.FhirCodeableConcept(new Uri("http://hl7.org/fhir/restful-security-service"), security) } }, Resource = FhirResourceHandlerUtil.GetRestDefinition().ToList() }; return(retVal); }
/// <summary> /// Rest definition creator /// </summary> private static RestComponent CreateRestDefinition() { // Security settings String security = null; //var m_masterConfig = ApplicationServiceContext.Current.GetService<IConfigurationManager>().GetSection<RestConfigurationSection>(); //var authorizationPolicy = m_masterConfig.Services.FirstOrDefault(o => o.Name == "FHIR").Behaviors.Select(o => o.GetCustomAttribute<AuthenticationSchemeDescriptionAttribute>()).FirstOrDefault(o => o != null)?.Scheme; if (ApplicationServiceContext.Current.GetService <FhirMessageHandler>().Capabilities.HasFlag(ServiceEndpointCapabilities.BasicAuth)) { security = "Basic"; } if (ApplicationServiceContext.Current.GetService <FhirMessageHandler>().Capabilities.HasFlag(ServiceEndpointCapabilities.BearerAuth)) { security = "OAuth"; } var retVal = new RestComponent() { Mode = RestfulCapabilityMode.Server, Documentation = new Markdown("SanteDB REST Instance"), Security = new SecurityComponent() { Cors = true, Service = security == null ? null : new List <CodeableConcept>() { new CodeableConcept("http://hl7.org/fhir/restful-security-service", security) } }, Resource = FhirResourceHandlerUtil.GetRestDefinition().ToList(), Operation = ExtensionUtil.OperationHandlers.Where(o => o.AppliesTo == null).Select(o => new OperationComponent() { Name = o.Name, Definition = o.Uri.ToString() }).ToList() }; foreach (var itm in retVal.Resource) { itm.Operation = ExtensionUtil.OperationHandlers.Where(o => o.AppliesTo?.Contains(itm.Type.Value) == true).Select(o => new OperationComponent() { Name = o.Name, Definition = o.Uri.ToString() }).ToList(); itm.SupportedProfile = ExtensionUtil.ProfileHandlers.Where(o => o.AppliesTo == null || o.AppliesTo.Contains(itm.Type.Value)).Select(o => o.ProfileUri.ToString()).ToList(); } return(retVal); }
/// <summary> /// Rest definition creator /// </summary> private static RestDefinition CreateRestDefinition() { // Security settings String security = null; var authorizationPolicy = OperationContext.Current.Host.Authorization.ExternalAuthorizationPolicies.Select(o => o.GetType().GetCustomAttribute <AuthenticationSchemeDescriptionAttribute>()?.Scheme)?.Where(o => o != null)?.FirstOrDefault(); if (authorizationPolicy.HasValue) { switch (authorizationPolicy.Value) { case AuthenticationScheme.Basic: security = "Basic"; break; case AuthenticationScheme.OAuth: case AuthenticationScheme.OAuth2: security = "OAuth"; break; case AuthenticationScheme.Custom: security = "SMART-on-FHIR"; break; } } var retVal = new RestDefinition() { Mode = "server", Documentation = "Default WCF REST Handler", Security = new SecurityDefinition() { Cors = true, Service = security == null ? null : new List <DataTypes.FhirCodeableConcept>() { new DataTypes.FhirCodeableConcept(new Uri("http://hl7.org/fhir/restful-security-service"), security) } }, Resource = FhirResourceHandlerUtil.GetRestDefinition().ToList() }; return(retVal); }