/// <summary> /// Verify incoming request for access token /// </summary> public static bool VerifyOAuthRequestTokenParameters(OAuthTokenRequest tokenRequest) { if (!string.IsNullOrEmpty(tokenRequest.grant_type) && !tokenRequest.grant_type.Equals(OAuthConstants.ACCESS_TOKEN)) { throw new ApiException(HttpStatusCode.BadRequest, "Missing required parameter: grant_type"); } if (!string.IsNullOrEmpty(tokenRequest.scope) && !tokenRequest.scope.Equals(DEFAULT_SCOPE)) { throw new ApiException(HttpStatusCode.BadRequest, "The specified scope is invalid"); } if (string.IsNullOrEmpty(tokenRequest.scope)) { tokenRequest.scope = DEFAULT_SCOPE; } if (string.IsNullOrEmpty(tokenRequest.username)) { throw new ApiException(HttpStatusCode.BadRequest, "Missing required parameter: username"); } if (string.IsNullOrEmpty(tokenRequest.password)) { throw new ApiException(HttpStatusCode.BadRequest, "Missing required parameter: password"); } return true; }
/// <summary> /// A method that executes request token flow /// </summary> public OAuthTokenResponse ExecuteTokenFlow(OAuthTokenRequest tokenRequest) { VerifyOAuthRequestTokenParameters(tokenRequest); long retrievedMemberId = VerifyCredentials(tokenRequest.username, tokenRequest.password); Guid accessTokenGuid = Guid.NewGuid(); Guid refreshTokenGuid = Guid.NewGuid(); DateTime validFrom = DateTime.UtcNow; DateTime validTo = validFrom.AddDays(1); AddMemberAuthorization(accessTokenGuid, retrievedMemberId, tokenRequest.scope, validFrom, validTo); return new OAuthTokenResponse { access_token = accessTokenGuid.ToString(), expires_in = null, refresh_token = refreshTokenGuid.ToString(), scope = tokenRequest.scope, token_type = TOKEN_TYPE_BEARER, MemberID = retrievedMemberId }; }
/// <summary> /// A method that executes refresh token flow /// </summary> public OAuthRefreshTokenResponse ExecuteRefreshTokenFlow(OAuthTokenRequest tokenRequest) { if (!string.IsNullOrEmpty(tokenRequest.scope) && !tokenRequest.scope.Equals(DEFAULT_SCOPE)) { throw new ApiException(HttpStatusCode.BadRequest, "The specified scope is invalid"); } if (string.IsNullOrEmpty(tokenRequest.refresh_token)) { throw new ApiException(HttpStatusCode.BadRequest, "Missing required parameter: refresh_token"); } Guid accessToken = Guid.NewGuid(); long memberId = RefreshMemberAuthorization(tokenRequest.refresh_token, accessToken.ToString()); var oAuthTokenResponse = new OAuthRefreshTokenResponse { MemberID = memberId, access_token = accessToken.ToString(), token_type = TOKEN_TYPE_BEARER, scope = tokenRequest.scope }; return oAuthTokenResponse; }