Beispiel #1
0
        public static void ImportDiscoveries()
        {
            XDocument xmlDoc      = LoadXmlFile("discoveries");
            var       discoveries = xmlDoc.Root.Elements();

            List <DiscoveryDto> discoveriesDto = new List <DiscoveryDto>();

            foreach (XElement discovery in discoveries)
            {
                var discoveryDto = new DiscoveryDto()
                {
                    DateMade  = discovery.Attribute("DateMade")?.Value,
                    Telescope = discovery.Attribute("Telescope")?.Value,
                    Stars     = discovery.Element("Stars")
                                .Elements()
                                .Select(e => e?.Value)
                                .ToList(),
                    Planets = discovery.Element("Planets")
                              .Elements()
                              .Select(e => e?.Value)
                              .ToList(),
                    Pioneers = discovery.Element("Pioneers")
                               .Elements()
                               .Select(e => e?.Value)
                               .ToList(),
                    Observers = discovery.Element("Observers")
                                .Elements()
                                .Select(e => e?.Value)
                                .ToList()
                };
                discoveriesDto.Add(discoveryDto);
            }

            DiscoveryStore.AddDiscoveries(discoveriesDto);
        }
Beispiel #2
0
        //public async Task Transfer(DiscoveryDto transferDto)
        //{
        //    try
        //    {
        //        var uri = "https://localhost:44357/api/Banking";
        //        var transferContent = new StringContent(JsonConvert.SerializeObject(transferDto),
        //                                        System.Text.Encoding.UTF8, "application/json");
        //        var response = await _apiClient.PostAsync(uri, transferContent);
        //        response.EnsureSuccessStatusCode();
        //    }
        //    catch (Exception ex)
        //    {

        //        throw;
        //    }
        //}


        public async Task Discovery(DiscoveryDto transferDto)
        {
            try
            {
                var uri = "https://localhost:44357/api/Discovery";

                for (int i = 0; i < transferDto.noOfAssetScanReq; i++)
                {
                    var discoveryInfo = new DiscoveryInfo()
                    {
                        Id = Guid.NewGuid().ToString(), ScanType = "Asset"
                    };

                    var transferContent = new StringContent(JsonConvert.SerializeObject(discoveryInfo),
                                                            System.Text.Encoding.UTF8, "application/json");
                    var response = await _apiClient.PostAsync(uri, transferContent);

                    response.EnsureSuccessStatusCode();
                }

                for (int i = 0; i < transferDto.noOfAccountScanReq; i++)
                {
                    var discoveryInfo = new DiscoveryInfo()
                    {
                        Id = Guid.NewGuid().ToString(), ScanType = "Account"
                    };

                    var transferContent = new StringContent(JsonConvert.SerializeObject(discoveryInfo),
                                                            System.Text.Encoding.UTF8, "application/json");
                    var response = await _apiClient.PostAsync(uri, transferContent);

                    response.EnsureSuccessStatusCode();
                }

                for (int i = 0; i < transferDto.noOfBothScanReq; i++)
                {
                    var discoveryInfo = new DiscoveryInfo()
                    {
                        Id = Guid.NewGuid().ToString(), ScanType = "Both"
                    };

                    var transferContent = new StringContent(JsonConvert.SerializeObject(discoveryInfo),
                                                            System.Text.Encoding.UTF8, "application/json");
                    var response = await _apiClient.PostAsync(uri, transferContent);

                    response.EnsureSuccessStatusCode();
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        //public async Task<IActionResult> Transfer(TransferViewModel model)
        //{
        //    TransferDto transferDto = new TransferDto()
        //    {
        //        FromAccount = model.FromAccount,
        //        ToAccount = model.ToAccount,
        //        TransferAmount = model.TransferAmount
        //    };

        //    await _transferService.Transfer(transferDto);

        //    return View("Index");
        //}

        public async Task <IActionResult> Discovery(DiscoveryViewModel model)
        {
            DiscoveryDto transferDto = new DiscoveryDto()
            {
                noOfAccountScanReq = model.noOfAccountScanReq,
                noOfAssetScanReq   = model.noOfAssetScanReq,
                noOfBothScanReq    = model.noOfBothScanReq
            };

            await _transferService.Discovery(transferDto);

            return(View("Index"));
        }
        private static ICollection <Planet> GetPlanets(DiscoveryDto discovery, PlanetHuntersContext context)
        {
            var planets = new HashSet <Planet>();

            foreach (var planet in discovery.Planets)
            {
                var currPlanet = PlanetStore.GetPlanetByName(planet, context);
                if (currPlanet != null)
                {
                    planets.Add(currPlanet);
                }
            }

            return(planets);
        }
        private static ICollection <Star> GetStars(DiscoveryDto discovery, PlanetHuntersContext context)
        {
            var stars = new HashSet <Star>();

            foreach (var star in discovery.Stars)
            {
                var currStar = StarStore.GetStarByName(star, context);
                if (currStar != null)
                {
                    stars.Add(currStar);
                }
            }

            return(stars);
        }
        public async Task <IHttpActionResult> GetConfiguration()
        {
            Logger.Info("Start discovery request");

            if (!_options.Endpoints.EnableDiscoveryEndpoint)
            {
                Logger.Warn("Endpoint is disabled. Aborting");
                return(NotFound());
            }

            var baseUrl = Request.GetIdentityServerBaseUrl();
            var scopes  = await _scopes.GetScopesAsync(publicOnly : true);

            var claims = new List <string>();

            foreach (var s in scopes)
            {
                claims.AddRange(from c in s.Claims
                                where s.Type == ScopeType.Identity
                                select c.Name);
            }

            var supportedGrantTypes = Constants.SupportedGrantTypes.AsEnumerable();

            if (this._options.AuthenticationOptions.EnableLocalLogin == false)
            {
                supportedGrantTypes = supportedGrantTypes.Where(type => type != Constants.GrantTypes.Password);
            }

            var dto = new DiscoveryDto
            {
                issuer                   = _options.IssuerUri,
                scopes_supported         = scopes.Where(s => s.ShowInDiscoveryDocument).Select(s => s.Name).ToArray(),
                claims_supported         = claims.Distinct().ToArray(),
                response_types_supported = Constants.SupportedResponseTypes.ToArray(),
                response_modes_supported = Constants.SupportedResponseModes.ToArray(),
                grant_types_supported    = supportedGrantTypes.ToArray(),
                subject_types_supported  = new[] { "public" },
                id_token_signing_alg_values_supported = new[] { Constants.SigningAlgorithms.RSA_SHA_256 },
                token_endpoint_auth_methods_supported = new[] { Constants.TokenEndpointAuthenticationMethods.PostBody, Constants.TokenEndpointAuthenticationMethods.BasicAuthentication }
            };

            if (_options.Endpoints.EnableAuthorizeEndpoint)
            {
                dto.authorization_endpoint = baseUrl + Constants.RoutePaths.Oidc.Authorize;
            }

            if (_options.Endpoints.EnableTokenEndpoint)
            {
                dto.token_endpoint = baseUrl + Constants.RoutePaths.Oidc.Token;
            }

            if (_options.Endpoints.EnableUserInfoEndpoint)
            {
                dto.userinfo_endpoint = baseUrl + Constants.RoutePaths.Oidc.UserInfo;
            }

            if (_options.Endpoints.EnableEndSessionEndpoint)
            {
                dto.end_session_endpoint = baseUrl + Constants.RoutePaths.Oidc.EndSession;
            }

            if (_options.Endpoints.EnableCheckSessionEndpoint)
            {
                dto.check_session_iframe = baseUrl + Constants.RoutePaths.Oidc.CheckSession;
            }

            if (_options.Endpoints.EnableTokenRevocationEndpoint)
            {
                dto.revocation_endpoint = baseUrl + Constants.RoutePaths.Oidc.Revocation;
            }

            if (_options.SigningCertificate != null)
            {
                dto.jwks_uri = baseUrl + Constants.RoutePaths.Oidc.DiscoveryWebKeys;
            }

            return(Json(dto, Settings));
        }
Beispiel #7
0
        public async Task <IHttpActionResult> GetConfiguration()
        {
            Logger.Info("Start discovery request");

            var baseUrl   = Request.GetIdentityServerBaseUrl();
            var allScopes = await _scopes.GetScopesAsync(publicOnly : true);

            var showScopes = new List <Scope>();

            var dto = new DiscoveryDto
            {
                issuer = _context.GetIdentityServerIssuerUri(),
                subject_types_supported = new[] { "public" },
                id_token_signing_alg_values_supported = new[] { Constants.SigningAlgorithms.RSA_SHA_256 }
            };

            // scopes
            if (_options.DiscoveryOptions.ShowIdentityScopes)
            {
                showScopes.AddRange(allScopes.Where(s => s.Type == ScopeType.Identity));
            }
            if (_options.DiscoveryOptions.ShowResourceScopes)
            {
                showScopes.AddRange(allScopes.Where(s => s.Type == ScopeType.Resource));
            }

            if (showScopes.Any())
            {
                dto.scopes_supported = showScopes.Where(s => s.ShowInDiscoveryDocument).Select(s => s.Name).ToArray();
            }

            // claims
            if (_options.DiscoveryOptions.ShowClaims)
            {
                var claims = new List <string>();
                foreach (var s in allScopes)
                {
                    claims.AddRange(from c in s.Claims
                                    where s.Type == ScopeType.Identity
                                    select c.Name);
                }

                dto.claims_supported = claims.Distinct().ToArray();
            }

            // grant types
            if (_options.DiscoveryOptions.ShowGrantTypes)
            {
                var standardGrantTypes = Constants.SupportedGrantTypes.AsEnumerable();
                if (this._options.AuthenticationOptions.EnableLocalLogin == false)
                {
                    standardGrantTypes = standardGrantTypes.Where(type => type != Constants.GrantTypes.Password);
                }

                var showGrantTypes = new List <string>(standardGrantTypes);

                if (_options.DiscoveryOptions.ShowCustomGrantTypes)
                {
                    showGrantTypes.AddRange(_customGrants.GetAvailableGrantTypes());
                }

                dto.grant_types_supported = showGrantTypes.ToArray();
            }

            // response types
            if (_options.DiscoveryOptions.ShowResponseTypes)
            {
                dto.response_types_supported = Constants.SupportedResponseTypes.ToArray();
            }

            // response modes
            if (_options.DiscoveryOptions.ShowResponseModes)
            {
                dto.response_modes_supported = Constants.SupportedResponseModes.ToArray();
            }

            // token endpoint authentication methods
            if (_options.DiscoveryOptions.ShowTokenEndpointAuthenticationMethods)
            {
                dto.token_endpoint_auth_methods_supported = new[] { Constants.TokenEndpointAuthenticationMethods.PostBody, Constants.TokenEndpointAuthenticationMethods.BasicAuthentication };
            }

            // endpoints
            if (_options.DiscoveryOptions.ShowEndpoints)
            {
                if (_options.Endpoints.EnableEndSessionEndpoint)
                {
                    dto.http_logout_supported = true;
                }

                if (_options.Endpoints.EnableAuthorizeEndpoint)
                {
                    dto.authorization_endpoint = baseUrl + Constants.RoutePaths.Oidc.Authorize;
                }

                if (_options.Endpoints.EnableTokenEndpoint)
                {
                    dto.token_endpoint = baseUrl + Constants.RoutePaths.Oidc.Token;
                }

                if (_options.Endpoints.EnableUserInfoEndpoint)
                {
                    dto.userinfo_endpoint = baseUrl + Constants.RoutePaths.Oidc.UserInfo;
                }

                if (_options.Endpoints.EnableEndSessionEndpoint)
                {
                    dto.end_session_endpoint = baseUrl + Constants.RoutePaths.Oidc.EndSession;
                }

                if (_options.Endpoints.EnableCheckSessionEndpoint)
                {
                    dto.check_session_iframe = baseUrl + Constants.RoutePaths.Oidc.CheckSession;
                }

                if (_options.Endpoints.EnableTokenRevocationEndpoint)
                {
                    dto.revocation_endpoint = baseUrl + Constants.RoutePaths.Oidc.Revocation;
                }

                if (_options.Endpoints.EnableIntrospectionEndpoint)
                {
                    dto.introspection_endpoint = baseUrl + Constants.RoutePaths.Oidc.Introspection;
                }
            }

            if (_options.DiscoveryOptions.ShowKeySet)
            {
                if (_options.SigningCertificate != null)
                {
                    dto.jwks_uri = baseUrl + Constants.RoutePaths.Oidc.DiscoveryWebKeys;
                }
            }

            var jobject = JObject.FromObject(dto);

            // custom entries
            if (_options.DiscoveryOptions.CustomEntries != null && _options.DiscoveryOptions.CustomEntries.Any())
            {
                foreach (var item in _options.DiscoveryOptions.CustomEntries)
                {
                    JToken token;
                    if (jobject.TryGetValue(item.Key, out token))
                    {
                        throw new Exception("Item does already exist - cannot add it via a custom entry: " + item.Key);
                    }

                    jobject.Add(new JProperty(item.Key, item.Value));
                }
            }

            return(Content(HttpStatusCode.OK, jobject));
        }
        public async Task<IHttpActionResult> GetConfiguration()
        {
            Logger.Info("Start discovery request");

            var baseUrl = Request.GetIdentityServerBaseUrl();
            var allScopes = await _scopes.GetScopesAsync(publicOnly: true);
            var showScopes = new List<Scope>();

            var dto = new DiscoveryDto
            {
                issuer = _context.GetIdentityServerIssuerUri(),
                subject_types_supported = new[] { "public" },
                id_token_signing_alg_values_supported = new[] { Constants.SigningAlgorithms.RSA_SHA_256 },
                code_challenge_methods_supported = new[] { Constants.CodeChallengeMethods.Plain, Constants.CodeChallengeMethods.SHA_256 }
            };
            
            // scopes
            if (_options.DiscoveryOptions.ShowIdentityScopes)
            {
                showScopes.AddRange(allScopes.Where(s => s.Type == ScopeType.Identity));
            }
            if (_options.DiscoveryOptions.ShowResourceScopes)
            {
                showScopes.AddRange(allScopes.Where(s => s.Type == ScopeType.Resource));
            }

            if (showScopes.Any())
            {
                dto.scopes_supported = showScopes.Where(s => s.ShowInDiscoveryDocument).Select(s => s.Name).ToArray();
            }

            // claims
            if (_options.DiscoveryOptions.ShowClaims)
            {
                var claims = new List<string>();
                foreach (var s in allScopes)
                {
                    claims.AddRange(from c in s.Claims
                                    where s.Type == ScopeType.Identity
                                    select c.Name);
                }

                dto.claims_supported = claims.Distinct().ToArray();
            }

            // grant types
            if (_options.DiscoveryOptions.ShowGrantTypes)
            {
                var standardGrantTypes = Constants.SupportedGrantTypes.AsEnumerable();
                if (this._options.AuthenticationOptions.EnableLocalLogin == false)
                {
                    standardGrantTypes = standardGrantTypes.Where(type => type != Constants.GrantTypes.Password);
                }

                var showGrantTypes = new List<string>(standardGrantTypes);

                if (_options.DiscoveryOptions.ShowCustomGrantTypes)
                {
                    showGrantTypes.AddRange(_customGrants.GetAvailableGrantTypes());
                }

                dto.grant_types_supported = showGrantTypes.ToArray();
            }

            // response types
            if (_options.DiscoveryOptions.ShowResponseTypes)
            {
                dto.response_types_supported = Constants.SupportedResponseTypes.ToArray();
            }

            // response modes
            if (_options.DiscoveryOptions.ShowResponseModes)
            {
                dto.response_modes_supported = Constants.SupportedResponseModes.ToArray();
            }

            // token endpoint authentication methods
            if (_options.DiscoveryOptions.ShowTokenEndpointAuthenticationMethods)
            {
                dto.token_endpoint_auth_methods_supported = new[] { Constants.TokenEndpointAuthenticationMethods.PostBody, Constants.TokenEndpointAuthenticationMethods.BasicAuthentication };
            }

            // endpoints
            if (_options.DiscoveryOptions.ShowEndpoints)
            {
                if (_options.Endpoints.EnableEndSessionEndpoint)
                {
                    dto.frontchannel_logout_supported = true;
                    dto.frontchannel_logout_session_supported = true;
                }

                if (_options.Endpoints.EnableAuthorizeEndpoint)
                {
                    dto.authorization_endpoint = baseUrl + Constants.RoutePaths.Oidc.Authorize;
                }

                if (_options.Endpoints.EnableTokenEndpoint)
                {
                    dto.token_endpoint = baseUrl + Constants.RoutePaths.Oidc.Token;
                }

                if (_options.Endpoints.EnableUserInfoEndpoint)
                {
                    dto.userinfo_endpoint = baseUrl + Constants.RoutePaths.Oidc.UserInfo;
                }

                if (_options.Endpoints.EnableEndSessionEndpoint)
                {
                    dto.end_session_endpoint = baseUrl + Constants.RoutePaths.Oidc.EndSession;
                }

                if (_options.Endpoints.EnableCheckSessionEndpoint)
                {
                    dto.check_session_iframe = baseUrl + Constants.RoutePaths.Oidc.CheckSession;
                }

                if (_options.Endpoints.EnableTokenRevocationEndpoint)
                {
                    dto.revocation_endpoint = baseUrl + Constants.RoutePaths.Oidc.Revocation;
                }

                if (_options.Endpoints.EnableIntrospectionEndpoint)
                {
                    dto.introspection_endpoint = baseUrl + Constants.RoutePaths.Oidc.Introspection;
                }
            }

            if (_options.DiscoveryOptions.ShowKeySet)
            {
                if (_options.SigningCertificate != null)
                {
                    dto.jwks_uri = baseUrl + Constants.RoutePaths.Oidc.DiscoveryWebKeys;
                }
            }

            var jobject = JObject.FromObject(dto, Serializer);

            // custom entries
            if (_options.DiscoveryOptions.CustomEntries != null && _options.DiscoveryOptions.CustomEntries.Any())
            {
                foreach (var item in _options.DiscoveryOptions.CustomEntries)
                {
                    JToken token;
                    if (jobject.TryGetValue(item.Key, out token))
                    {
                        throw new Exception("Item does already exist - cannot add it via a custom entry: " + item.Key);
                    }

                    jobject.Add(new JProperty(item.Key, item.Value));
                }
            }

            return Content(HttpStatusCode.OK, jobject);
        }
        public async Task<IHttpActionResult> GetConfiguration()
        {
            Logger.Info("Start discovery request");

            if (!_options.Endpoints.EnableDiscoveryEndpoint)
            {
                Logger.Warn("Endpoint is disabled. Aborting");
                return NotFound();
            }

            var baseUrl = Request.GetIdentityServerBaseUrl();
            var scopes = await _scopes.GetScopesAsync(publicOnly: true);

            var supportedGrantTypes = Constants.SupportedGrantTypes.AsEnumerable();
            if (this._options.AuthenticationOptions.EnableLocalLogin == false)
            {
                supportedGrantTypes = supportedGrantTypes.Where(type => type != Constants.GrantTypes.Password);
            }

            var dto = new DiscoveryDto
            {
                issuer = _options.IssuerUri,
                scopes_supported = scopes.Where(s => s.ShowInDiscoveryDocument).Select(s => s.Name).ToArray(),
                response_types_supported = Constants.SupportedResponseTypes.ToArray(),
                response_modes_supported = Constants.SupportedResponseModes.ToArray(),
                grant_types_supported = supportedGrantTypes.ToArray(),
                subject_types_supported = new[] { "public" },
                id_token_signing_alg_values_supported = new[] { Constants.SigningAlgorithms.RSA_SHA_256 }
            };

            if (_options.Endpoints.EnableAuthorizeEndpoint)
            {
                dto.authorization_endpoint = baseUrl + Constants.RoutePaths.Oidc.Authorize;
            }

            if (_options.Endpoints.EnableTokenEndpoint)
            {
                dto.token_endpoint = baseUrl + Constants.RoutePaths.Oidc.Token;
            }

            if (_options.Endpoints.EnableUserInfoEndpoint)
            {
                dto.userinfo_endpoint = baseUrl + Constants.RoutePaths.Oidc.UserInfo;
            }

            if (_options.Endpoints.EnableEndSessionEndpoint)
            {
                dto.end_session_endpoint = baseUrl + Constants.RoutePaths.Oidc.EndSession;
            }

            if (_options.Endpoints.EnableCheckSessionEndpoint)
            {
                dto.check_session_iframe = baseUrl + Constants.RoutePaths.Oidc.CheckSession;
            }

            if (_options.SigningCertificate != null)
            {
                dto.jwks_uri = baseUrl + Constants.RoutePaths.Oidc.DiscoveryWebKeys;
            }

            return Json(dto, Settings);
        }
        public async Task<IHttpActionResult> GetConfiguration()
        {
            Logger.Info("Start discovery request");

            var baseUrl = Request.GetIdentityServerBaseUrl();
            var scopes = await _scopes.GetScopesAsync(publicOnly: true);

            var claims = new List<string>();
            foreach (var s in scopes)
            {
                claims.AddRange(from c in s.Claims 
                                where s.Type == ScopeType.Identity 
                                select c.Name);
            }

            var supportedGrantTypes = Constants.SupportedGrantTypes.AsEnumerable();
            if (this._options.AuthenticationOptions.EnableLocalLogin == false)
            {
                supportedGrantTypes = supportedGrantTypes.Where(type => type != Constants.GrantTypes.Password);
            }

            var dto = new DiscoveryDto
            {
                issuer = _options.IssuerUri,
                scopes_supported = scopes.Where(s => s.ShowInDiscoveryDocument).Select(s => s.Name).ToArray(),
                claims_supported = claims.Distinct().ToArray(),
                response_types_supported = Constants.SupportedResponseTypes.ToArray(),
                response_modes_supported = Constants.SupportedResponseModes.ToArray(),
                grant_types_supported = supportedGrantTypes.ToArray(),
                subject_types_supported = new[] { "public" },
                id_token_signing_alg_values_supported = new[] { Constants.SigningAlgorithms.RSA_SHA_256 },
                token_endpoint_auth_methods_supported = new[] { Constants.TokenEndpointAuthenticationMethods.PostBody, Constants.TokenEndpointAuthenticationMethods.BasicAuthentication }
            };

            if (_options.Endpoints.EnableAuthorizeEndpoint)
            {
                dto.authorization_endpoint = baseUrl + Constants.RoutePaths.Oidc.Authorize;
            }

            if (_options.Endpoints.EnableTokenEndpoint)
            {
                dto.token_endpoint = baseUrl + Constants.RoutePaths.Oidc.Token;
            }

            if (_options.Endpoints.EnableUserInfoEndpoint)
            {
                dto.userinfo_endpoint = baseUrl + Constants.RoutePaths.Oidc.UserInfo;
            }

            if (_options.Endpoints.EnableEndSessionEndpoint)
            {
                dto.end_session_endpoint = baseUrl + Constants.RoutePaths.Oidc.EndSession;
            }

            if (_options.Endpoints.EnableCheckSessionEndpoint)
            {
                dto.check_session_iframe = baseUrl + Constants.RoutePaths.Oidc.CheckSession;
            }

            if (_options.Endpoints.EnableTokenRevocationEndpoint)
            {
                dto.revocation_endpoint = baseUrl + Constants.RoutePaths.Oidc.Revocation;
            }

            if (_options.SigningCertificate != null)
            {
                dto.jwks_uri = baseUrl + Constants.RoutePaths.Oidc.DiscoveryWebKeys;
            }

            return Json(dto, Settings);
        }