Esempio n. 1
0
        public async void PasswordTest()
        {
            var client = new SsoClient
            {
                Server = "https://localhost:5001",
                //Server = "https://sso.newlifex.com",
                AppId  = "test",
                Secret = "test1234",
            };

            var file = "..\\..\\Bin\\Keys\\SsoSecurity.pubkey".GetFullPath();

            if (File.Exists(file))
            {
                client.SecurityKey = File.ReadAllText(file);
            }

            var token = await client.GetToken("admin", "admin");

            Assert.NotNull(token);
            Assert.NotEmpty(token.AccessToken);
            Assert.NotEmpty(token.RefreshToken);
            Assert.Equal(7200, token.Expire);
            Assert.Equal(3, token.AccessToken.Split('.').Length);

            var user = await client.GetUser(token.AccessToken) as User;

            Assert.NotNull(user);
            Assert.Equal(1, user.ID);
            Assert.Equal("admin", user.Name);
            Assert.Equal("管理员", user.DisplayName);

            var jwt = new JwtBuilder();

            jwt.Parse(token.AccessToken);
            Assert.Equal("test", jwt.Audience);
            Assert.Equal("admin", jwt.Subject);

            var prv = new TokenProvider();
            var rs  = prv.TryDecode(token.RefreshToken, out var name, out var expire);

            Assert.False(rs);
            var ss = name.Split('#');

            Assert.Equal("test", ss[0]);
            Assert.Equal("admin", ss[1]);
        }
Esempio n. 2
0
        public void HS256_Encode()
        {
            var builder = new JwtBuilder
            {
                //Id = null,
                //Subject = "Cube",
                //Issuer = "NewLife",
                IssuedAt = 1516239022.ToDateTime(),
                Expire   = DateTime.MinValue,
                Secret   = "Smart",
            };

            var token = builder.Encode(new { sub = "0201", name = "stone" });

            Assert.NotNull(token);
            Assert.NotEmpty(token);

            var ts = token.Split('.');

            Assert.Equal(3, ts.Length);
            Assert.Equal("eyJhbGciOiJIUzI1NiJ9", ts[0]);
            Assert.Equal("eyJzdWIiOiIwMjAxIiwibmFtZSI6InN0b25lIiwiaWF0IjoxNTE2MjM5MDIyfQ", ts[1]);
            Assert.Equal("mY2_rvQORkyYpK3f84liG2EDpaYY7pO43sRgcli381U", ts[2]);

            var builder2 = new JwtBuilder
            {
                Secret = builder.Secret,
            };

            ts = builder2.Parse(token);
            Assert.NotNull(ts);
            Assert.Equal(3, ts.Length);

            var rs = builder2.TryDecode(token, out var msg);

            Assert.True(rs);
            Assert.Null(msg);

            Assert.Null(builder2.Type);
            Assert.Equal("0201", builder2.Subject);
            Assert.Equal("stone", builder2["name"]);
        }
Esempio n. 3
0
        public async void ClientTest()
        {
            var client = new SsoClient
            {
                Server = "https://localhost:5001",
                //Server = "https://sso.newlifex.com",
                AppId  = "test",
                Secret = "test1234",
            };

            var token = await client.GetToken("mydevice");

            Assert.NotNull(token);
            Assert.NotEmpty(token.AccessToken);
            Assert.NotEmpty(token.RefreshToken);
            Assert.Equal(7200, token.Expire);
            Assert.Equal(3, token.AccessToken.Split('.').Length);

            var ex = await Assert.ThrowsAsync <ApiException>(() => client.GetUser(token.AccessToken));

            Assert.NotNull(ex);
            Assert.Equal(500, ex.Code);
            Assert.Equal("用户[mydevice]不存在", ex.Message);

            var jwt = new JwtBuilder();

            jwt.Parse(token.AccessToken);
            Assert.Equal("test", jwt.Audience);
            Assert.Equal("mydevice", jwt.Subject);

            var prv = new TokenProvider();
            var rs  = prv.TryDecode(token.RefreshToken, out var name, out var expire);

            Assert.False(rs);
            var ss = name.Split('#');

            Assert.Equal("test", ss[0]);
            Assert.Equal("mydevice", ss[1]);
        }