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]); }
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"]); }
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]); }