public void WhenIValidateTheSecureArmorToken() { var standardArmorTokenValidator = new SecureArmorTokenValidator(secureArmorToken, encryptionKey, hashingKey, "*****@*****.**", 300000); standardArmorTokenValidator.Execute(); armorTokenValidationStepResult = standardArmorTokenValidator.ArmorTokenValidationStepResult; }
protected override bool IsAuthorized(HttpActionContext actionContext) { #region Read logged-in user claims var principal = (ClaimsIdentity)Thread.CurrentPrincipal.Identity; var userId = principal.Claims.Single(c => c.Type.Equals("UserId")).Value; var platform = principal.Claims.Single(c => c.Type.Equals("Platform")).Value; #endregion #region Ensure existence of ArmorToken in HTTP header var armorHeaderParser = new ArmorHeaderParser(actionContext.Request.Headers); armorHeaderParser.Execute(); if (!armorHeaderParser.ArmorTokenHeader.IsValid) { return(false); } #endregion #region Validate ArmorToken var encryptionKey = Convert.FromBase64String("0nA6gWIoNXeeFjJFo1qi1ZlL7NI/4a6YbL8RnqMTC1A="); var hashingKey = Convert.FromBase64String("0nA6gWIoNXeeFjJFo1qi1ZlL7NI/4a6YbL8RnqMTC1A="); var secureArmorTokenValidator = new SecureArmorTokenValidator(armorHeaderParser.ArmorTokenHeader.ArmorToken, encryptionKey, hashingKey, userId, 10000000000); secureArmorTokenValidator.Execute(); if (!secureArmorTokenValidator.ArmorTokenValidationStepResult.IsValid) { return(false); } #endregion #region Refresh ArmorToken and re-issue var nonceGenerator = new NonceGenerator(); nonceGenerator.Execute(); var armorToken = new ArmorToken(userId, platform, nonceGenerator.Nonce, new[] { new Claim("Another", "Claim") }); var armorTokenConstructor = new ArmorTokenConstructor(); var standardSecureArmorTokenBuilder = new StandardSecureArmorTokenBuilder(armorToken, encryptionKey, hashingKey); var generateSecureArmorToken = new GenerateSecureArmorToken(armorTokenConstructor, standardSecureArmorTokenBuilder); generateSecureArmorToken.Execute(); #endregion HttpContext.Current.Response.AppendHeader("ARMOR", generateSecureArmorToken.SecureArmorToken); return(true); }
public bool Authorize() { #region Read logged-in user claims var identityReader = identityReaderFactory.Create(); IEnumerable <Claim> identity; var isAuthenticated = identityReader.TryRead(out identity); if (!isAuthenticated) { return(false); } var claims = identity.ToList(); var userId = claims.Single(c => c.Type.Equals("UserId")).Value; #endregion #region Ensure existence of ArmorToken in HTTP header var armorHeaderParser = httpRequestArmorHeaderParserFactory.Create(); ArmorTokenHeader armorTokenHeader; var hasArmorTokenHeader = armorHeaderParser.TryParse(out armorTokenHeader); if (!hasArmorTokenHeader) { return(false); } #endregion #region Validate ArmorToken var encryptionKey = ArmorSettings.EncryptionKey; var hashingKey = ArmorSettings.HashingKey; var armorTimeOut = ArmorSettings.Timeout; var secureArmorTokenValidator = new SecureArmorTokenValidator(armorTokenHeader.ArmorToken, encryptionKey, hashingKey, userId, armorTimeOut); secureArmorTokenValidator.Execute(); return (secureArmorTokenValidator.ArmorTokenValidationStepResult.IsValid); #endregion }
public bool Authorize() { #region Read logged-in user claims var identityReader = identityReaderFactory.Create(); IEnumerable<Claim> identity; var isAuthenticated = identityReader.TryRead(out identity); if (!isAuthenticated) return false; var claims = identity.ToList(); var userId = claims.Single(c => c.Type.Equals("UserId")).Value; #endregion #region Ensure existence of ArmorToken in HTTP header var armorHeaderParser = httpRequestArmorHeaderParserFactory.Create(); ArmorTokenHeader armorTokenHeader; var hasArmorTokenHeader = armorHeaderParser.TryParse(out armorTokenHeader); if (!hasArmorTokenHeader) return false; #endregion #region Validate ArmorToken var encryptionKey = Convert.FromBase64String( ConfigurationManager.AppSettings["ArmorEncryptionKey"]); var hashingKey = Convert.FromBase64String( ConfigurationManager.AppSettings["ArmorHashKey"]); var armorTimeOut = Convert.ToInt64(ConfigurationManager.AppSettings["ArmorTimeout"]); var secureArmorTokenValidator = new SecureArmorTokenValidator(armorTokenHeader.ArmorToken, encryptionKey, hashingKey, userId, armorTimeOut); secureArmorTokenValidator.Execute(); return secureArmorTokenValidator.ArmorTokenValidationStepResult.IsValid; #endregion }