public Token Authorize(Request.IOAuthRequest request) { _logger.Debug("Authorizing authorization code request"); var grantType = request.GrantType; if (!grantType.HasValue()) { throw new OAuthException(ErrorCode.InvalidRequest, "Parameter grant_type is missing"); } if (request.GrantType != GrantType.AuthorizationCode) { throw new OAuthException(ErrorCode.InvalidGrant, "The specified grant_type is not supported"); } var code = request.AuthorizationCode; if (!code.HasValue()) { throw new OAuthException(ErrorCode.InvalidRequest, "Parameter code is missing"); } var tokenData = _issuer.DecodeAuthorizationToken(code); if ((DateTime.UtcNow - new DateTime(tokenData.Timestamp, DateTimeKind.Utc)).TotalSeconds > _configuration.AuthorizationTokenExpirationLength) { throw new OAuthException(ErrorCode.InvalidRequest, "Authorization code has expired"); } if (tokenData.RedirectUri != request.RedirectUri) { throw new OAuthException(ErrorCode.InvalidRequest, "The specified redirect_uri is invalid"); } var newTokenData = new TokenData { ConsumerId = tokenData.ConsumerId, ResourceOwnerId = tokenData.ResourceOwnerId, Timestamp = DateTime.UtcNow.Ticks }; return(new Token { AccessToken = _issuer.GenerateAccessToken(newTokenData), ExpiresIn = _configuration.AccessTokenExpirationLength, RefreshToken = _issuer.GenerateRefreshToken(newTokenData), RedirectsUri = request.RedirectUri }); }
public ValidationResult ValidateRequest(Request.IOAuthRequest request) { _logger.Debug("Validating authorization request"); var responseType = request.ResponseType; if (string.IsNullOrWhiteSpace(request.ResponseType)) { return new ValidationResult { ErrorCode = ErrorCode.InvalidRequest, ErrorDescription = "Parameter response_type is missing" } } ; if (responseType != ResponseType.Code) { return new ValidationResult { ErrorCode = ErrorCode.InvalidRequest, ErrorDescription = "The specified response_type is not valid" } } ; var clientId = request.ClientId; if (string.IsNullOrWhiteSpace(clientId)) { return new ValidationResult { ErrorCode = ErrorCode.InvalidRequest, ErrorDescription = "Parameter client_id is missing" } } ; var redirectUri = request.RedirectUri; if (redirectUri != null && !Regexs.HTTPUrl.IsMatch(redirectUri)) { return new ValidationResult { ErrorCode = ErrorCode.InvalidRequest, ErrorDescription = "The redirect_url parameter must be an absolute URI" } } ; return(new ValidationResult { Success = true }); } } }
public bool Authorize(Request.IOAuthRequest request) { if (string.IsNullOrWhiteSpace(request.AccessToken)) { return(false); } var tokenData = _issuer.DecodeAccessToken(request.AccessToken); if ((DateTime.UtcNow - new DateTime(tokenData.Timestamp, DateTimeKind.Utc)).TotalSeconds > _configuration.AccessTokenExpirationLength) { _logger.Info("Access token is expired"); return(false); } return(true); }
public ValidationResult ValidateRequest(Request.IOAuthRequest request) { _logger.Debug("Validating refresh token request"); var grantType = request.GrantType; if (string.IsNullOrWhiteSpace(grantType)) { return new ValidationResult { ErrorCode = ErrorCode.InvalidRequest, ErrorDescription = "Parameter grant_type is missing" } } ; if (grantType != GrantType.RefreshToken) { return new ValidationResult { ErrorCode = ErrorCode.InvalidGrant, ErrorDescription = "The specified grant_type is not supported" } } ; if (!request.IsFormEncoded()) { return new ValidationResult { ErrorCode = ErrorCode.InvalidRequest, ErrorDescription = "Content-Type must be application/x-www-form-urlencoded" } } ; if (string.IsNullOrWhiteSpace(request.RefreshToken)) { return new ValidationResult { ErrorCode = ErrorCode.InvalidRequest, ErrorDescription = "Parameter refresh_token is missing" } } ; return(new ValidationResult { Success = true }); } } }
public ValidationResult ValidateRequest(Request.IOAuthRequest request) { _logger.Debug("Validating authorization code request"); var grantType = request.GrantType; if (string.IsNullOrWhiteSpace(grantType)) { return new ValidationResult { ErrorCode = ErrorCode.InvalidRequest, ErrorDescription = "Parameter grant_type is missing" } } ; if (grantType != GrantType.AuthorizationCode) { return new ValidationResult { ErrorCode = ErrorCode.InvalidGrant, ErrorDescription = "The specified grant_type is not supported" } } ; var authCode = request.AuthorizationCode; if (string.IsNullOrWhiteSpace(authCode)) { return new ValidationResult { ErrorCode = ErrorCode.InvalidRequest, ErrorDescription = "Parameter authorization_code is missing" } } ; return(new ValidationResult { Success = true }); } } }