Пример #1
0
        private ConsentViewModel CreateConsentViewModel(
            string returnUrl,
            Client client,
            IdentityServer4.Models.Resources resources,
            ConsentInputModel model = null)
        {
            var vm = new ConsentViewModel
            {
                RememberConsent      = model?.RememberConsent ?? true,
                ScopesConsented      = model?.ScopesConsented ?? Enumerable.Empty <string>(),
                ReturnUrl            = returnUrl,
                ClientName           = client.ClientName,
                ClientUrl            = client.ClientUri,
                ClientLogoUrl        = client.LogoUri,
                AllowRememberConsent = client.AllowRememberConsent
            };

            vm.IdentityScopes = resources.IdentityResources.Select(x => CreateScopeViewModel(x, vm.ScopesConsented.Contains(x.Name) || model == null)).ToArray();
            vm.ResourceScopes = resources.ApiResources.SelectMany(x => x.Scopes).Select(x => CreateScopeViewModel(x, vm.ScopesConsented.Contains(x.Name) || model == null)).ToArray();
            if (ConsentOptions.EnableOfflineAccess && resources.OfflineAccess)
            {
                vm.ResourceScopes = vm.ResourceScopes.Union(new [] {
                    GetOfflineAccessScope(vm.ScopesConsented.Contains(IdentityServerConstants.StandardScopes.OfflineAccess) || model == null)
                });
            }

            return(vm);
        }
Пример #2
0
        private ConsentViewModel CreateConsentViewModel(
            ConsentInputModel model, string returnUrl,
            AuthorizationRequest request,
            Client client, IdentityServer4.Models.Resources resources)
        {
            var vm = new ConsentViewModel();

            vm.RememberConsent = model?.RememberConsent ?? true;
            vm.ScopesConsented = model?.ScopesConsented ?? Enumerable.Empty <string>();

            vm.ReturnUrl = returnUrl;

            vm.ClientName           = client.ClientName ?? client.ClientId;
            vm.ClientUrl            = client.ClientUri;
            vm.ClientLogoUrl        = client.LogoUri;
            vm.AllowRememberConsent = client.AllowRememberConsent;

            vm.IdentityScopes = resources.IdentityResources.Select(x => CreateScopeViewModel(x, Enumerable.Contains(vm.ScopesConsented, x.Name) || model == null)).ToArray();
            vm.ResourceScopes = resources.ApiResources.SelectMany(x => x.Scopes).Select(x => CreateScopeViewModel(x, Enumerable.Contains(vm.ScopesConsented, x.Name) || model == null)).ToArray();
            if (ConsentOptions.EnableOfflineAccess && resources.OfflineAccess)
            {
                vm.ResourceScopes = Enumerable.Union(vm.ResourceScopes, new ScopeViewModel[] {
                    GetOfflineAccessScope(Enumerable.Contains(vm.ScopesConsented, IdentityServer4.IdentityServerConstants.StandardScopes.OfflineAccess) || model == null)
                });
            }

            return(vm);
        }
Пример #3
0
        /// <inheritdoc/>
        public Task <IdentityServer4.Models.Resources> GetAllResourcesAsync()
        {
            var apiResources      = _authContext.Application.ApiResources?.Select(_ => ConvertToResource <ApiResource>(_)) ?? new ApiResource[0];
            var identityResources = GetIdentityResourcesFrom(_authContext);
            var resources         = new IdentityServer4.Models.Resources(identityResources, apiResources);

            return(Task.FromResult(resources));
        }
Пример #4
0
        public async Task <IdentityServer4.Models.Resources> GetAllResourcesAsync()
        {
            var identityResources = await _repository.GetAllAsync <IdentityResource>();

            var apiResources = await _repository.GetAllAsync <ApiResource>();

            var apiScopes = await _repository.GetAllAsync <ApiScope>();

            var result = new IdentityServer4.Models.Resources(identityResources, apiResources, apiScopes);

            return(result);
        }
Пример #5
0
        public Task <IdentityServer4.Models.Resources> GetAllResourcesAsync()
        {
            var apiResources = GetApiResources().ApiResources.Select(api => api);

            var identityResources = GetApiResources().IdentityResources.Select(id => id);

            var scopeResources = GetApiResources().ApiScopes.Select(id => id);

            var resources = new IdentityServer4.Models.Resources(identityResources, apiResources, scopeResources);

            return(Task.FromResult(resources));
        }
Пример #6
0
        public Task <IdentityServer4.Models.Resources> GetAllResourcesAsync()
        {
            var identity = _context.IdentityResources.AsQueryable();

            var apis = _context.ApiResources.AsQueryable();

            var result = new IdentityServer4.Models.Resources(
                identity.ToArray().Select(x => x.ToModel()).AsEnumerable(),
                apis.ToArray().Select(x => x.ToModel()).AsEnumerable());

            _logger.LogDebug("Found {scopes} as all scopes in database", result.IdentityResources.Select(x => x.Name).Union(result.ApiResources.SelectMany(x => x.Scopes).Select(x => x.Name)));

            return(Task.FromResult(result));
        }
Пример #7
0
        public Task <is4Models.Resources> GetAllResourcesAsync()
        {
            var identity = _identityResourceService.GetAll();

            var apis = _apiResourceService.GetAll();

            var result = new is4Models.Resources(
                _mapper.Map <List <is4Models.IdentityResource> >(identity),
                _mapper.Map <List <is4Models.ApiResource> >(apis));

            _logger.LogDebug("Found {scopes} as all scopes in database", result.IdentityResources.Select(x => x.Name).Union(result.ApiResources.SelectMany(x => x.Scopes).Select(x => x.Name)));

            return(Task.FromResult(result));
        }
