コード例 #1
0
 public ClaimsIdentity GenerateUserIdentity(Admin userLogin, string authenticationType)
 {
     var userIdentity = new ClaimsIdentity(authenticationType);
     userIdentity.AddClaim(new Claim(ClaimTypes.Name, userLogin.LoginName));
     userIdentity.AddClaim(new Claim(ClaimTypes.NameIdentifier, userLogin.Id.ToString()));
     // Add custom user claims here
     return userIdentity;
 }
コード例 #2
0
        public ApiResponse<IdentityToken> UserToken(Admin admin)
        {
            var user = Context.Admins.FirstOrDefault(x => x.LoginName == admin.LoginName
                                                      && x.Password == admin.Password
                                                      && x.IsActive);
            if (user == null)
            {
                throw new UnauthorizedAccessException("");
            }

            ClaimsIdentity oAuthIdentity = new ApplicationIdentityUser().GenerateUserIdentity(user, "Jwt");
            var ticket = new AuthenticationTicket(oAuthIdentity, new AuthenticationProperties());
            var currentUtc = new SystemClock().UtcNow;
            ticket.Properties.IssuedUtc = currentUtc;
            ticket.Properties.ExpiresUtc = currentUtc.AddDays(1);

            var token = AuthConfig.OAuthServerOptions.AccessTokenFormat.Protect(ticket);

            return new ApiResponse<IdentityToken>(new IdentityToken() { AccessToken = token, ExpiresIn = (long)AuthConfig.OAuthServerOptions.AuthorizationCodeExpireTimeSpan.TotalSeconds, TokenType = AuthConfig.OAuthServerOptions.AuthenticationType});
        }
コード例 #3
0
        public void UserToken()
        {
            var admin = new Admin { LoginName = "Admin1", Password = "******", IsActive = true };
            Db.Setup(x => x.Logins).Returns(new List<Admin>() { admin });
            InitializeServer();

            //api call
            string contentBody = string.Format("grant_type={0}&username={1}&password={2}", "password", admin.LoginName, admin.Password); //important

            IdentityToken responseTmplObj;
            HttpRequestMessage request = CreateRequest("token/user", HttpMethod.Post, contentBody);
            using (HttpResponseMessage response = HttpClient.SendAsync(request).Result)
            {
                responseTmplObj =
                    JsonConvert.DeserializeObject<IdentityToken>(
                        response.Content.ReadAsStringAsync().Result);
            }

            //returned
            Assert.IsNotNullOrEmpty(responseTmplObj.AccessToken);
        }
コード例 #4
0
        protected string GetToken()
        {
            //api call
            var admin = new Admin { LoginName = "Admin1", Password = "******" };

            ApiResponseTmpl<IdentityToken> responseTmplObj;
            HttpRequestMessage request = CreateRequest("token/user", HttpMethod.Post,
                JsonConvert.SerializeObject(admin));
            using (HttpResponseMessage response = HttpClient.SendAsync(request).Result)
            {
                responseTmplObj =
                    JsonConvert.DeserializeObject<ApiResponseTmpl<IdentityToken>>(
                        response.Content.ReadAsStringAsync().Result);
            }

            return responseTmplObj.Data.AccessToken;
        }
コード例 #5
0
        public void InitializeServer()
        {
            var admin = new Admin { LoginName = "Admin1", Password = "******", IsActive = true};
            Db.Setup(x => x.Admins).Returns(new List<Admin>() {admin});

            ApiStartup.Ioc.UmsDbProvider = context => Db.Object;
            Server = WebApp.Start<ApiStartup>(BaseUrl);
        }