コード例 #1
0
        public ActionResult Login(string returnUrl)
        {
            ViewBag.ReturnUrl = returnUrl;
            SsoClient ssoClient = new SsoClient();

            if (!ssoClient.IsLogined)
            {
                return(Redirect(SsoHelper.SSOLoginUrl));
            }
            if (SsoHelper.HasReturnUrl())
            {
                return(Redirect(SsoHelper.ReturnUrl));
            }
            return(View());
        }
コード例 #2
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]);
        }
コード例 #3
0
        protected async void Page_Load(object sender, EventArgs e)
        {
            var ssoClient     = new SsoClient();
            var tokenResponse = await ssoClient.RequestTokenAsync("goodsam11", "5473d95926b2d0e00730786a");

            if (tokenResponse.StatusCode.ToString() == "Ok")
            {
                Token = tokenResponse.Token;
            }
            else
            {
                Message.InnerHtml += "</br>";
                Message.InnerHtml += tokenResponse.TokenResponseVersion + "</br>";
                Message.InnerHtml += tokenResponse.StatusCode.ToString() + "</br>";
                Message.InnerHtml += tokenResponse.RequestStatusFlag.ToString() + "</br>";
                Message.InnerHtml += tokenResponse.Token + "</br>";
                Message.InnerHtml += tokenResponse.TokenDurationInSeconds.ToString() + "</br>";
            }
        }
コード例 #4
0
        public async Task <ActionResult> LoginToAbaqis()
        {
            var ssoClient     = new SsoClient();
            var tokenResponse = await ssoClient.RequestTokenAsync("goodsam11", "5473d95926b2d0e00730786a");

            var response = await ssoClient.AbaqisLoginPostAsync(tokenResponse.Token, "http://www.yahoo.com");

            var cookieToSet = response.Headers.GetValues("Set-Cookie").FirstOrDefault();

            if (cookieToSet != null)
            {
                var cookies = cookieToSet.Split(';');
                foreach (var cookie in cookies)
                {
                    var cookiePair = cookie.Split('=');
                    Response.Cookies.Add(new HttpCookie(cookiePair[0], cookiePair.Length == 2 ? cookiePair[1] : string.Empty));
                }
            }

            return(new RedirectResult(response.Headers.Location.ToString()));
        }
コード例 #5
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]);
        }