Пример #8
0
        private void CreateConsentViewModel(string returnUrl, AuthorizationRequest request, IdentityServer4.Models.Client client,
                                            IdentityServer4.Models.Resources resources, IList <string> consentedScopes)
        {
            ConsentData.ReturnUrl            = returnUrl;
            ConsentData.ClientName           = client.ClientName ?? client.ClientId;
            ConsentData.ClientUrl            = client.ClientUri;
            ConsentData.ClientLogoUrl        = client.LogoUri;
            ConsentData.AllowRememberConsent = client.AllowRememberConsent;

            ConsentData.IdentityScopes = resources.IdentityResources.Select(x => CreateScopeViewModel(x, consentedScopes == null || consentedScopes.Contains(x.Name))).ToArray();
            ConsentData.ResourceScopes = resources.ApiResources.SelectMany(x => x.Scopes).Select(x => CreateScopeViewModel(x, consentedScopes == null || consentedScopes.Contains(x.Name))).ToArray();
            if (ConsentOptions.EnableOfflineAccess && resources.OfflineAccess)
            {
                ConsentData.ResourceScopes = ConsentData.ResourceScopes.Union(new ScopeViewModel[] {
                    GetOfflineAccessScope(consentedScopes == null || consentedScopes.Contains(IdentityServer4.IdentityServerConstants.StandardScopes.OfflineAccess))
                });
            }
        }
Пример #9
0
        private ConsentViewModel CreateConsentViewModel(
            string returnUrl,
            Client client,
            IdentityServer4.Models.Resources resources,
            AuthorizationRequest request,
            ConsentInputModel model = null)
        {
            var vm = new ConsentViewModel
            {
                RememberConsent      = model?.RememberConsent ?? true,
                ScopesConsented      = model?.ScopesConsented ?? Enumerable.Empty <string>(),
                ReturnUrl            = returnUrl,
                ClientName           = client.ClientName,
                ClientUrl            = client.ClientUri,
                ClientLogoUrl        = client.LogoUri,
                AllowRememberConsent = client.AllowRememberConsent
            };

            vm.IdentityScopes = resources.IdentityResources.Select(x => CreateScopeViewModel(x, vm.ScopesConsented.Contains(x.Name) || model == null)).ToArray();

            var apiScopes = new List <ScopeViewModel>();

            foreach (var parsedScope in request.ValidatedResources.ParsedScopes)
            {
                var apiScope = request.ValidatedResources.Resources.FindApiScope(parsedScope.ParsedName);
                if (apiScope != null)
                {
                    var scopeVm = CreateScopeViewModel(parsedScope, apiScope, vm.ScopesConsented.Contains(parsedScope.RawValue) || model == null);
                    apiScopes.Add(scopeVm);
                }
            }

            if (ConsentOptions.EnableOfflineAccess && request.ValidatedResources.Resources.OfflineAccess)
            {
                apiScopes.Add(GetOfflineAccessScope(vm.ScopesConsented.Contains(IdentityServer4.IdentityServerConstants.StandardScopes.OfflineAccess) || model == null));
            }

            vm.ApiScopes = apiScopes;

            return(vm);
        }
Пример #10
0
        public async Task <IActionResult> OnGetAsync(string returnUrl)
        {
            AuthorizationRequest = await identityServer.GetAuthorizationContextAsync(returnUrl).ConfigureAwait(false);

            if (AuthorizationRequest == null)
            {
                return(Forbid());
            }

            ViewModel = new ConsentInputViewModel
            {
                ReturnUrl       = returnUrl,
                RememberConsent = true
            };

            var scopes = AuthorizationRequest.ValidatedResources.ParsedScopes.Select(e => e.ParsedName);

            Resources = await resourceStore.FindEnabledResourcesByScopeAsync(scopes)
                        .ConfigureAwait(false);

            return(Page());
        }
Пример #11
0
        /// See <see cref="IResourceStore"/> for more.
        public Task <IsResources> GetAllResourcesAsync()
        {
            var resources = new IsResources(_identityResources, _apiResources);

            return(Task.FromResult(resources));
        }
Пример #12
0
        public ConsentViewModel(ConsentInputModel model, string returnUrl, AuthorizationRequest request, Client client, IdentityServer4.Models.Resources resources)
        {
            RememberConsent = model?.RememberConsent ?? true;
            ScopesConsented = model?.ScopesConsented ?? Enumerable.Empty <string>();

            ReturnUrl = returnUrl;

            ClientName           = client.ClientName;
            ClientUrl            = client.ClientUri;
            ClientLogoUrl        = client.LogoUri;
            AllowRememberConsent = client.AllowRememberConsent;

            IdentityScopes = resources.IdentityResources.Select(x => new ScopeViewModel(x, ScopesConsented.Contains(x.Name) || model == null)).ToArray();
            ResourceScopes = resources.ApiResources.SelectMany(x => x.Scopes).Select(x => new ScopeViewModel(x, ScopesConsented.Contains(x.Name) || model == null)).ToArray();
            if (resources.OfflineAccess)
            {
                ResourceScopes = ResourceScopes.Union(new ScopeViewModel[] {
                    ScopeViewModel.GetOfflineAccess(ScopesConsented.Contains(IdentityServerConstants.StandardScopes.OfflineAccess) || model == null)
                });
            }
        }