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
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 DOMName: login — POST /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