コード例 #1
0
        public void RefreshTokenPersists()
        {
            var subClaim   = new Claim("sub", "*****@*****.**");
            var emailClaim = new Claim("email", "*****@*****.**");

            var token = new RefreshToken {
                AccessToken = new Token {
                    CreationTime = DateTimeOffset.Now,
                    Audience     = "aud",
                    Claims       = new List <Claim> {
                        subClaim, emailClaim
                    },
                    Client = new Client {
                        ClientId   = "cid",
                        ClientName = "cname",
                        Enabled    = true,
                        SlidingRefreshTokenLifetime = 100,
                        AccessTokenType             = AccessTokenType.Jwt,
                        //todo
                        //Flow = Flows.Implicit
                    },
                    Issuer   = "iss",
                    Lifetime = 1234567,
                    Type     = OidcConstants.TokenTypes.RefreshToken,
                    Version  = 1,
                },

                CreationTime = DateTimeOffset.Now,
                Version      = 1,
                LifeTime     = 1234567,
                Subject      = new ClaimsPrincipal(new ClaimsIdentity(new List <Claim> {
                    subClaim, emailClaim
                }))
            };

            var clients = new List <Client>
            {
                new Client
                {
                    ClientId   = "cid",
                    ClientName = "cname",
                    Enabled    = true,
                    SlidingRefreshTokenLifetime = 100,
                    AccessTokenType             = AccessTokenType.Jwt,
                    //todo
                    //Flow = Flows.Implicit
                }
            };
            var clientStore = new InMemoryClientStore(clients);

            var scopes = new List <Scope>
            {
                new Scope
                {
                    Description             = "sdescription",
                    Name                    = "sname",
                    Enabled                 = true,
                    Emphasize               = false,
                    IncludeAllClaimsForUser = true,
                    Required                = false,
                    Type                    = ScopeType.Identity
                }
            };
            var scopeStore = new InMemoryScopeStore(scopes);

            var store = new RedisRefreshTokenStore(clientStore, scopeStore, RedisServer);

            store.StoreAsync("key2", token).Wait();

            var result = store.GetAsync("key2").Result;

            Assert.Equal(token.SubjectId, result.SubjectId);
            Assert.Equal(token.ClientId, result.ClientId);
        }
        public void RefreshTokenPersists()
        {
            var subClaim = new Claim("sub", "*****@*****.**");
            var emailClaim = new Claim("email", "*****@*****.**");

            var token = new RefreshToken
            {
                AccessToken = new Token
                {
                    
                    CreationTime = DateTimeOffset.Now,
                    Audience = "aud",
                    Claims = new List<Claim> {  subClaim, emailClaim},
                    Client = new Client
                    {
                        ClientId = "cid",
                        ClientName = "cname",
                        Enabled = true,
                        SlidingRefreshTokenLifetime = 100,
                        AccessTokenType = AccessTokenType.Jwt,
                        Flow = Flows.Implicit
                    },
                    Issuer = "iss",
                    Lifetime = 1234567,
                    Type = Constants.TokenTypes.RefreshToken,
                    Version = 1,
                },
                
                CreationTime = DateTimeOffset.Now,
                Version = 1,
                LifeTime = 1234567,
                Subject = new ClaimsPrincipal(new ClaimsIdentity(new List<Claim> { subClaim, emailClaim }))
            };

            var clients = new List<Client>
            {
                new Client
                {
                    ClientId = "cid",
                    ClientName = "cname",
                    Enabled = true,
                    SlidingRefreshTokenLifetime = 100,
                    AccessTokenType = AccessTokenType.Jwt,
                    Flow = Flows.Implicit
                }
            };
            var clientStore = new InMemoryClientStore(clients);

            var scopes = new List<Scope>
            {
                new Scope
                {
                    Description = "sdescription",
                    Name = "sname",
                    Enabled = true,
                    Emphasize = false,
                    IncludeAllClaimsForUser = true,
                    Required = false,
                    Type = ScopeType.Identity
                }
            };
            var scopeStore = new InMemoryScopeStore(scopes);

            var store = new RedisRefreshTokenStore(clientStore, scopeStore, RedisServer);
            store.StoreAsync("key2", token).Wait();

            var result = store.GetAsync("key2").Result;
            Assert.Equal(token.SubjectId, result.SubjectId);
            Assert.Equal(token.ClientId, result.ClientId);
        }