Пример #1
0
        public async Task <(IOauthToken token, string owner)> RefreshToken(string refreshToken, IScope scope)
        {
            IOauthToken token = (IOauthToken) await GetToken(refreshToken, scope);

            IJwtToken jwtToken = await validationManager.ValidateTokenAsync(token);

            return(token, jwtToken.Name);
        }
Пример #2
0
 public void SaveToken(string token)
 {
     Token          = JwtToken.Process(token);
     _context.Token = Token.RawToken;
     _context.Id    = Token.Id;
     //TODO: This will be null.
     _context.Email      = Token.Email;
     _context.IsLoggedIn = true;
 }
Пример #3
0
        public AccountService(AppDbContext appDbContext, IJwtToken jwtToken, UserManager <AppUser> userManager, SignInManager <AppUser> signInManager)
        {
            _appDbContext  = appDbContext;
            _jwtToken      = jwtToken;
            _userManager   = userManager;
            _signInManager = signInManager;

            _appDbContext.Database.EnsureCreated();
        }
Пример #4
0
 public UserController(UserManager <AppUser> userManager,
                       SignInManager <AppUser> signInManager,
                       IJwtToken jwtToken, ApplicationDbContext context, IUserAccessor userAccessor)
 {
     _jwtToken      = jwtToken;
     _context       = context;
     _userAccessor  = userAccessor;
     _signInManager = signInManager;
     _userManager   = userManager;
 }
Пример #5
0
        /// <summary>
        /// 驗證JWT
        /// </summary>
        /// <param name="token">JWT字串</param>
        /// <param name="signingCredentials">簽名鑰匙</param>
        /// <param name="result">剖析後的JWT結構</param>
        /// <returns>是否合法</returns>
        public static bool Verify(
            string token,
            SecurityKey signingCredentials,
            out IJwtToken <DefaultJwtHeader, dynamic> result)
        {
            var tempResult  = new TempToken <dynamic>();
            var returnValue = Verify <TempToken <dynamic>, DefaultJwtHeader, dynamic>(token, signingCredentials, out tempResult);

            result = tempResult;
            return(returnValue);
        }
Пример #6
0
 public AccountService(
     UserManager <ApplicationUser> userManager,
     SignInManager <ApplicationUser> signInManager,
     IConfiguration configuration,
     IJwtToken jwtToken)
 {
     _userManager   = userManager;
     _signInManager = signInManager;
     _configuration = configuration;
     _jwtToken      = jwtToken;
 }
Пример #7
0
        /// <summary>
        /// 驗證JWT
        /// </summary>
        /// <typeparam name="TJwtPayload">內容類型</typeparam>
        /// <param name="token">JWT字串</param>
        /// <param name="signingCredentials">簽名鑰匙</param>
        /// <param name="result">剖析後的JWT結構</param>
        /// <param name="exception">例外</param>
        /// <returns>是否合法</returns>
        public static bool Verify <TJwtPayload>(
            string token,
            SecurityKey signingCredentials,
            out IJwtToken <DefaultJwtHeader, TJwtPayload> result,
            out Exception exception)
        {
            var tempResult  = new TempToken <TJwtPayload>();
            var returnValue = Verify <TempToken <TJwtPayload>, DefaultJwtHeader, TJwtPayload>(token, signingCredentials, out tempResult, out exception);

            result = tempResult;
            return(returnValue);
        }
Пример #8
0
        public void PropertyTests()
        {
            Mock <IJwtToken> mJwtToken = new Mock <IJwtToken>();

            mJwtToken.SetupAllProperties();
            IJwtToken token = mJwtToken.Object;
            DateTime  time  = DateTime.UtcNow.AddSeconds(4);

            token.Expiration = time;
            Assert.Equal(time, token.Expiration);
            mJwtToken.VerifyAll();
        }
Пример #9
0
        public ActionResult <AccessToken> Post(Credentials credentials, [FromServices] IJwtToken jwtToken)
        {
            if (credentials.Username == "Kimserey")
            {
                return(new AccessToken
                {
                    Token = jwtToken.Generate(credentials.Username)
                });
            }

            return(Unauthorized());
        }
