public TokenManager(IAccessTokenObtainer ValidTokenObtainer, int RefreshCacheInMinutes) { this.ValidTokenObtainer = ValidTokenObtainer; CacheTimer = new CacheExpiration(RefreshCacheInMinutes, RefreshTokens); Tokens = GetAllCurrentTokens(); }
public Task Invoke(IDictionary <string, object> Environment) { try { var Headers = (IDictionary <string, string[]>)Environment["owin.RequestHeaders"]; if (Headers.ContainsKey("access_token")) { if (AccessTokenManager.IsValidToken(TokenFromHttpHeaders(Headers))) { return(NextFunction(Environment)); } else { var ResponseData = new Response(); ResponseData.Message = "Invalid Token Supplied"; ResponseData.Environment = Environment; ResponseData.ResponseCode = 401; var NewHeader = new Dictionary <string, string[]>(); NewHeader.Add("WWW-Authenticate", new string[] { "Supplied token not valid" }); ResponseData.AppendHeaders = NewHeader; return(ReturnResponse(ResponseData)); } } else { var ResponseData = new Response(); ResponseData.Message = "Invalid Token Supplied"; ResponseData.Environment = Environment; ResponseData.ResponseCode = 401; var NewHeader = new Dictionary <string, string[]>(); NewHeader.Add("WWW-Authenticate", new string[] { "You must supply header access_token" }); ResponseData.AppendHeaders = NewHeader; return(ReturnResponse(ResponseData)); } } catch (Exception ex) { StringBuilder Message = new StringBuilder(); Message.AppendLine(ex.Message); Message.AppendLine(ex.StackTrace); Message.AppendLine(ex.Source); System.Windows.Forms.MessageBox.Show(Message.ToString()); var ResponseData = new Response(); ResponseData.Message = "Exception caught processing token authentication"; ResponseData.Environment = Environment; ResponseData.ResponseCode = 500; return(ReturnResponse(ResponseData)); } finally { TokenObtainer = null; } }
public TokenManagerMiddleware(AppFunc _NextFunction, IAccessTokenObtainer AccessTokenObtainer, int CacheRefreshTimeInMinutes) { NextFunction = _NextFunction; TokenObtainer = AccessTokenObtainer; AccessTokenManager = new TokenManager(TokenObtainer, CacheRefreshTimeInMinutes); }
public static void UseAccessTokenManagement(this IAppBuilder App, IAccessTokenObtainer TokenObtainer, int CacheRefreshInMinutes) { App.Use <TokenManagerMiddleware>(TokenObtainer, CacheRefreshInMinutes); }