CINXE.COM
Central Authentication Service | Yale University
<!DOCTYPE html><html lang="en"> <!-- Yale Update UX review --><head> <meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /><!-- Yale Update Begin --><!-- <title layout:title-pattern="$LAYOUT_TITLE $CONTENT_TITLE" th:text="${#strings.defaultString(#themes.code('cas.theme.name'), 'CAS - Central Authentication Service')}"> </title> --><title> Central Authentication Service | Yale University</title> <!-- Yale Update End --><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><!-- Yale Update Begin --><!--<link href="../../static/css/cas.css" rel="stylesheet" th:remove="tag"/>--><script type="text/javascript" src="/cas/ruxitagentjs_ICANVfqru_10303241106123517.js" data-dtconfig="uam=1|app=ea7c4b59f27d43eb|cuc=gfb4nfia|mel=100000|featureHash=ICANVfqru|dpvc=1|lastModification=1731506836145|srsr=20000|tp=500,50,0|rdnt=1|uxrgce=1|agentUri=/cas/ruxitagentjs_ICANVfqru_10303241106123517.js|reportUrl=/cas/rb_bf58285owg|rid=RID_-818152658|rpid=-1918518252|domain=yale.edu"></script><link href="/cas/css/base.css" rel="stylesheet" /><link href="/cas/css/signin.css" rel="stylesheet" /><link rel="stylesheet" type="text/css" href="webjars/bootstrap/css/bootstrap.min.css" /><link rel="stylesheet" type="text/css" href="webjars/font-awesome/css/fontawesome.min.css" /><!-- Yale Update End --> <link href="/cas/css/base.css" rel="stylesheet" /><!-- Yale update --><link rel="stylesheet" type="text/css" href="/cas/webjars/normalize.css/8.0.1/normalize.css" /><link rel="stylesheet" type="text/css" href="/cas/webjars/bootstrap/5.2.0/css/bootstrap-grid.min.css" /><link rel="stylesheet" type="text/css" href="/cas/webjars/material-components-web/14.0.0/dist/material-components-web.min.css" /><link rel="stylesheet" type="text/css" href="/cas/webjars/mdi__font/6.5.95/css/materialdesignicons.min.css" /><link rel="stylesheet" type="text/css" href="/cas/webjars/datatables/1.12.1/css/jquery.dataTables.min.css" /><link rel="stylesheet" type="text/css" href="/cas/css/cas.css" /><!-- Yale Update Begin --><!-- <link rel="shortcut icon" th:href="@{${#strings.defaultString(#themes.code('cas.favicon.file'), '/favicon.ico')}}" /> --><link rel="shortcut icon" href="/cas/images/favicon.ico" type="image/x-icon" /><!-- Yale Update End --></head> <body class="login mdc-typography"> <script type="text/javascript" src="/cas/webjars/jquery/3.6.1/jquery.min.js"></script> <script type="text/javascript" src="/cas/webjars/datatables/1.12.1/js/jquery.dataTables.min.js"></script> <!-- Yale Update Begin --><script type="text/javascript" src="webjars/bootstrap/js/bootstrap.bundle.min.js"></script> <script type="text/javascript" src="/cas/js/yale-cas-scripts.js"></script> <!-- Yale Update End --><script type="text/javascript" src="/cas/webjars/es5-shim/4.5.9/es5-shim.min.js"></script> <script type="text/javascript" src="/cas/webjars/css-vars-ponyfill/2.4.7/dist/css-vars-ponyfill.min.js"></script> <script type="text/javascript" src="/cas/webjars/material-components-web/14.0.0/dist/material-components-web.min.js"></script> <script type="text/javascript" src="/cas/js/cas.js"></script> <script type="text/javascript" src="/cas/js/material.js"></script> <script> if (typeof resourceLoadedSuccessfully === "function") { resourceLoadedSuccessfully(); } $(() => { typeof cssVars === "function" && cssVars({onlyLegacy: true}); }) var trackGeoLocation = false; </script> <div> <!-- Yale Update Begin --><!-- <header id="app-bar" class="mdc-top-app-bar mdc-top-app-bar--fixed mdc-elevation--z4 shadow-sm"> <nav class="mdc-top-app-bar__row navbar navbar-dark bg-dark"> <div class="container-fluid container-fluid d-flex align-items-center justify-content-between"> <section class="mdc-top-app-bar__section mdc-top-app-bar__section--align-start"> <button th:if="${'true' == #strings.defaultString(#themes.code('cas.drawer-menu.enabled'), 'true')}" class="mdc-icon-button mdc-top-app-bar__navigation-icon btn btn-outline-light" id="drawerButton" data-bs-toggle="offcanvas" data-bs-target="#app-drawer"> <span class="mdi mdi-menu fa fa-bars"></span> <span class="visually-hidden">menu</span> </button> </section> <section class="mdc-top-app-bar__section"> <span class="cas-brand mx-auto"> <span class="visually-hidden" th:text="${#strings.defaultString(#themes.code('cas.theme.name'), 'CAS')}">CAS</span> <a th:href="@{/}"> <img id="cas-logo" class="cas-logo" th:title="${#strings.defaultString(#themes.code('cas.theme.name'), 'CAS')}" th:src="@{${#strings.defaultString(#themes.code('cas.logo.file'), '/images/cas-logo.png')}}" /> </a> </span> </section> <section class="mdc-top-app-bar__section mdc-top-app-bar__section--align-end"> <button id="cas-notifications-menu" th:if="${'true' == #strings.defaultString(#themes.code('cas.notifications-menu.enabled'), 'true')}" class="mdc-icon-button mdc-top-app-bar__action-item cas-notification-toggle btn btn-outline-light" aria-label="Bookmark this page" data-bs-toggle="modal" data-bs-target="#cas-notification-dialog"> <span class="mdi mdi-bell-alert fa fa-bell"></span> <span class="visually-hidden">notifications</span> <i id="notifications-count" class="notifications-count count">2</i> </button> <a id="cas-user-account" th:href="@{/account}" th:if="${accountProfileManagementEnabled != null && accountProfileManagementEnabled && ticketGrantingTicketId != null}" class="mdc-icon-button mdc-top-app-bar__action-item" aria-label="User Account"> <span class="mdi mdi-account-group"></span> <span class="visually-hidden">user account</span> </a> </section> </div> </nav> </header> <div th:replace="fragments/logindrawer :: logindrawer"/> --><!-- Yale Update End --><script>var countMessages = 0;</script> <div class="mdc-dialog cas-notification-dialog modal" id="cas-notification-dialog" role="alertdialog" aria-modal="true" aria-labelledby="notif-dialog-title" aria-describedby="notif-dialog-content"> <div class="mdc-dialog__container modal-dialog"> <div class="mdc-dialog__surface modal-content"> <h1 class="mdc-dialog__title mt-lg-2 modal-header modal-title" id="notif-dialog-title"> Notifications </h1> <div class="mdc-dialog__content modal-body" id="notif-dialog-content"> <div id="cookiesSupportedDiv" class="cas-notification-message mdc-typography--body1" style="display: none"> <h6 class="mdc-typography--headline6 mdi mdi-alert-circle fas fa-exclamation-circle">Cookies Disabled</h6> <p class="text-wrap small">Your browser does not support cookies. The browser's ability to store or read cookies is essential for single sign-on to work. Please consult your browser settings and ensure cookie support is turned on.</p> </div> </div> <footer class="mdc-dialog__actions modal-footer"> <button type="button" class="mdc-button mdc-button--raised mdc-dialog__button btn btn-primary" data-mdc-dialog-action="accept" data-mdc-dialog-button-default data-bs-dismiss="modal"> <span class="mdc-button__label">OK</span> </button> </footer> </div> </div> <div class="mdc-dialog__scrim"></div> </div> <script type="text/javascript"> (material => { let header = { init: () => { header.attachTopbar(); material.autoInit(); }, attachDrawer: () => { let elm = document.getElementById('app-drawer'); if (elm != null) { let drawer = material.drawer.MDCDrawer.attachTo(elm); let closeDrawer = evt => { drawer.open = false; }; drawer.foundation.handleScrimClick = closeDrawer; document.onkeydown = evt => { evt = evt || window.event; if (evt.keyCode == 27) { closeDrawer(); } }; header.drawer = drawer; return drawer; } return undefined; }, attachTopbar: drawer => { drawer = header.attachDrawer(); let dialog = header.attachNotificationDialog(); if (drawer != undefined) { header.attachDrawerToggle(drawer); } if (dialog != undefined) { header.attachNotificationToggle(dialog); } }, checkCaps: ev => { let s = String.fromCharCode(ev.which); if (s.toUpperCase() === s && s.toLowerCase() !== s && !ev.shiftKey) { ev.target.parentElement.classList.add('caps-on'); } else { ev.target.parentElement.classList.remove('caps-on'); } }, attachDrawerToggle: drawer => { let appBar = document.getElementById('app-bar'); if (appBar != null) { let topAppBar = material.topAppBar.MDCTopAppBar.attachTo(appBar); topAppBar.setScrollTarget(document.getElementById('main-content')); topAppBar.listen('MDCTopAppBar:nav', () => { drawer.open = !drawer.open; }); return topAppBar; } return undefined; }, attachNotificationDialog: () => { let element = document.getElementById('cas-notification-dialog'); if (element != null) { return material.dialog.MDCDialog.attachTo(element); } return undefined; }, attachNotificationToggle: dialog => { let btn = document.getElementById('cas-notifications-menu'); if (btn != null) { btn.addEventListener('click', () => { dialog.open(); }); } } } function supportsCookies() { try { document.cookie = 'testcookie=1'; let ret = document.cookie.indexOf('testcookie=') !== -1; document.cookie = 'testcookie=1; expires=Thu, 01-Jan-1970 00:00:01 GMT'; return ret; } catch (e) { console.log(e); return false; } } document.addEventListener('DOMContentLoaded', () => { if (material) { header.init(); } if (!supportsCookies()) { countMessages++; window.jQuery('#cookiesSupportedDiv').show(); } if (countMessages === 0) { window.jQuery('#notifications-count').remove(); window.jQuery('#cas-notifications-menu').remove(); } else { window.jQuery('#notifications-count').text(`(${countMessages})`) } }); })(typeof mdc !== 'undefined' && mdc); </script> </div> <!-- Yale Update Begin --><!-- <div class="mdc-drawer-scrim"></div> --><!-- Yale Update End --><div class="mdc-drawer-app-content mdc-top-app-bar--fixed-adjust d-flex justify-content-center"> <main role="main" id="main-content" class="container-lg py-4"> <div id="content" class="d-flex justify-content-center theCustomContentFont"> <div class="d-flex justify-content-center flex-md-row flex-column mdc-card mdc-card-content card flex-grow-1"> <section id="loginForm" class="login-section login-form card-body border-start-0 border-end-0 p-0"> <div class="d-flex flex-column justify-content-between m-auto"> <div> <!-- Yale Update Begin --><div class="card-header"> <div id="yaleserviceui"> <h1> Central Authentication Service </h1> </div> </div> <!-- <div class="service-ui" th:replace="fragments/serviceui :: serviceUI"> <a href="fragments/serviceui.html">service ui fragment</a> </div> --><div class="card-header bg-white"> <div id="yalenavbaruiLoginui" class="bg-white"> <div class="row mobile-border"> <div class="col-sm-6"> <nav class="navbar navbar-default left-nav" aria-label="left navigation"> <ul class="navbar-navflex-row"> <li class="nav-item"> <a class="nav-brand yaleClickManageNetIDAccount" href="https://veritas.its.yale.edu/netid/" target="_blank">Manage NetID Account</a> </li> </ul> </nav> </div> <div class="col-sm-6 footer-link-mobile"> <nav class="navbar navbar-default right-nav" aria-label="right navigation"> <ul class="navbar-nav flex-row"> <li class="nav-item"> <a class="nav-brand yaleClickAccessibility desktop-hide" href="https://usability.yale.edu/web-accessibility/accessibility-yale" target="_blank">Accessibility at Yale</a> </li> <li class="nav-item"> <a class="nav-brand yaleClickPrivacyPolicy desktop-hide" href="https://www.yale.edu/privacy-policy" target="_blank">Privacy Policy</a> </li> <li class="nav-item"> <a class="nav-brand yaleClickhelp" href="https://helpme.yale.edu" target="_blank">Help</a> </li> <!--<li class="nav-item"> <a class="nav-brand yaleClickCASLogin" href="/cas/login">Sign In</a> </li>--><!--<li class="nav-item"> <a class="nav-brand yaleClickManageNetIDAccount desktop-hide" th:href="${@beanYaleDuoAuthenticationService.getTheCustomManageYaleNetIdUrl()}" target="_blank">Manage NetID Account</a> </li> --></ul> </nav> </div> </div> </div> </div> <!-- Yale Update End --></div> <div class="row"> <!-- Yale Update ref1--><div class="col-sm-6 order-sm-2"> <!-- Yale Update ref2--><!-- Yale Update Begin--><!-- <div class="form-wrapper"> --><div class="card-body sign-in-container"> <!-- Yale Update End --><form class="sign-in-form" method="post" id="fm1" action="login"> <!-- Yale Update --><!-- Yale Update Begin --><!-- <div id="login-form-controls" th:unless="${loginFormViewable or loginFormEnabled}"> <div id="loginErrorsPanel" class="alert alert-danger banner banner-danger banner-dismissible" th:if="${#fields.hasErrors('*')}"> <p th:each="err : ${#fields.errors('*')}" th:utext="${err + ' '}">Example error</p> <!--<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a> </div> </div> --><!-- Yale Update End --><div id="login-form-controls"> <!-- Yale Update Begin --><!-- <div th:if="${existingSingleSignOnSessionAvailable}"> <i class="mdi mdi-alert-decagram fas fa-exclamation-triangle"></i> <span id="existingSsoMsg" th:if="${registeredService}" class="mdc-button__label" th:utext="#{screen.welcome.forcedsso(${existingSingleSignOnSessionPrincipal?.id},${registeredService.name})}"/> <span id="existingSsoMsg" th:unless="${registeredService}" class="mdc-button__label" th:utext="#{screen.welcome.forcedsso(${existingSingleSignOnSessionPrincipal?.id}, 'CAS')}"/> </div> <h3 th:unless="${existingSingleSignOnSessionAvailable}" class="text-center"> <i class="mdi mdi-security fas fa-shield-alt"></i> <span th:utext="#{screen.welcome.instructions}">Enter your Username and Password:</span> </h3> <div id="loginErrorsPanel" class="banner banner-danger alert alert-danger banner-dismissible" th:if="${#fields.hasErrors('*')}"> <p th:each="err : ${#fields.errors('*')}" th:utext="${err + ' '}">Example error</p> <!--<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a> </div> --><!-- Yale update Begin --><fieldset> <h2>Sign In</h2> <!-- Yale update End --><section class="cas-field form-group my-3" id="usernameSection"> <!-- Yale update Begin --><!-- <label for="username" class="mdc-text-field mdc-text-field--outlined control-label w-100"> <span class="mdc-notched-outline"> <span class="mdc-notched-outline__leading"></span> <span class="mdc-notched-outline__notch"> <span class="mdc-floating-label" th:utext="#{screen.welcome.label.netid}">Username</span> </span> <span class="mdc-notched-outline__trailing"></span> </span> <input class="mdc-text-field__input form-control" id="username" size="25" type="text" th:readonly="!${@casThymeleafLoginFormDirector.isLoginFormUsernameInputVisible(#vars)}" th:field="*{username}" th:accesskey="#{screen.welcome.label.netid.accesskey}" autocapitalize="none" spellcheck="false" autocomplete="username" /> <!-- Yale Update ; remove required </label> <div class="mdc-text-field-helper-line"> <div class="mdc-text-field-helper-text mdc-text-field-helper-text--validation-msg" aria-hidden="true"> <span id="usernameValidationMessage" th:utext="#{username.required}"></span> </div> </div> --><label for="username">NetID</label> <div> <input class="form-control stretchy required" id="username" type="text" autocomplete="off" name="username" value=""/></div> <!-- Yale update End --><script type="text/javascript"> /*<![CDATA[*/ var username = ""; var disabled = false; if (username != null && username !== '') { $('#username').val(username); if (disabled) { $('#usernameSection').hide(); } } /*]]>*/ </script> </section> <section class="cas-field form-group my-3 mdc-input-group form-group" id="passwordSection"> <div class="mdc-input-group-field mdc-input-group-field-append"> <!-- Yale update Begin --><!-- <div class="caps-check"> <label for="password" class="mdc-text-field caps-check mdc-text-field--outlined control-label mdc-text-field--with-trailing-icon control-label w-100"> <span class="mdc-notched-outline"> <span class="mdc-notched-outline__leading"></span> <span class="mdc-notched-outline__notch"> <span class="mdc-floating-label" th:utext="#{screen.welcome.label.password}">Password</span> </span> <span class="mdc-notched-outline__trailing"></span> </span> <input class="mdc-text-field__input form-control pwd" type="password" id="password" size="25" th:accesskey="#{screen.welcome.label.password.accesskey}" th:field="*{password}" autocomplete="off"/> <!-- Yale Update ; remove required <button class="reveal-password align-self-end mdc-button mdc-button--unelevated mdc-input-group-append mdc-icon-button btn btn-primary" tabindex="-1" type="button"> <i class="mdi mdi-eye reveal-password-icon fas fa-eye"></i> <span class="visually-hidden">Toggle Password</span> </button> </label> <div class="mdc-text-field-helper-line"> <div class="mdc-text-field-helper-text mdc-text-field-helper-text--validation-msg" aria-hidden="true"> <span id="passwordValidationMessage" th:utext="#{password.required}"></span> </div> </div> <div class="mdc-text-field-helper-line caps-warn"> <div class="mdc-text-field-helper-text mdc-text-field-helper-text--persistent mdc-text-field-helper-text--validation-msg text-danger"> <span th:utext="#{screen.capslock.on}"/> </div> </div> </div> --><label for="password">Password</label> <div> <input class="form-control stretchy required" type="password" id="password" autocomplete="off" name="password" value=""/><span id="capslock-on-feature" class="hide"> <p> <i class="fa fa-exclamation-circle"></i> <span>CAPSLOCK key is turned on!</span> </p> </span> </div> <!-- Yale update End --></div> </section> <section class="cas-field form-group my-3"> </section> <section class="cas-field"> <input type="hidden" name="execution" value="8523337c-a393-4532-9d04-a691c6a79fb2_ZXlKaGJHY2lPaUpJVXpVeE1pSXNJblI1Y0NJNklrcFhWQ0lzSW10cFpDSTZJbUkyWTJGbE16TXhMVEkxWTJNdE5EaGxNQzA1WlRRM0xUa3hZemhoWkdWbE9UQm1ZU0o5LnN1Z1phVGZMWFdjdkx1QUR3d3B2OTRWOVpkYmJWRHEtYVhpWl9pckdUWlQyeldwRTZTb2tCTW95dGp2X2tXc0JtQ1lna2FJd2tJNnBMYmNmUGJHQWFCX2Z5V3hGTS0ydEU4TmJhWWc2azBLS0ZTaWlraUlhcXV1ZGtZcERVZDNCNVRGa09WSnRnZjduN1BzVV8ybzFtVmpUeVlGRzhZbV82Wlo0eldvZjA4aVhtM1RsRTJiR1h6OHctLUJwNHJLaTdLMFJNQW91M2UyWDJEUVB0WHV4RkJwRnNZcWpVNkpSR2R0V0hxVmdKd19IanhaNnM3eVJXV2tWNkRWS3RGWGozNHRhMTdYSmZIZVV5bk8xM25lUEcwcTVUVTYwQUFROHN5bEc5djdsbWk2YnpKMXJnaURmRnBKM3M5aE45R3VyZVhVenoxdVd1TTJPWENWWk16TTVHbFNXV2dvaDZLeDV2Nk5QNGFjNUVjMXROaFVRZG1xOVZyaTh3b2Z3V3lpcWpUWDIyaHY3WDJtc2Q5eTY0Q0ktSGlqN3BIM05KT3hQTHUxb0JpSTkzYmJzMWlwdzl3elM1Q3o5TTZVdF9DdjdRSWFqTEVVZk5MMEFSQmwxRW1qcEtnZ3JtYVRMcHhPWGctWTdaUHIyZFNNR2ZHUUtMLWhkM2Iwd3JNOTRUNmNSN2VSSzZzMEdDQVFzbUNQb05DN2czb0dkNWJ4T3lEeW1oSGpSc2tpb2htWkdYbVRVVmFOa283bThPazB1NktYWU9NT3hYR3dqWGxMNzc3ZTRjWndfZlZUX1NxUjBYQkt0U3ZUU0paYmZOMzVyVkdIX3NmcVl6eDZOaWhPbUczbzAxa3NJc2UxZ0E2VVA5OGNleHk3YUZvZkZXN0ZPM1hqSGZiYXBqV1pBeGw2UUNJMURTaDdMSnVfd2Rjb2xPb2cwZndMSXdfY0ZaSmxkZ1cwYkRSUEcyQ0xOX3p2a0QtcGZuY1dvWEkyU2s0LVoxWW5PWVJRcERzMXVWTVNQa254Z09hWU42QS1JVHYyTmZ3TzBfREZxVHh5NGs2WTFaV05KWEFGdGxCdVNTTlBPSmlHWmM0R19LNlpuc2Q4SmtzdW1PdWVZS2JiaHZISlczRmdmaUtNak9OQ1pwMkFtZXNzN3ZwbU1qQVNYVDlrS250eHQzRmxkWUs1N0FuOVRWS0JsVDhvWnhZTTZ4aVB4ck5TZC02TzIyV25kcWc1SzE4UWdzVEFhVVFQSEFyTEFmTlZBTTZHOEd1eTVSelhFWXhoVE16bUJkbEY0czBqNGJQUWtCZFBjZm01TVllb1FDNWt4VDBJV19aMHZUNzhEaFlsSzdlb0tidmFLWmEzYV9OUVlBNUNLYmlyOS03cW9EMEJlWWQ5NVpIS2JMY0ZBUURiT0ZLVWRGNDNnSEdPN3dSTVVlY3dNb0lIMUpPZnMtXy1ZSV9uMkdTc0U4MW81M3pSZmdmamtzTlhUbmZiTmFNVEllWjJnQkkxQUhOY05UNk00U2twRXBuUGFRUVhEbGFCemI1RVFKTHNUQUM5ZExiZ3ZuMldSRmozR0I3bUhyVUc5SWlUSU1ldFgwYzY5ZEtQdnJ2d0xtSDFEZVQ3UFh6M3prZ3BaRVRZZUhhUEQ1Z2xpWFNROUJyenlqckJKMEdMOTRVb0VZODktTFZwUk1WcUZybU9BbzM5QUtzVjdHS0p6Y0NXX3pIZF9RcTFWNU1tSDVCTHZ1VC1UaFd4SVMxeDh4OV9BVWM3SHBCWXF3N25NNGd4VEJtWHlDc0lER08xcnJXNHcyTnZQTnB2ckFWSnFiY3pSbWpiMnRpelUyQ3B1ZHlLbmYwSUpIMzZwSjd0S0dBeGZ0SDhXRlRGelQwbUkya1Q4Zjl0bTVFYl9seGVGTFR0MFpCU1VNZS1YNXd4MVQ0ZG1nSy1jbjQyUktFUHhoSEtldkdZLXdrOEZuZWVzLW5Ed2ktcHJYYVllU19jbkItTk9wb3dmaXJta1hsRGZXMUZDdl8yVFl4X0hTY1NQNENfem9valY4WmxjUkQ0ZnhhV0lEN1hMT0pmc2RUMlJUQjQyODg2OW90RU1ZVHhJWGxmLVdZWFdpMk1kLXNOZ2ppNWNfYldpeVdXZE42NXVxby1OcHNES284eThteldiWGhKOVhFSzlKOGZnWUpqLXRMbC1hcXc1d010RWZTUVZJOEJjMVc1V094TkxzclU4NFVFMkxhazJuQmwxWXdyc0YzNURCRmFtSUFkUFpFajNDUUdrME1sZVI2S3FLUXh5NEl4UEctRnZJNTAyMHFLTHN0bVhwUERIVlpvSXRqRzlaVFdXZlI5eFZTWkw5TEpFZ0I0bnlXNHE4SFVmbnRETkNCTUo0cVk0NERBM1o0azdOV2tIVElRQ0U1ZllnVG1wVFpIWENJZl9JUTg3emhPTHd5RkNLZDFYVlhCYkNVY1U2UFFhX2ltV2h2MkFoREFHY2VfY1JhUEd5akV3MXNPankyeUJtY0dwUXZPQWViMXFhQUNLcnMtMFhTZ0h6dmFSWEFhb2tBby0tTWVpcXJPd2pzMFB2enoxcS1mU2R2Z1ZPTUpfY0dFNjF2SE9wV0Q1Tl96V3N4UXlsWHNVRU9JeWVKZnRNc2dJTkpjazk2OHdZS1EwZGxrM3ZqNjNyZGk3VW5nZVdOclI1eHlDTDdZcV9YazctM1NaM0JwNzU2SlRBVE5ub0hpT0pLMTNmRFpJX2dHdjFWSUwzTTJ1elZ3ZFUxN0VGUWh4VVEta2N6dzlLNjBjdFRRMXUxM0t4MDNuSEhXMVdkUTVuOUVfNG96WjB0WHVaZEwtYXpoWjJSTjh0WDdGLWJoYmE2WEVkVmZMeFE5SG5HdUh4a1RCcTVWNERfTllNZThGS2ZuNGI1WE9rQ2FlSVltS0hjVFVCRWtoTEVObF94b2J0ZUx2UXh1WVJ1TE03UWhVblFoaXdWZnhYcDdtdmloenV2cm1ITll2RVRpVWI5X055WEhHbWRHcUV2YlYtVWVzdElqOFBUemFhNFgtcXFRVnMzR2tFdHBOZVNLTkVTbmd6dzFlMGVORGhNLUZST0hQNy1oRkhiQ05KZUY5a2RBbVJTTVNkeFk1S2dwWm1MQ0NWc3laTGN0dWRLanJIb1owaEozTldxU1h0ZnJBNDhORXU3UElnRldPYUtaTy1IQ2RlaDMxbEh1M0xUUlNvVEFxZHdwU1FDMUtBRHE4Yko5NFNVajdpREVaQlFtRTdKeVVLSDdWbHpoRndpSUozSVZfOE02QXBIMFhhYkkyLWpya3hGbnBKS3NVNlZsYk5wT1Z5WmRHQ010Y1BCZ1VHbFdvQjllSVN0UmkzNlBpQ1lGeTV4S3BSczJsN2N2NmJCcU5rYlFKSWQ3QmJaRVJ4NXJwektKUUFER3hXbm9fSGRISW1ydXlkdUFmVFgyMDlDanRaVEtmQlI4WUp2T1ctS0pTeURYSVNUQVNWd0g5RTYzYzVzeXdqMWZYdE1aYjBHSzJTWWE1b0xsSG82WXA1bk4zTFNsUUIzNnlJMnNqOUVyT3Q3c082SDRFWUhxcGI5Ri10QVdwQWIxUGxUNDUyWVRYRG03UlQ5VmlTMEp3UEFuR2pxT3RSak5IeUdFbENmV1djYU5fbEt2QllyZ29ORTUwUGJzNzV0YUxwQ2xpcG1HMHpvV2RDZVBFbkFNTEV3WmxfdjlFMm04SkZ6Wk1sd1RDSllYQkNfdmQ3dkV2RXhyS1VqTkVmRW5rY0tjaTNyRTRFQ2h6WjNQNEp6NnhncWlubmQwY1oyaDZXcG1LTlNaTEFGWGxrSEJlcF9RYVBnY283ZzAtaVFTZG1wR0N5cFVRSl85ODEwU3ozNDVLeUlvZUZUWExYN1YwNXhkeUd0a0ZNT0d2aHZ3UVlFWWlIc0R0ckZZRDFIc2lNQngtSUlPckh2NnFZRDk0MXpKSC1pWlpVSm5YeGRvdWNVUjk5Nk1HakhxSjZxeUV6anNLb3RTN2VYQjJnNjkydFZmaVZYanZxSEsyek5qc0MtRXhwWDk4MGJMaXRVb1pQLVN1NFRIQk5HZ2puZlY0T0xuTnNBbGhtYTlKRnVZTC1maUhjOER3MGxJSkpGbV9ocnRiVHFXZnhXX2I0MUpyUXRZS2h1aHpNaTBCRXc2LVN4N0hQY01CNk1VNlBsMTlyMC0wTlh6Q0p1ZXZCRXl1MUNsdEVINkdkZTdSeXNuN21UUy1DS3dadGFpT3pYNU9iS3dtSEg5cWxDSE1JQy01ZklMbndqb2lqS1BsR0dRRlNnc0I0SkZjWVRtRnJ5eVM0STJiTDhZN2k0dDlRaDN2VUtGNTNBWkpkZlowZ2l5RTRyUXozd3BoNVRhMlpOV3NDZmNWUU1QV2NZQ2I3YWNmQkRBeU5aeTJrbjZEV2NYREsyY0VSTG93ZG5JSldxX2tXZGJnanlBdnM2dmwyci0zSVlWVXVTY0gyNUVtZXdmOTRuYThkci1LMEk0S1hWZ2o2VDdxV3BmQ1VtUHAyRTRYcFFKQVlOQzg1dXA5UWxMcUtWdEF1LTg3YWV1UUxiMGpGa0xiYk5USERsbnU2anhyOXVZMHAxeTVrVFduQ1hCRkliSTdPN3RmbXFsckZFZEIxZjRNLUlkejBYbkt6NElDaW0tclFueWZCZWFJZDFreUF1MWh6TkZmY1ZjdThJdEp4WWVtZFBSVnk4VWd4UzF0end5Q1R2cnJZem43TWItdjlhQlF1ZEplOGVibnRvWENrYjBmVjk3R0tQb01yenpNbHlldlQ3bmhLYmZMSDN2cndDT2N1R00tQUxxZXJDX0N2RUhJdWpxY1BMUnl6UUJ5OGp2OEN4emFSV19ubEZQYzRZUkhwM3lMNmRQNlB5V29jT2prVHd3a1U2aEd4M3RiZVhBQkxKcmczYmdCcTNSZldUdlI3WTIzZXNwcklTaG5qaWpWcHpaMGNXNTNCSXd1SFhPU2QwcDB5cDF6VE8zV25ZQjJvdVVmcnBLVFo3QUZoRDJGVDBTeUNfUlBQTHZRajJZSFFlZ2xYelRKd0pzcE91b3BRUzBLV0p3SldCcVZPNU5Oek1tWWZQOXVMbnVvbGNBUXJuN2NQVlkzVzNyczJWai1OUTNGV2JyODlEMDUtMWlfQUxhQ1Vwd2NLRHZXZFVOSXRtWU1pNFl2S0pxdElEXzVPb1lfbTJLRlVxeE5ucTg3T1dNVHJ6aEt3T05mZ25GOVRJanVDUEE5U2dEaEZPMTlrSkd2S0E1WmRVcURXOURMLTNWSGxOYlhpdVVBcXpyMmJJVmYzUTNGZDhnbW93TVJRNDhaUllVMG5MdkE2NDQtbDBMRm82Z0NwcU5pbnVwQUhuSmc2ci02SjdBRFJIT0NscmR1OExFLUZQTHpaZmh6ZmRjZEhZYjdXTWtIbjB1TGtiOGNFSzNEeHNybnBQOThvTVNNYVNndno5VVQzdHVBOExQRl92T0FQT19GbVg0SlJkMUE2cG1EeGVkdHo2c29jUHBIUU1jaC1mckJ1ajBfZDYyTF9CMGF2ZHBnb2dUdlkwa3hjeWs4d1p2b0V5YkFFcUVpbGNMYm9kdjREZjlqeFdHdVBFSEtiZlYtTHVFTmRJdHhpLWFLa1JSdU5NeEphTGhEajFXY2VSN18ycGN6S0FHNEg0elA2T2lwaGNXZ3BJWWVJanBHY2o2TGViUm1YNnNEdk1lN0JKRlp6TExlYkxqcXRKWTlBdlRERXJxSmtKSmpjMVh3ZVJ6T1E4OU8yVUJObE9LTDVvM1pzLXlZenZ6cjRpX0Q5UFFfdk9BMVlQY0FkN3Qxa0hUdkpUaDRVbjR0eG10TV8wbHpaM2tEUlFCT2JKNlpnQnloY0o4UHZTUlBMS21KTDIyMWNSWlhlalJESm5zZy1OR0Z5TURkRHdLcTdhWlg4a2l1MGk3WkZzUlFuTVJBV2N2Zlk2T0ljaFM1VGFFQzdFSVRXZ0N0U1NjN3dBbVNDRjRLYVFaRnBPZU9DQlRIU0FpVDBlTEdEZHBaTTJsc3MxTjhJNUhlbjhwaDZSdERZem9pejlaanN0SjdpQnZpeEJvc1JXZzAtMFdzekpnUEFtUlJ1LVl1ajVwTGNmNFYxdVExTzBEaUMxYnhHWjBVaEdjYVBJaGJqajR1VXBoVGlwa3dZSUZNdUNVcThQMnRTU3NFOEYxU19KNkJBYzBQaFp2R1hnQ2VJU1dnc2Q4YXJOZGt1dUV1ak9pMXdpUjZMTXN6UDl0RHFJaWNheHN4MjduWUxhMTN6WE9oekpjVVhUNzFuNDVkX2NrTGRGekN3dEdrOFpLOC1pajJXNUc0SUtSMGVHODBTd0lzdkE4RGs5Vlk4UXJqQUxncU9CTEtKTll0OWYwNEVHUGFtcXdzTlJacXFCQW5YcURPa2doSlBodkttUmZaYVhjdHU2SHlzSjFiUmR4YmdwMHBVVmFfT2wtdmp6Ul91M3pkRVRueXlkWGVnR1RMVy1jNnM1VVdLQ05mQksxNVpaM1NIc2N2dW1FMTU1SWx1d3NLRE1EUVpmcy5ySldZcV9FWnFMTXhueXpUdTdLZjhnQXFmUE5jTHpfS3RxV0dTclBYRm1pNHNnZ3B1Vk9xRmVxQ0gzdnJQdUVOWHhCeUZKeGhTampmS2VjQ21uaFBSZw=="/><input type="hidden" name="_eventId" value="submit"/><input type="hidden" name="geolocation"/></section> <!-- Yale Update Begin --><section> <!-- add this div to handle the alert for blank username or password alert --><div role="alert" class="alert alert-danger alert-dismissible fade hide" id="theUsernamePasswordBlankAlert"> <a href="#" class="close" data-dismiss="alert" aria-label="close" hidden="true">×</a> <span>Sorry, you must enter a NetID and Password.</span> </div> <div id="yalepmlinks"> <div> <a class="forgot-password" href="https://veritas.its.yale.edu/netid/forgot-password" onclick="forgot_password_click();" target="_blank">Forgot My Password</a> <p/></div> </div> <!-- Yale Update End --><!-- Yale update; update to use btn btn-block btn-submit class --><button class="btn btn-block btn-submit" name="submitBtn" accesskey="l" type="submit"> <span class="mdc-button__label">Sign In</span> </button> </section> <!-- Yale Update --></fieldset> <!-- Yale Update --></div> </form> <!-- Yale Update Begin --><!-- <hr th:if="${loginFormViewable and loginFormEnabled}" class="my-4"/> --><!-- Yale Update End --><!-- Yale Update Begin --><!-- <span th:if="${loginFormViewable and loginFormEnabled}"> <span th:remove="tag" th:if="${'true' == #strings.defaultString(#themes.code('cas.pm-links.enabled'), 'true')}"> <div th:replace="fragments/pmlinks :: pmlinks"/> </span> </span> --><!-- Yale Update End --><script type="text/javascript"> /*<![CDATA[*/ var i = "One moment please..." var j = "Sign In" /*]]>*/ $(window).on('pageshow', function () { $(':submit').prop('disabled', false); $(':submit').attr('value', j); }); $(document).ready(function () { $("#fm1").submit(function () { $(":submit").attr("disabled", true); $(":submit").attr("value", i); return true; }); }); </script> </div> </div><!-- Yale Update Ref2 --> <!-- Yale Update Begin --><div class="col-sm-6 order-sm-1"> <div class="card-body"> <div id="yaleprivacyui"> <div class="info-container"> <div class="info"> <h2 class="info-header">Make sure your session is secure</h2> <p>Before entering your NetID and password, verify that the URL for this page begins with: <b>https://secure.its.yale.edu</b></p> <p>To protect your privacy, quit your web browser when you are finished with your session</p> </div> </div> </div> </div> </div> </div><!-- Yale Update Ref1 --> <!-- <span th:if="${loginFormViewable and loginFormEnabled}"> <div th:replace="fragments/loginsidebar :: loginsidebar"/> </span> --><footer> <div class="footer-content"> <img class="footer-image" src="/cas/images/yale-logo-sprite.svg" alt="Yale University" /><div class="footer_legal_copy"><span>Copyright © 2024 <a class="yaleClickCopyRight" href="https://www.yale.edu/" target="_blank">Yale University.</a><br> All Rights Reserved.</span></div> </div> <div class="footer-links"> <ul class="nav footer-nav right-nav" aria-label="footer-nav"> <li class="nav-item mobile-hide"> <a class="nav-link" href="https://usability.yale.edu/web-accessibility/accessibility-yale" target="_blank">Accessibility at Yale</a> </li> <li class="nav-item mobile-hide"> <a class="nav-link" href="https://www.yale.edu/privacy-policy" target="_blank">Privacy Policy</a> </li> </ul> </div> </footer> <!-- Yale Update End --></div> </section> <span> </span> </div> </div> </main> </div> <!-- Yale Update Begin --><!-- <div th:replace="fragments/footer :: footer"> <a href="fragments/footer.html">Footer</a> fragment will go here </div> --><!-- Yale Update End --></body> </html>