Пример #10
0
        /// <summary>
        /// 簽名並產生JWT字串
        /// </summary>
        /// <typeparam name="TJwtHeader">標頭類型</typeparam>
        /// <typeparam name="TJwtPayload">內容類型</typeparam>
        /// <param name="token">JWT結構</param>
        /// <param name="signingCredentials">簽名鑰匙</param>
        /// <returns>JWT字串</returns>
        public static string Sign <TJwtHeader, TJwtPayload>(
            this IJwtToken <TJwtHeader, TJwtPayload> token,
            SecurityKey signingCredentials)
            where TJwtHeader : IJwtHeader
        {
            var nToken = new SystemJWT.JwtSecurityToken(signingCredentials: new SigningCredentials(signingCredentials, token.Header.Algorithm));

            SetToJwtHeader(token.Header, nToken.Header);
            SetToJwtPayload(token.Payload, nToken.Payload);

            return("bearer " + new SystemJWT.JwtSecurityTokenHandler().WriteToken(
                       nToken
                       ));
        }
Пример #11
0
        public async Task <(IOauthToken token, string owner)> ListenForResponse(IScope scope, AuthUrl authUrl)
        {
            IAuthResponse response = await responseManager.AwaitResponse(20000);

            if (authUrl.State != response.State)
            {
                throw new Exception("Invalid auth response state.");
            }

            IOauthToken token = await GetToken(response, authUrl, scope);

            IJwtToken jwtToken = await validationManager.ValidateTokenAsync(token);

            return(token, jwtToken.Name);
        }
Пример #12
0
        public async Task <(IOauthToken token, string owner)> GetToken(IScope scope)
        {
            AuthUrl       authUrl  = GenerateAuthUrl(scope.ScopeString);
            IAuthResponse response = await responseManager.GetResponse(authUrl.Url, 10000);

            if (authUrl.State != response.State)
            {
                throw new Exception("Invalid auth response state.");
            }

            IOauthToken token = await GetToken(response, authUrl, scope);

            IJwtToken jwtToken = await validationManager.ValidateTokenAsync(token);

            return(token, jwtToken.Name);
        }
Пример #13
0
 public AccountController(
     UserManager <AppIdentityUser> userManager,
     SignInManager <AppIdentityUser> signInManager,
     IEmailSender emailSender,
     IMailChimpSender mailChimp,
     IOptions <JwtSettings> jwtOptions,
     IJwtToken jwtToken,
     IHttpContextAccessor context
     )
 {
     this.userManager   = userManager;
     this.signInManager = signInManager;
     this.emailSender   = emailSender;
     this.mailChimp     = mailChimp;
     this.jwtSettings   = jwtOptions.Value;
     this.jwtToken      = jwtToken;
     this.context       = context;
 }
Пример #14
0
 public AccountController(UserManager <ApplicationUser> userManager, SignInManager <ApplicationUser> signInManager, IJwtToken jwtToken)
 {
     _userManager   = userManager;
     _signInManager = signInManager;
     _jwtToken      = jwtToken;
 }
Пример #15
0
 public JwtValidator(IJwtToken jwtToken)
 {
     this.jwtToken = jwtToken;
 }
Пример #16
0
 public AccountsController(IUsersService usersService, IJwtToken jwtToken)
 {
     _usersService = usersService;
     _jwtToken     = jwtToken;
 }
Пример #17
0
 public async Task Initialize()
 {
     this.jwtToken = new JwtToken(this.serviceProvider.GetRequiredService <IGenericRepository <UserToken> >());
 }
Пример #18
0
 public UsersRepository(DataContext context, IJwtToken jwtToken)
 {
     _context   = context;
     _jwtToken  = jwtToken;
     _sendEmail = new SendEmail();
 }
Пример #19
0
 public void RemoveToken()
 {
     Token = null;
     _context.Clear();
 }
Пример #20
0
 public LoginController(IJwtToken jwt)
 {
     _jwt = jwt;
 }