public OperationResult RefreshAccessToken(string refreshToken, string clientID, string clientSecret) { //Check first if the registered application with specified clientid and clientsecret exists IFindRegisteredApplicationRepositoryExt registeredAppRepo = (IFindRegisteredApplicationRepositoryExt)RepositoryFactory.Create("Find.Tools.OAuthServerManager.RegisteredApplication"); List <RegisteredApplication> list = registeredAppRepo.FindByClientIDAndClientSecret(clientID, clientSecret); //If exists if (list != null && list.Count > 0) { //Check if the application has been authorized before by checking the access token previous existence IFindAccessTokenRepository accessTokenRepo = (IFindAccessTokenRepository)RepositoryFactory.Create("Find.Tools.OAuthServerManager.AccessToken"); List <AccessToken> accessTokenList = accessTokenRepo.FindByClientID(clientID); if (accessTokenList.Count == 0) { return(new OperationResult(false, null, "Access token for client ID " + clientID + " does not exists. The application had never asked for authorization!")); } else { AccessToken newAccessToken = (AccessToken)CreateNewAccessToken(refreshToken, clientID, clientSecret).Data; OperationResult result = SaveNewccessToken(newAccessToken); if (result.Result) { return(new OperationResult(true, newAccessToken, "New access token is created successfully!")); } else { return(result); } } } else { return(new OperationResult(false, null, "Application for client ID " + clientID + " does not exists. Application is not registered!")); } }
public OperationResult CheckAccessToken(string accessToken) { IFindAccessTokenRepository repo = (IFindAccessTokenRepository)RepositoryFactory.Create("Find.Tools.OAuthServerManager.AccessToken"); List <AccessToken> accessTokens = repo.FindByAccessTokenString(accessToken); OperationResult result = new OperationResult(); if (accessTokens.Count == 0) { result.Result = false; result.Data = null; result.Message = "Access token does not exists. Please request for authorization by requesting to this url: " + ConfigurationManager.AppSettings["REQUEST.AUTHORIZATION.URL"]; } else { AccessToken acctoken = accessTokens[0]; if (acctoken.ExpiredDate > DateTime.Now) { result = new OperationResult(true, accessTokens[0]); } else { result.Result = false; result.Data = null; result.Message = "Access token has expired. Please request for new access token by requesting to this url: " + ConfigurationManager.AppSettings["REQUEST.REFRESHACCESSTOKEN.URL"]; } } return(result); }
/// <summary> /// Finds all Access Token data with client Secret containing specified keyword /// </summary> /// <param name="clientSecret"> Client Secret</param> /// <returns>The result of the operation</returns> public OperationResult FindByClientSecret(string clientSecret) { IFindAccessTokenRepository repository = (IFindAccessTokenRepository)RepositoryFactory.Create(Keywords.FindAccessToken); try { List <AccessToken> res = repository.FindByClientSecret(clientSecret); return(new OperationResult(true, res)); } catch (Exception e) { return(new OperationResult(false, e)); } }
/// <summary> /// Finds all Access Token data with expired Date1, expired Date2 containing specified keyword /// </summary> /// <param name="expiredDate1"> Expired Date</param> /// <param name="expiredDate2"> Expired Date</param> /// <returns>The result of the operation</returns> public OperationResult FindByExpiredDateBetween(DateTime expiredDate1, DateTime expiredDate2) { IFindAccessTokenRepository repository = (IFindAccessTokenRepository)RepositoryFactory.Create(Keywords.FindAccessToken); try { List <AccessToken> res = repository.FindByExpiredDateBetween(expiredDate1, expiredDate2); return(new OperationResult(true, res)); } catch (Exception e) { return(new OperationResult(false, e)); } }