uic.blackboard.com Open in urlscan Pro
52.6.125.30  Public Scan

Submitted URL: https://uic.blackboard.com/ultra/courses/_278408_1/cl/outline
Effective URL: https://uic.blackboard.com/?new_loc=%2Fultra%2Fcourses%2F_278408_1%2Fcl%2Foutline
Submission Tags: demotag1 demotag2 Search All
Submission: On October 11 via api from IE — Scanned from US

Form analysis 1 forms found in the DOM

Name: loginPOST /webapps/login/

<form action="/webapps/login/" onsubmit="return validate_form( this, false, true );" method="POST" name="login">
  <script type="text/javascript">
    function login_openForgotPassword(url) {
      var passwordWin = window.open(url, 'forgotPasswordWindow', 'menubar=1,resizable=1,scrollbars=1,status=1,width=850,height=480');
      passwordWin.focus();
    }
    FastInit.addOnLoad(function() {
      if (typeof ClientCache !== 'undefined') {
        ClientCache.clear();
      }
      var startingJSessionCookie = getCookie("JSESSIONID");
      var guestLocaleCookie = getCookie("guest.session.locale");
      deleteCookie("JSESSIONID", "/@@", null, true);
      deleteCookie("JSESSIONID", "/courses", null, true);
      deleteCookie("JSESSIONID", "/sessions", null, true);
      deleteCookie("JSESSIONID", "/systemdata", null, true);
      deleteCookie("JSESSIONID", "/images", null, true);
      deleteCookie("JSESSIONID", "/images-ltr", null, true);
      deleteCookie("JSESSIONID", "/images-rtl", null, true);
      deleteCookie("JSESSIONID", "/reportbranding", null, true);
      deleteCookie("JSESSIONID", "/reports", null, true);
      deleteCookie("JSESSIONID", "/modules", null, true);
      deleteCookie("JSESSIONID", "/groupjs", null, true);
      deleteCookie("JSESSIONID", "/branding", null, true);
      deleteCookie("JSESSIONID", "/queue_tasks", null, true);
      deleteCookie("JSESSIONID", "/sponsors", null, true);
      deleteCookie("JSESSIONID", "/course_image_main_images", null, true);
      deleteCookie("JSESSIONID", "/course_image_2_images", null, true);
      deleteCookie("JSESSIONID", "/course_image_nav_images", null, true);
      deleteCookie("JSESSIONID", "/org_image_main_images", null, true);
      deleteCookie("JSESSIONID", "/org_image_2_images", null, true);
      deleteCookie("JSESSIONID", "/org_image_nav_images", null, true);
      deleteCookie("JSESSIONID", "/avatar", null, true);
      deleteCookie("JSESSIONID", "/bannerthumbnail", null, true);
      deleteCookie("JSESSIONID", "/deployment", null, true);
      deleteCookie("JSESSIONID", "/content_area", null, true);
      deleteCookie("JSESSIONID", "/portfolio", null, true);
      deleteCookie("JSESSIONID", "/evidence_area", null, true);
      deleteCookie("JSESSIONID", "/public", null, true);
      deleteCookie("JSESSIONID", "/pronunciation_audio", null, true);
      deleteCookie("JSESSIONID", "/s", null, true);
      deleteCookie("JSESSIONID", "", null, true);
      deleteCookie("JSESSIONID", "/webapps/login", null, true);
      deleteCookie("JSESSIONID", "/webapps/taglibs", null, true);
      deleteCookie("JSESSIONID", "/webapps/ws", null, true);
      deleteCookie("JSESSIONID", "/webapps/wysiwyg", null, true);
      deleteCookie("JSESSIONID", "/bbcswebdav", null, true);
      deleteCookie("JSESSIONID", "/webapps/cmsmain", null, true);
      deleteCookie("JSESSIONID", "/webapps/xythoswfs", null, true);
      deleteCookie("JSESSIONID", "/admin", null, true);
      deleteCookie("JSESSIONID", "/colorpalettes", null, true);
      deleteCookie("JSESSIONID", "/coursethemes", null, true);
      deleteCookie("JSESSIONID", "/common", null, true);
      deleteCookie("JSESSIONID", "/fonts", null, true);
      deleteCookie("JSESSIONID", "/javascript", null, true);
      deleteCookie("JSESSIONID", "/lib", null, true);
      deleteCookie("JSESSIONID", "/login", null, true);
      deleteCookie("JSESSIONID", "/themes", null, true);
      deleteCookie("JSESSIONID", "/ui", null, true);
      deleteCookie("JSESSIONID", "/ui-ultra", null, true);
      deleteCookie("JSESSIONID", "/learn/api", null, true);
      deleteCookie("JSESSIONID", "/webapps/software-updates", null, true);
      deleteCookie("JSESSIONID", "/webapps/dataIntegration", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-gate-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/ai", null, true);
      deleteCookie("JSESSIONID", "/webapps/goal", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-social-learning-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/api-gateway", null, true);
      deleteCookie("JSESSIONID", "/webapps/rubric", null, true);
      deleteCookie("JSESSIONID", "/webapps/streamViewer", null, true);
      deleteCookie("JSESSIONID", "/webapps/submission-services", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-content-model-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-group-mgmt-LEARN", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-ultra-conversion", null, true);
      deleteCookie("JSESSIONID", "/webapps/gradebook", null, true);
      deleteCookie("JSESSIONID", "/webapps/assessment", null, true);
      deleteCookie("JSESSIONID", "/webapps/videointegration", null, true);
      deleteCookie("JSESSIONID", "/webapps/vtbe-tinymce-ephox-hyperlinking", null, true);
      deleteCookie("JSESSIONID", "/webapps/vtbe-tinymce-ephox-spelling", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-common-styles-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-xss-filter-whitelist-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-xss-filter-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/vtbe-tinymce", null, true);
      deleteCookie("JSESSIONID", "/webapps/bbcms", null, true);
      deleteCookie("JSESSIONID", "/webapps/inline-grading", null, true);
      deleteCookie("JSESSIONID", "/webapps/taskprogress", null, true);
      deleteCookie("JSESSIONID", "/webapps/spreview", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-xss-input-validation-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/portfolio", null, true);
      deleteCookie("JSESSIONID", "/webapps/blogs-journals", null, true);
      deleteCookie("JSESSIONID", "/webapps/foundations-connector", null, true);
      deleteCookie("JSESSIONID", "/webapps/partner-cloud", null, true);
      deleteCookie("JSESSIONID", "/webapps/date-management", null, true);
      deleteCookie("JSESSIONID", "/webapps/discussionboard", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-selfpeer-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/caliper", null, true);
      deleteCookie("JSESSIONID", "/webapps/bbgs-goal-performance-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-mygrades-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/assignment", null, true);
      deleteCookie("JSESSIONID", "/webapps/allyintegration", null, true);
      deleteCookie("JSESSIONID", "/webapps/operational-data-store", null, true);
      deleteCookie("JSESSIONID", "/webapps/Bb-wiki-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/retention", null, true);
      deleteCookie("JSESSIONID", "/webapps/consulting-central", null, true);
      deleteCookie("JSESSIONID", "/webapps/school-data-sync", null, true);
      deleteCookie("JSESSIONID", "/webapps/bbgs-mindlinks-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/rs-lockdown-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/ppto-PanoptoCourseTool-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/oslt-jshack-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/goal-mastery", null, true);
      deleteCookie("JSESSIONID", "/webapps/time-time-plgnhndl-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-1027954530152-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/echo-library-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bbgs-nbc-content-integration-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-auth-provider-ldap-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-data-integration-ims-xml-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-1027720613048-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-data-integration-ss-xml-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/astr-1025622397760-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-auth-provider-cas-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-data-integration-flatfile-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-data-integration-lis-final-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-data-integration-lis-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bbtextbook", null, true);
      deleteCookie("JSESSIONID", "/webapps/mdb-sa-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/auth-saml", null, true);
      deleteCookie("JSESSIONID", "/webapps/bbcxcourseconversion", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-alerts-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bbcxcommoncartridge", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-theme-diff-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-financial-aid-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-mashups-flickr-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/privacy-disclosure", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-telephony-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/Bb-mobile-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/attendance", null, true);
      deleteCookie("JSESSIONID", "/webapps/cloudstorageintegration", null, true);
      deleteCookie("JSESSIONID", "/webapps/calendar", null, true);
      deleteCookie("JSESSIONID", "/webapps/blackboard", null, true);
      deleteCookie("JSESSIONID", "/webapps/portal", null, true);
      deleteCookie("JSESSIONID", "/webapps/enterpriseSurvey", null, true);
      deleteCookie("JSESSIONID", "/webapps/achievements", null, true);
      deleteCookie("JSESSIONID", "/webapps/cmsadmin", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-mashups-slideshare-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/telemetry", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-mashups-youtube-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/building-block-conversion", null, true);
      deleteCookie("JSESSIONID", "/webapps/item-analysis", null, true);
      deleteCookie("JSESSIONID", "/webapps/scor-scormengine-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/plugins", null, true);
      deleteCookie("JSESSIONID", "/webapps/ultraui", null, true);
      deleteCookie("JSESSIONID", "/webapps/notes", null, true);
      deleteCookie("JSESSIONID", "/webapps/foundations-token", null, true);
      deleteCookie("JSESSIONID", "/webapps/feature-flags", null, true);
      deleteCookie("JSESSIONID", "/webapps/bb-nautilus-BB5cc71db6522fe", null, true);
      deleteCookie("JSESSIONID", "/webapps/auth-provider-foundations", null, true);
      deleteCookie("JSESSIONID", "/webapps/asset-processor", null, true);
      deleteCookie("JSESSIONID", "/webapps/insight-report", null, true);
      deleteCookie("JSESSIONID", "/webapps/searchwidgets", null, true);
      if (guestLocaleCookie != null) {
        setCookie("guest.session.locale", guestLocaleCookie);
      }
      setCookie("JSESSIONID", startingJSessionCookie);
      if (typeof aptrinsic !== 'undefined') {
        window.aptrinsic('reset');
      }
      if (typeof pendo !== 'undefined') {
        pendo.clearSession();
      }
    });
  </script>
  <div id="loginFormFields" class="clearfix">
    <ul id="loginFormList" class="clearfix">
      <li class="clearfix">
        <label for="user_id">Username</label>
        <input type="text" name="user_id" id="user_id" size="25" maxlength="50" autocomplete="off">
      </li>
      <li class="clearfix">
        <label for="password">Password</label>
        <input size="25" name="password" id="password" type="password" autocomplete="off">
      </li>
      <li class="clearfix">
        <input id="entry-login" type="submit" value="Sign In" name="login" class="button expand inverse outline">
      </li>
    </ul>
    <div class="login-form-footer row collapse">
      <div class="stay-signed-in small-6 columns text-left">
      </div>
    </div>
  </div>
  <script src="/javascript/qrcodejs/qrcode.min.js"></script>
  <dialog id="mfa-registration" role="dialog" class="mfa-modal-container" aria-modal="true" style="display: none;">
    <div class="mfa-registration-modal mfa-modal" aria-labelledby="mfa-registration-title" aria-describedby="mfa-registration-description">
      <div class="mfa-modal-title">
        <h1 id="mfa-registration-title">Multi-Factor Authentication</h1>
      </div>
      <div class="registration-modal-body">
        <div id="mfa-registration-description" class="registration-modal-body-description">
          <div>
            <span>Step 1</span>
            <p>Download and install any authenticator app (e.g. <strong>Microsoft Authenticator, Google Authenticator, or Authy</strong>) on your phone.</p>
          </div>
          <div>
            <span>Step 2</span>
            <p class="web-content">Open the authenticator app and scan the image below using your phone's camera or copy the key.</p>
            <p class="mobile-content">Open the authenticator app and copy the key below.</p>
          </div>
        </div>
        <div class="registration-qr-code">
          <div class="qr-code-img" id="qrcode" tabindex="-1" aria-hidden="true" title="${mfaQRUri}"><canvas width="120" height="120" style="display: none;"></canvas><img
              src="data:image/png;base64,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"
              style="display: block;"></div>
          <input type="hidden" id="qr-uri" tabindex="-1" aria-hidden="true" value="${mfaQRUri}">
          <div class="secret-key-container">
            <p id="secretkey">${mf aSec retK ey}</p>
            <div class="copy-key">
              <a id="copy-secret-key" tabindex="0" onclick="copyTextToClipboard();">Copy key</a>
              <div id="copy-feedback" class="copyfeedback">
                <span style="padding: 4px">-</span>
                <div class="copy-success">
                  <span role="alert" aria-live="assertive" style="color: #007D2C;font-size: 12px;line-height: 18px;">Key copied</span>
                  <img class="check-icon" src="/images/ci/icons/complete.svg" aria-hidden="true">
                </div>
              </div>
            </div>
          </div>
        </div>
        <div class="next-progress-info">
          <span>Step 3</span>
          <p id="next-progress-description">Press next to enter the code and associate it with your account</p>
        </div>
      </div>
      <div class="modal-footer">
        <button id="reg-cancel-button" class="modal-button button-cancel">Cancel</button>
        <button id="reg-next-button" class="modal-button button-next">Next</button>
      </div>
    </div>
  </dialog>
  <script type="text/javascript">
    // Initialize QRCode with the provided URI and set display parameters
    var qrcode = new QRCode(document.getElementById("qrcode"), {
      text: document.getElementById("qr-uri").value,
      width: 120,
      height: 120,
      colorDark: "#000000",
      colorLight: "#ffffff",
      correctLevel: QRCode.CorrectLevel.H
    });
    // Event listener for the 'Next' button click in the registration dialog
    const nextButton = document.getElementById('reg-next-button');
    nextButton.addEventListener('click', function(event) {
      event.preventDefault();
      // Hide registration dialog and show verification dialog
      const registrationDialog = document.getElementById('mfa-registration');
      const verificationDialog = document.getElementById('mfa-totp-verification');
      const inputField = document.getElementById('totp-verification-input');
      registrationDialog.style.display = 'none';
      verificationDialog.style.display = 'flex';
      inputField.focus();
      // Update hidden input values to manage UI states
      document.getElementById('showMFARegistration').value = 'false';
      document.getElementById('showMFAVerification').value = 'true';
      document.getElementById('showMFASuccessFul').value = 'false';
    });
    // Event listener for the 'Cancel' button click in the registration dialog
    const regCancelButton = document.getElementById('reg-cancel-button');
    regCancelButton.addEventListener('click', function(event) {
      event.preventDefault();
      // Navigate to login page.
      window.location.href = '/webapps/login/?action=logout';
    });
    // Function to add a space after every 4 characters in the secret key
    function formatSecretKey() {
      const secretKeyElement = document.getElementById('secretkey');
      const secretKeyText = secretKeyElement.textContent;
      const formattedSecretKey = secretKeyText.replace(/(.{4})/g, '$1 ');
      secretKeyElement.textContent = formattedSecretKey;
    }
    // Call the function to format the displayed secret key
    formatSecretKey();
    // Function to copy text to clipboard
    function copyTextToClipboard(text) {
      const textArea = document.createElement('textarea');
      textArea.value = text;
      document.body.appendChild(textArea);
      textArea.select();
      const copykey = document.execCommand('copy');
      document.body.removeChild(textArea);
      return copykey;
    }
    // Event listener for the 'Copy' button click to copy the secret key to clipboard
    function handleCopykeyEvent() {
      event.preventDefault();
      const secretKeyElement = document.getElementById('secretkey');
      const secretKeyText = secretKeyElement.textContent;
      const unformattedSecretKey = secretKeyText.replace(/\s+/g, '');
      copyTextToClipboard(unformattedSecretKey);
      const copyFeedback = document.getElementById('copy-feedback');
      copyFeedback.style.display = 'flex';
      setTimeout(function() {
        copyFeedback.style.display = 'none';
      }, 10000);
      document.getElementById('copy-secret-key').focus();
    }
    document.getElementById('copy-secret-key').addEventListener('click', handleCopykeyEvent);
    document.getElementById('copy-secret-key').addEventListener('keydown', function(event) {
      if (event.key === 'Enter' || event.code === 'Space') {
        handleCopykeyEvent(event);
      }
    });
  </script>
  <dialog id="mfa-totp-verification" class="mfa-modal-container" style="display: none;">
    <div class="mfa-verification-modal mfa-modal" role="dialog" aria-modal="true" aria-labelledby="mfa-verification-title">
      <div class="mfa-modal-title">
        <h1 id="mfa-verification-title">Multi-Factor Authentication</h1>
      </div>
      <div class="verification-modal-body">
        <div class="verification-modal-body-description">
          <label for="totp-verification-input" class="custom-label">Type the Code</label>
          <p id="mfa-verification-description">Type the 6-digit temporary code generated with your authenticator application</p>
        </div>
        <div id="totp-verification-input-container" class="verification-input">
          <input name="secondaryAuthToken" id="totp-verification-input" type="text" onkeypress="return validateTOTP(event)" maxlength="6" tabindex="0" placeholder="000000" autocomplete="off" aria-describedby="mfa-verification-description"
            aria-invalid="false">
        </div>
        <div id="loading-spinner" class="centered">
          <div class="loader-outer">
            <div id="loader">
              <div class="loader-inner"></div>
            </div>
          </div>
        </div>
      </div>
      <div class="modal-footer">
        <button id="totp-back-button2" class="modal-button button-back">Back</button>
        <button id="totp-submit-button" class="modal-button button-submit" type="submit" onclick="showLoadingSpinner();" disabled="">Submit</button>
      </div>
    </div>
  </dialog>
  <script>
    window.onload = function() {
      const totpInput = document.getElementById("totp-verification-input");
      if (totpInput) {
        totpInput.focus();
      }
    }

    function validateTOTP(event) {
      const inputField = document.getElementById('totp-verification-input');
      const key = event.key;
      if ((key >= '0' && key <= '9') || key === 'Backspace' || (event.metaKey && key === 'a')) // for safari browser compatablity
      {
        return true; // Allow
      } else if (key === 'Enter') {
        if (inputField.value.length !== 6) {
          event.preventDefault();
        } else {
          showLoadingSpinner();
          return true;
        }
      } else {
        return false; // Block
      }
    }
    const inputField = document.getElementById('totp-verification-input');
    // To enable/disable the submit button based on input value.
    inputField.addEventListener('keyup', function() {
      const submitButton = document.getElementById('totp-submit-button');
      submitButton.disabled = !(inputField.value.length === 6);
    });
    inputField.addEventListener('input', function() {
      const errorMessageContainer = document.getElementById('totp-error');
      if (errorMessageContainer) {
        errorMessageContainer.style.display = 'none'; // Hide the error message on focus
      }
    });

    function showLoadingSpinner() {
      const spinner = document.getElementById('loading-spinner');
      const inputField = document.getElementById('totp-verification-input');
      const inputContainer = document.getElementById('totp-verification-input-container');
      const errorMessage = document.getElementById('errorMessage');
      const backbutton1 = document.getElementById('totp-back-button1');
      const backbutton2 = document.getElementById('totp-back-button2');
      if (inputField.value.length === 6 && !errorMessage) {
        inputContainer.style.display = 'none';
        spinner.style.display = "flex";
        if (backbutton1) {
          backbutton1.disabled = true;
        }
        if (backbutton2) {
          backbutton2.disabled = true;
        }
      } else if (errorMessage) {
        spinner.style.display = 'none';
        inputContainer.style.display = 'flex';
        inputField.setAttribute('aria-invalid', 'true');
      }
    }

    function clearTOTPCode() {
      document.getElementById('totp-verification-input').value = '';
    }
    const totpButton2 = document.getElementById('totp-back-button2');
    if (totpButton2) {
      totpButton2.addEventListener('click', function(event) {
        event.preventDefault();
        clearTOTPCode();
        window.location.href = '/webapps/login/?action=logout';
      });
    }
  </script>
  <dialog id="mfa-registration-success" role="dialog" class="mfa-modal-container" aria-modal="true" style="display: none;">
    <div class="success-modal mfa-modal" tabindex="0" aria-labelledby="mfa-success-title" aria-describedby="mfa-success-description">
      <div class="mfa-modal-title">
        <h1 id="mfa-success-title">Multi-Factor Authentication</h1>
      </div>
      <div class="modal-success-body">
        <div id="mfa-success-description" class="success-description">
          <div>
            <span>You are all set</span>
            <p>You have enabled multi-factor authentication using your authenticator app.</p>
          </div>
          <div>
            <p class="web-content">We will now ask for a login code anytime you log in.</p>
            <p class="mobile-content">We will now ask for a login code anytime you log in on a device we don't recognize.</p>
          </div>
        </div>
      </div>
      <div class="modal-footer">
        <button id="mfa-registration-succes-button" class="modal-button button-done">Done</button>
        <input type="hidden" id="mfaSuccessfulNavUrl" value="${mfaSuccessfulNavUrl}">
      </div>
    </div>
  </dialog>
  <script>
    const sucessNavButton = document.getElementById('mfa-registration-succes-button');
    sucessNavButton.addEventListener('click', function(event) {
      event.preventDefault();
      const navUrl = document.getElementById('mfaSuccessfulNavUrl').value;
      window.location = navUrl;
    });
  </script>
  <input type="hidden" name="showMFARegistration" id="showMFARegistration" value="$showMFARegistration">
  <input type="hidden" name="showMFAVerification" id="showMFAVerification" value="$showMFAVerification">
  <input type="hidden" name="showMFASuccessFul" id="showMFASuccessFul" value="$showMFASuccessFul">
  <input type="hidden" name="action" value="login">
  <input type="hidden" name="new_loc" value="/ultra/courses/_278408_1/cl/outline">
  <input type="hidden" name="blackboard.platform.security.NonceUtil.nonce.ajax" value="14cea294-2a74-4d0f-a4fa-7e6649bd7363">
</form>

Text Content

Open visual assistant software. Accessible with the keyboard via ALT + 1
Please enable JavaScript in your browser for the Blackboard application to
function.
 * Username
 * Password
 * 




MULTI-FACTOR AUTHENTICATION

Step 1

Download and install any authenticator app (e.g. Microsoft Authenticator, Google
Authenticator, or Authy) on your phone.

Step 2

Open the authenticator app and scan the image below using your phone's camera or
copy the key.

Open the authenticator app and copy the key below.

${mf aSec retK ey}

Copy key
-
Key copied
Step 3

Press next to enter the code and associate it with your account

Cancel Next


MULTI-FACTOR AUTHENTICATION

Type the Code

Type the 6-digit temporary code generated with your authenticator application



Back Submit


MULTI-FACTOR AUTHENTICATION

You are all set

You have enabled multi-factor authentication using your authenticator app.

We will now ask for a login code anytime you log in.

We will now ask for a login code anytime you log in on a device we don't
recognize.

Done
Sign in with third-party account
 * UIC Shibboleth Login

 * Menu
 * 
 * Learning
   * Learning Management System
   * Accessibility in Teaching
   * Learning Analytics
   * Virtual Classrooms
   
 * Academics
   * Programs of Study
   * Colleges & Schools
   * Student Support
   
 * Research
   * Research Impact
   * Research Strengths
   * Resources & Facilities
   * Student Research
   
 * Life at UIC
   * Living On & Around Campus
   * Campus Resources
   * Exploring Chicago
   * City Transportation
   * Essential Chicago
   
 * Health Care
 * Alumni
 * Login
   * Password Management
   * Activate UIC Netid
   * Student Email
   * Service Status
   


MENTAL HEALTH RESOURCES

Sometimes, all you need to get through a stressful time are some online
resources. Other times, online resources are a helpful addition to other
therapeutic services. While visiting our site, please consider taking an
anonymous mental health screener, or look at the following resources for stress,
anxiety, depression, suicidal thoughts, grief and loss, or tragedy. These are
not a replacement for therapy, but we hope they help to point you in the right
direction.

 * Learn More

Listen


NEED HELP SELECTING A MAJOR OR MINOR?

Did you know UIC offers 95 undergraduate degrees and 85 minors? Don’t stress
about picking your path. Come to the Major Minor Fair! At our annual fair,
you’ll meet reps from every major and minor. They’ll help you understand your
options, potential opportunities, and career paths related to each. Come ready
to discover what fits your interests and goals!

 * Get your license

Listen


BLACKBOARD

Preparing students for success in their careers and in life is our constant
mission. Whether taking classes in person or online, we are committed to
providing every resource necessary to UIC students. Blackboard Learning
Management Systems creates digital learning spaces that enable academic
collaboration.

 * Sign In

 * 4
   8
   ,
   5
   8
   6
   0
   
   
   DIGITAL EXAMS
   
   
   
   Blackboard quizzes, tests, and exams submitted in the last 7 days.

 * 3
   3
   ,
   2
   9
   5
   0
   
   
   DIGITAL ASSIGNMENTS
   
   
   
   Assignments submitted by students in the last 7 days.

 * 6
   2
   4
   0
   
   
   SCORM ASSESSMENTS
   
   
   
   Sharable Content Object Reference Model (SCORM) assessments completed in the
   last 7 days.

1200 West Harrison St

Chicago, Illinois 60607

(312) 996-7000

LTS

Career Services

Schedule of Classes

UIC Library

Academic Calendar

Linkedin Learning

Student Services

Turbo Vote (Get Registered)

UIC Connection

Web Store

UIC Bookstore

Technology Solutions