private void AddScopes()
        {
            foreach (var sc in Scopes.Get())
            {
                var scope = new Scope <Guid>()
                {
                    ClaimsRule              = sc.ClaimsRule,
                    Description             = sc.Description,
                    DisplayName             = sc.DisplayName,
                    Emphasize               = sc.Emphasize,
                    Enabled                 = sc.Enabled,
                    IncludeAllClaimsForUser = sc.IncludeAllClaimsForUser,
                    Name     = sc.Name,
                    Required = sc.Required,
                    ShowInDiscoveryDocument = sc.ShowInDiscoveryDocument,
                    Type = (int)sc.Type,
                    AllowUnrestrictedIntrospection = sc.AllowUnrestrictedIntrospection,
                };
                scope.ScopeClaims  = new List <ScopeClaim <Guid> >();
                scope.ScopeSecrets = new List <ScopeSecret <Guid> >();

                //Add ScopeClaims
                foreach (var claim in sc.Claims)
                {
                    var scopeClaim = new ScopeClaim <Guid>()
                    {
                        AlwaysIncludeInIdToken = claim.AlwaysIncludeInIdToken,
                        Description            = claim.Description,
                        Name = claim.Name
                    };
                    scope.ScopeClaims.Add(scopeClaim);
                }

                //AddScopeSecrets
                foreach (var secret in sc.ScopeSecrets)
                {
                    var scopeSecret = new ScopeSecret <Guid>()
                    {
                        Description = secret.Description,
                        Expiration  = secret.Expiration.HasValue ? (DateTime?)secret.Expiration.Value.DateTime : null,
                        Type        = secret.Type,
                        Value       = secret.Value
                    };
                    scope.ScopeSecrets.Add(scopeSecret);
                }

                _scopeContext.Scopes.Add(scope);
            }
            _scopeContext.SaveChanges();
        }
Пример #2
0
        public void GivenApiScopeWithSecrets_ExpectSecretsCorrectlyMapped()
        {
            var secret = new ScopeSecret()
            {
                Type        = Constants.SecretTypes.SharedSecret,
                Value       = Guid.NewGuid().ToString(),
                Description = Guid.NewGuid().ToString(),
                Expiration  = DateTimeOffset.UtcNow.AddDays(2)
            };

            var scope = new Scope {
                Type = (int)ScopeType.Resource, ScopeSecrets = new List <ScopeSecret> {
                    secret
                }
            };
            var scopes = new List <Scope> {
                scope
            };

            var result = scopes.GetApiResourcesAndApiScopes();

            result.apiResources.Should().NotBeEmpty();
            result.scopes.Should().NotBeEmpty();

            result.apiResources.Should().HaveCount(scopes.Count);
            result.scopes.Should().HaveCount(scopes.Count);

            var resource = result.apiResources.Single(x => x.Name == scope.Name);

            resource.ApiSecrets.Should().NotBeEmpty();
            resource.ApiSecrets.Should().HaveCount(scope.ScopeSecrets.Count);

            var apiSecret = resource.ApiSecrets.First();

            apiSecret.Type.Should().BeEquivalentTo(secret.Type);
            apiSecret.Type.Should().BeEquivalentTo(IdentityServerConstants.SecretTypes.SharedSecret);
            apiSecret.Value.Should().BeEquivalentTo(secret.Value);
            apiSecret.Description.Should().BeEquivalentTo(secret.Description);
            apiSecret.Expiration?.Should().BeExactly(new TimeSpan(secret.Expiration.Value.Ticks));
        }