예제 #1
0
 public SspAuthorizationMiddleware(RequestDelegate next, IOptions <SpineSetting> spineSettings, IMemoryCache memoryCache, INrlsValidation nrlsValidation)
 {
     _next           = next;
     _spineSettings  = spineSettings.Value;
     _cache          = memoryCache;
     _nrlsValidation = nrlsValidation;
 }
예제 #2
0
        public SpineAuthorizationTests()
        {
            var spineSettings = new SpineSetting
            {
                Asid = "999"
            };

            var spineSettingsMock = new Mock <IOptions <SpineSetting> >();

            spineSettingsMock.Setup(op => op.Value).Returns(spineSettings);

            var nrlsSettingsMock = new Mock <IOptionsSnapshot <NrlsApiSetting> >();

            nrlsSettingsMock.Setup(op => op.Get(It.IsAny <string>())).Returns(AppSettings.NrlsApiSettings);


            var nrlsValidationMock = new Mock <INrlsValidation>();

            nrlsValidationMock.Setup(x => x.ValidJwt(It.Is <Tuple <JwtScopes, string> >(q => q.Item1 == JwtScopes.Read), It.IsAny <string>())).Returns(new Response(true));
            nrlsValidationMock.Setup(x => x.ValidJwt(It.Is <Tuple <JwtScopes, string> >(q => q.Item1 == JwtScopes.Write), It.IsAny <string>())).Returns(new Response());
            nrlsValidationMock.Setup(x => x.ValidJwt(It.Is <Tuple <JwtScopes, string> >(q => q.Item1 == JwtScopes.Write), It.Is <string>(s => s.Contains("-for-patch")))).Returns(new Response(true));

            var sdsMock = new Mock <ISdsService>();

            sdsMock.Setup(op => op.GetFor(It.IsAny <string>())).Returns((SdsViewModel)null);
            sdsMock.Setup(op => op.GetFor(It.Is <string>(x => x == "000"))).Returns(SdsViewModels.SdsAsid000);
            sdsMock.Setup(op => op.GetFor(It.Is <string>(x => x == "002"))).Returns(SdsViewModels.SdsAsid002);
            sdsMock.Setup(op => op.GetFor(It.Is <string>(x => x == "20000000018"))).Returns(SdsViewModels.SdsAsid20000000018);

            _sdsService     = sdsMock.Object;
            _spineSettings  = spineSettingsMock.Object;
            _nrlsSettings   = nrlsSettingsMock.Object;
            _nrlsValidation = nrlsValidationMock.Object;
        }
 public SpineAuthorizationMiddleware(RequestDelegate next, IOptions <SpineSetting> spineSettings, ISdsService sdsService, INrlsValidation nrlsValidation)
 {
     _next           = next;
     _spineSettings  = spineSettings.Value;
     _sdsService     = sdsService;
     _nrlsValidation = nrlsValidation;
 }
        public static IWebHost BuildWebHost(string[] args)
        {
            var config = ConfigurationHelper.GetConfigurationRoot();

            _spineSettings = new SpineSetting();
            config.GetSection("Spine").Bind(_spineSettings);

            NrlsApiSetting apiSettings = new NrlsApiSetting();

            config.GetSection("NRLSAPI").Bind(apiSettings);

            return(WebHost.CreateDefaultBuilder(args)
                   .UseKestrel(options =>
            {
                options.AddServerHeader = false;
                // if we use the apiSettings.Secure flag we can toggle the below
                // for demo we will leave both open

                // listen for HTTP
                if (!apiSettings.SecureOnly)
                {
                    options.Listen(IPAddress.Any, int.Parse(apiSettings.DefaultPort));
                }

                // listen for HTTPS
                if (apiSettings.Secure)
                {
                    var certificate = ServerCertificate();

                    if (certificate != null)
                    {
                        options.Listen(IPAddress.Any, int.Parse(apiSettings.SecurePort), listenOptions =>
                        {
                            listenOptions.UseHttps(new HttpsConnectionAdapterOptions
                            {
                                SslProtocols = SslProtocols.Tls12,
                                CheckCertificateRevocation = false,     //TODO: turn this on
                                ClientCertificateMode = ClientCertificateMode.AllowCertificate,
                                ServerCertificate = certificate,
                                ClientCertificateValidation = (cert, chain, error) => ValidateClient(cert, chain, error)
                            });
                        });
                    }
                }
            })
                   //.ConfigureLogging((hostingContext, logging) => {
                   //    logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
                   //    logging.AddConsole();
                   //    logging.AddDebug();
                   //})
                   .UseStartup <Startup>()
                   .Build());
        }
예제 #5
0
        public SspAuthorizationTests()
        {
            var spineSettings = new SpineSetting
            {
                Asid = "999"
            };

            var spineSettingsMock = new Mock <IOptions <SpineSetting> >();

            spineSettingsMock.Setup(op => op.Value).Returns(spineSettings);

            var nrlsSettingsMock = new Mock <IOptionsSnapshot <NrlsApiSetting> >();

            nrlsSettingsMock.Setup(op => op.Get(It.IsAny <string>())).Returns(AppSettings.NrlsApiSettings);


            var nrlsValidationMock = new Mock <INrlsValidation>();

            nrlsValidationMock.Setup(x => x.ValidJwt(It.Is <JwtScopes>(q => q == JwtScopes.Read), It.IsAny <string>())).Returns(new Response(true));
            nrlsValidationMock.Setup(x => x.ValidJwt(It.Is <JwtScopes>(q => q == JwtScopes.Write), It.IsAny <string>())).Returns(new Response());

            var clientMapCache = new ClientAsidMap
            {
                ClientAsids = new Dictionary <string, ClientAsid>()
                {
                    { "000", new ClientAsid {
                          Interactions = new List <string> {
                              "urn:nhs:names:services:nrls:fhir:rest:read:documentreference"
                          }, OrgCode = "TestOrgCode", Thumbprint = "TestThumbprint"
                      } },
                    { "002", new ClientAsid {
                          Interactions = new List <string>(), OrgCode = "TestOrgCode2", Thumbprint = "TestThumbprint"
                      } }
                }
            };

            _cache = MemoryCacheStub.MockMemoryCacheService.GetMemoryCache(clientMapCache);

            _spineSettings  = spineSettingsMock.Object;
            _nrlsSettings   = nrlsSettingsMock.Object;
            _nrlsValidation = nrlsValidationMock.Object;
        }
예제 #6
0
 public ClientInteractionCacheMiddleware(RequestDelegate next, IOptions <SpineSetting> spineSettings, IMemoryCache memoryCache)
 {
     _next          = next;
     _spineSettings = spineSettings.Value;
     _cache         = memoryCache;
 }