[java-identity-provider] branch main updated: IDP-1669 - Accessibility on IdP pages
Scott Cantor
cantor.2 at osu.edu
Fri Mar 4 20:25:47 UTC 2022
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch main
in repository java-identity-provider.
View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=ef13a96171365c24da604ff879384372fdedc78d
The following commit(s) were added to refs/heads/main by this push:
new ef13a9617 IDP-1669 - Accessibility on IdP pages
ef13a9617 is described below
commit ef13a96171365c24da604ff879384372fdedc78d
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Fri Mar 4 15:25:44 2022 -0500
IDP-1669 - Accessibility on IdP pages
https://shibboleth.atlassian.net/browse/IDP-1669
Review of pages for accessibility warnings.
Adjusted styles to fix header levels.
Corrected broken fieldset/legend usage.
Removed inline style feature.
---
.../net/shibboleth/idp/module/views/admin/hello.vm | 6 +-
.../idp/module/views/admin/unlock-keys.vm | 16 +-
.../net/shibboleth/idp/module/views/duo.vm | 3 +-
.../module/views/intercept/attribute-release.vm | 138 ++++++++-------
.../module/views/intercept/expiring-password.vm | 3 +-
.../idp/module/views/intercept/impersonate.vm | 31 ++--
.../idp/module/views/intercept/terms-of-use.vm | 17 +-
.../net/shibboleth/idp/module/views/login-error.vm | 2 +-
.../net/shibboleth/idp/module/views/login.vm | 40 ++---
.../idp/module/views/spnego-unavailable.vm | 4 +-
.../views/client-storage/client-storage-read.vm | 4 +-
.../views/client-storage/client-storage-write.vm | 3 +-
idp-conf/src/main/resources/views/custom-styles.vm | 188 ---------------------
idp-conf/src/main/resources/views/error.vm | 3 +-
.../src/main/resources/views/logout-complete.vm | 4 -
.../src/main/resources/views/logout-propagate.vm | 5 +-
idp-conf/src/main/resources/views/logout.vm | 5 +-
idp-conf/src/main/resources/views/user-prefs.vm | 12 +-
idp-war/src/main/webapp/css/placeholder.css | 22 ++-
19 files changed, 147 insertions(+), 359 deletions(-)
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/admin/hello.vm b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/admin/hello.vm
index cc3b77094..6268c6c94 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/admin/hello.vm
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/admin/hello.vm
@@ -20,7 +20,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")" media="all">
- #parse("custom-styles.vm")
</head>
<body>
@@ -30,8 +29,7 @@
</header>
<section>
- <h1>#springMessageText("idp.title", "Web Login Service")</h1>
- <h2>#springMessageText("hello-world.greeting", "Greetings"), <em>$encoder.encodeForHTML($subjectContext.getPrincipalName())</em></h2>
+ <h1>#springMessageText("hello-world.greeting", "Greetings"), <em>$encoder.encodeForHTML($subjectContext.getPrincipalName())</em></h1>
<p><strong>Authenticated by</strong><br />
#foreach ($result in $subjectContext.getAuthenticationResults().entrySet())
<small>$encoder.encodeForHTML($result.getKey())</small><br/>
@@ -46,7 +44,7 @@
#if ($attributeContext && !$attributeContext.getUnfilteredIdPAttributes().isEmpty())
- <p><strong>Attributes</strong><br />
+ <p><strong>Attributes</strong><br/>
#foreach ($a in $attributeContext.getUnfilteredIdPAttributes())
#if (!$a.getValues().isEmpty())
<small><strong>$encoder.encodeForHTML($a.getId())</strong></small><br/>
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/admin/unlock-keys.vm b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/admin/unlock-keys.vm
index 0aa32bbf8..23317bc50 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/admin/unlock-keys.vm
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/admin/unlock-keys.vm
@@ -21,7 +21,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")" media="all">
- #parse("custom-styles.vm")
</head>
<body>
@@ -36,9 +35,7 @@
<p><a href="$request.getContextPath()/profile/SAML2/Unsolicited/SSO?providerId=https://sp.example.org/shibboleth">Validation Link</a></p>
#else
#if ($eventId == "InvalidMessage")
- <div class="output-message output--error">
- <p>#springMessageText("idp.unlock-keys.error", "Unlock failed; check log for specific message.")</p>
- </div>
+ <p class="output-message output--error">#springMessageText("idp.unlock-keys.error", "Unlock failed; check log for specific message.")</p>
#end
<form action="$flowExecutionUrl" method="post">
@@ -51,13 +48,11 @@
-->
<fieldset>
- <legend><span>Passwords</span></legend>
+ <legend><span>Secret Key Passwords</span></legend>
+
<label for="password">#springMessageText("idp.unlock-keys.keystorePassword", "DataSealer Keystore Password")</label>
<input type="password" name="keystorePassword" id="password" />
- </fieldset>
-
- <fieldset>
- <legend><span>Passwords</span></legend>
+
<label for="password">#springMessageText("idp.unlock-keys.keyPassword", "DataSealer Key Password")</label>
<input type="password" name="keyPassword" id="password" />
</fieldset>
@@ -68,7 +63,8 @@
-->
<fieldset>
- <legend><span>Passwords</span></legend>
+ <legend><span>Private Key Passwords</span></legend>
+
<label for="password">#springMessageText("idp.unlock-keys.privateKeyPassword", "Private Key Password")</label>
<input type="password" name="privateKeyPassword" id="password" />
</fieldset>
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/duo.vm b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/duo.vm
index 1d549429f..a2e2ff4d4 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/duo.vm
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/duo.vm
@@ -26,7 +26,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")" media="all">
- #parse("custom-styles.vm")
<style>
#duo_iframe {
width: 100%;
@@ -43,7 +42,7 @@
</header>
<section>
- <h2>#springMessageText("idp.login.duoRequired", "Authentication with Duo is required for the requested service.")</h2>
+ <h1>#springMessageText("idp.login.duoRequired", "Authentication with Duo is required for the requested service.")</h1>
<noscript>#springMessageText("idp.login.duoNoScript", "The Duo service requires JavaScript.")</noscript>
<script src="$request.getContextPath()$duoScriptPath"></script>
<iframe id="duo_iframe"
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/attribute-release.vm b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/attribute-release.vm
index 0fd48b76e..6ab823af3 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/attribute-release.vm
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/attribute-release.vm
@@ -33,76 +33,82 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")">
- #parse("custom-styles.vm")
</head>
<body>
- <form action="$flowExecutionUrl" method="post" style="padding:10px">
- #parse("csrf/csrf.vm")
-
<main class="main">
<header>
<img class="main-logo" src="$request.getContextPath()#springMessageText("idp.logo", "/images/placeholder-logo.png")" alt="#springMessageText("idp.logo.alt-text", "logo")" />
</header>
-
<section>
- <h2>Information Release</h2>
- #if ($rpOrganizationLogo)
- <img class="service-logo" src="$encoder.encodeForHTMLAttribute($rpOrganizationLogo)" alt="logo for $encoder.encodeForHTMLAttribute($serviceName)" />
- #end
+ <h1>Information Release</h1>
+ #if ($rpOrganizationLogo)
+ <img class="service-logo" src="$encoder.encodeForHTMLAttribute($rpOrganizationLogo)" alt="logo for $encoder.encodeForHTMLAttribute($serviceName)" />
+ #end
- #if ($serviceName)
- <p>
- #springMessageText("idp.attribute-release.serviceNameLabel", "You are about to access the service:")<br>
- <strong>$encoder.encodeForHTML($serviceName)</strong>
- #if ($rpOrganizationName)
- #springMessageText("idp.attribute-release.of", "of") $encoder.encodeForHTML($rpOrganizationName)
- #end
- </p>
- #end
-
- #if ($serviceDescription)
- <p>
- #springMessageText("idp.attribute-release.serviceDescriptionLabel", "Description as provided by this service:")<br>
- <strong>$encoder.encodeForHTML($serviceDescription)</strong>
- </p>
- #end
+ #if ($serviceName)
+ <p>
+ #springMessageText("idp.attribute-release.serviceNameLabel", "You are about to access the service:")<br>
+ <strong>$encoder.encodeForHTML($serviceName)</strong>
+ #if ($rpOrganizationName)
+ #springMessageText("idp.attribute-release.of", "of") $encoder.encodeForHTML($rpOrganizationName)
+ #end
+ </p>
+ #end
+
+ #if ($serviceDescription)
+ <p>
+ #springMessageText("idp.attribute-release.serviceDescriptionLabel", "Description as provided by this service:")<br>
+ <strong>$encoder.encodeForHTML($serviceDescription)</strong>
+ </p>
+ #end
- <ul>
- #if ($informationURL)
- <li>
- <a href="$informationURL">#springMessageText("idp.attribute-release.informationURLLabel", "Additional information about the service")</a>
- </li>
- #end
-
- #if ($privacyStatementURL)
- <li>
- <a href="$privacyStatementURL">#springMessageText("idp.attribute-release.privacyStatementURLLabel", "Data privacy information of the service")</a>
- </li>
- #end
- </ul>
-
+ <ul>
+ #if ($informationURL)
+ <li>
+ <a href="$informationURL">#springMessageText("idp.attribute-release.informationURLLabel", "Additional information about the service")</a>
+ </li>
+ #end
+
+ #if ($privacyStatementURL)
+ <li>
+ <a href="$privacyStatementURL">#springMessageText("idp.attribute-release.privacyStatementURLLabel", "Data privacy information of the service")</a>
+ </li>
+ #end
+ </ul>
+
+ <form action="$flowExecutionUrl" method="post" style="padding:10px">
+ #parse("csrf/csrf.vm")
<div class="boxed">
- <h3>#springMessageText("idp.attribute-release.attributesHeader", "Information to be Provided to Service")</h3>
-
+ <h2>#springMessageText("idp.attribute-release.attributesHeader", "Information to be Provided to Service")</h2>
+
#foreach ($attribute in $attributeReleaseContext.getConsentableAttributes().values())
- <p>$encoder.encodeForHTML($attributeDisplayNameFunction.apply($attribute))</p>
- <fieldset>
- #foreach ($value in $attribute.values)
- #if ($replaceDollarWithNewline)
- #set ($encodedValue = $encoder.encodeForHTML($value.getDisplayValue()).replaceAll($encoder.encodeForHTML('$'),"<br>"))
- #else
- #set ($encodedValue = $encoder.encodeForHTML($value.getDisplayValue()))
- #end
- #if ($attributeReleaseFlowDescriptor.perAttributeConsentEnabled)
- <input id="$attribute.id" type="checkbox" name="_shib_idp_consentIds" value="$encoder.encodeForHTML($attribute.id)" checked>
- <label for="$attribute.id"><strong>$encodedValue</strong></label>
- #else
- <strong>$encodedValue</strong>
- <input id="$attribute.id" type="hidden" name="_shib_idp_consentIds" value="$encoder.encodeForHTML($attribute.id)" checked>
- #end
+ #if ($attributeReleaseFlowDescriptor.perAttributeConsentEnabled)
+ <fieldset>
+ <legend><p>$encoder.encodeForHTML($attributeDisplayNameFunction.apply($attribute))</p></legend>
+ #else
+ <p>$encoder.encodeForHTML($attributeDisplayNameFunction.apply($attribute))</p>
+ #end
+ #foreach ($value in $attribute.values)
+ #if ($replaceDollarWithNewline)
+ #set ($encodedValue = $encoder.encodeForHTML($value.getDisplayValue()).replaceAll($encoder.encodeForHTML('$'),"<br>"))
+ #else
+ #set ($encodedValue = $encoder.encodeForHTML($value.getDisplayValue()))
#end
- </fieldset>
+ <p>
+ #if ($attributeReleaseFlowDescriptor.perAttributeConsentEnabled)
+ <input id="$attribute.id" type="checkbox" name="_shib_idp_consentIds" value="$encoder.encodeForHTML($attribute.id)" checked>
+ <label for="$attribute.id"><strong>$encodedValue</strong></label>
+ #else
+ <strong>$encodedValue</strong>
+ <input id="$attribute.id" type="hidden" name="_shib_idp_consentIds" value="$encoder.encodeForHTML($attribute.id)" checked>
+ #end
+ </p>
+ #end
+ #if ($attributeReleaseFlowDescriptor.perAttributeConsentEnabled)
+ </fieldset>
+ #end
#end
+ </fieldset>
</div>
<p>#springMessageText("idp.attribute-release.confirmationQuestion", "The information above would be shared with the service if you proceed. Do you agree to release this information to the service every time you access it?")</p>
@@ -115,16 +121,19 @@
#end
#if ($attributeReleaseFlowDescriptor.doNotRememberConsentAllowed)
- <input id="_shib_idp_doNotRememberConsent" type="radio" name="_shib_idp_consentOptions" value="_shib_idp_doNotRememberConsent">
- <label for="_shib_idp_doNotRememberConsent">#springMessageText("idp.attribute-release.doNotRememberConsent", "Ask me again at next login")<br /><small>#springMessageText("idp.attribute-release.doNotRememberConsentItem", "I agree to send my information this time.")</small></label>
+ <input id="_shib_idp_doNotRememberConsent" type="radio" name="_shib_idp_consentOptions" value="_shib_idp_doNotRememberConsent">
+ <label for="_shib_idp_doNotRememberConsent">#springMessageText("idp.attribute-release.doNotRememberConsent", "Ask me again at next login")</label>
+ <p><small>#springMessageText("idp.attribute-release.doNotRememberConsentItem", "I agree to send my information this time.")</small></p>
#end
#if ($attributeReleaseFlowDescriptor.doNotRememberConsentAllowed || $attributeReleaseFlowDescriptor.globalConsentAllowed)
- <input id="_shib_idp_rememberConsent" type="radio" name="_shib_idp_consentOptions" value="_shib_idp_rememberConsent" checked>
- <label for="_shib_idp_rememberConsent">#springMessageText("idp.attribute-release.rememberConsent", "Ask me again if information changes")<br /><small>#springMessageText("idp.attribute-release.rememberConsentItem", "I agree that the same information will be sent automatically to this service in the future.")</small></label>
+ <input id="_shib_idp_rememberConsent" type="radio" name="_shib_idp_consentOptions" value="_shib_idp_rememberConsent" checked>
+ <label for="_shib_idp_rememberConsent">#springMessageText("idp.attribute-release.rememberConsent", "Ask me again if information changes")</label>
+ <p><small>#springMessageText("idp.attribute-release.rememberConsentItem", "I agree that the same information will be sent automatically to this service in the future.")</small></p>
#end
#if ($attributeReleaseFlowDescriptor.globalConsentAllowed)
- <input id="_shib_idp_globalConsent" type="radio" name="_shib_idp_consentOptions" value="_shib_idp_globalConsent">
- <label for="_shib_idp_globalConsent">#springMessageText("idp.attribute-release.globalConsent", "Do not ask me again")<br /><small>#springMessageText("idp.attribute-release.globalConsentItem", "I agree that <strong>all</strong> of my information will be released to <strong>any</strong> service.")</small></label>
+ <input id="_shib_idp_globalConsent" type="radio" name="_shib_idp_consentOptions" value="_shib_idp_globalConsent">
+ <label for="_shib_idp_globalConsent">#springMessageText("idp.attribute-release.globalConsent", "Do not ask me again")</label>
+ <p><small>#springMessageText("idp.attribute-release.globalConsentItem", "I agree that <strong>all</strong> of my information will be released to <strong>any</strong> service.")</small></p>
#end
</fieldset>
@@ -137,10 +146,10 @@
<button class="button--secondary button--full" type="submit" name="_eventId_AttributeReleaseRejected">#springMessageText("idp.attribute-release.reject", "Reject")</button>
</div>
</div>
-
#if ($attributeReleaseFlowDescriptor.doNotRememberConsentAllowed || $attributeReleaseFlowDescriptor.globalConsentAllowed)
<p>#springMessageText("idp.attribute-release.consentMethodRevoke", "This setting can be revoked at any time with the checkbox on the login page.")</p>
#end
+ </form>
</section>
</main>
<footer class="footer">
@@ -148,6 +157,5 @@
<p>#springMessageText("idp.footer", "Insert your footer text here.")</p>
</div>
</footer>
- </form>
</body>
</html>
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/expiring-password.vm b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/expiring-password.vm
index 5bb83a328..f0ecc4d94 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/expiring-password.vm
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/expiring-password.vm
@@ -25,7 +25,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")">
- #parse("custom-styles.vm")
</head>
<body>
<main class="main">
@@ -34,7 +33,7 @@
</header>
<section>
- <h2>#springMessageText("idp.login.expiringSoon", "Your password will be expiring soon!")</h2>
+ <h1>#springMessageText("idp.login.expiringSoon", "Your password will be expiring soon!")</h1>
<p>#springMessageText("idp.login.changePassword", "To create a new password now, go to") <a href="#" target="_blank">#</a>.</p>
<p>Your login will proceed in <strong>20</strong> seconds or you may <a href="login-retry">click here</a> to continue</p>
<p>#springMessageText("idp.login.proceedBegin", "Your login will proceed in 20 seconds or you may click")
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/impersonate.vm b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/impersonate.vm
index 1dff24169..c67f19398 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/impersonate.vm
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/impersonate.vm
@@ -22,7 +22,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")">
- #parse("custom-styles.vm")
</head>
<body>
@@ -43,23 +42,21 @@
<form action="$flowExecutionUrl" method="post">
#parse("csrf/csrf.vm")
- <fieldset>
- <label for="impersonation">#springMessageText("idp.impersonate.login-as", "Login as")</label>
- <input id="impersonation" name="principal" type="text" />
-
- <!-- Defaults to input box above, example below populates a select list from an IdPAttribute. -->
- <!--
- #set ($attributeContext = $rpContext.getSubcontext('net.shibboleth.idp.attribute.context.AttributeContext'))
- #set ($usernamesAttribute = $attributeContext.getUnfilteredIdPAttributes().get("impersonatableUsernames"))
- <select id="impersonation" name="principal">
- #if ($usernamesAttribute)
- #foreach ($username in $usernamesAttribute.getValues())
- <option value="$encoder.encodeForHTML($username.getValue())">$encoder.encodeForHTML($username.getValue())</option>
- #end
+ <label for="impersonation">#springMessageText("idp.impersonate.login-as", "Login as")</label>
+ <input id="impersonation" name="principal" type="text" />
+
+ <!-- Defaults to input box above, example below populates a select list from an IdPAttribute. -->
+ <!--
+ #set ($attributeContext = $rpContext.getSubcontext('net.shibboleth.idp.attribute.context.AttributeContext'))
+ #set ($usernamesAttribute = $attributeContext.getUnfilteredIdPAttributes().get("impersonatableUsernames"))
+ <select id="impersonation" name="principal">
+ #if ($usernamesAttribute)
+ #foreach ($username in $usernamesAttribute.getValues())
+ <option value="$encoder.encodeForHTML($username.getValue())">$encoder.encodeForHTML($username.getValue())</option>
#end
- </select>
- -->
- </fieldset>
+ #end
+ </select>
+ -->
<div class="grid md-2">
<div class="grid-item">
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/terms-of-use.vm b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/terms-of-use.vm
index c0989caae..9d43c2a4c 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/terms-of-use.vm
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/intercept/terms-of-use.vm
@@ -23,7 +23,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")">
- #parse("custom-styles.vm")
</head>
<body>
<main class="main">
@@ -41,14 +40,14 @@
<form action="$flowExecutionUrl" method="post">
<fieldset>
<legend><span>Agreement</span></legend>
- <form action="$flowExecutionUrl" method="post" >
- #parse("csrf/csrf.vm")
- <input id="accept" type="checkbox" name="_shib_idp_consentIds" value="$encoder.encodeForHTML($termsOfUseId)" required>
- <label for="accept">#springMessageText("idp.terms-of-use.accept", "I accept the terms of use")
- #if ($requireCheckbox)
- <br/><small>#springMessageText("idp.terms-of-use.required", "Please check this box if you want to proceed.")</small>
- #end
- </label>
+ <form action="$flowExecutionUrl" method="post" >
+ #parse("csrf/csrf.vm")
+ <input id="accept" type="checkbox" name="_shib_idp_consentIds" value="$encoder.encodeForHTML($termsOfUseId)" required>
+ <label for="accept">#springMessageText("idp.terms-of-use.accept", "I accept the terms of use")
+ #if ($requireCheckbox)
+ <br/><small>#springMessageText("idp.terms-of-use.required", "Please check this box if you want to proceed.")</small>
+ #end
+ </label>
</fieldset>
<div class="grid md-2">
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/login-error.vm b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/login-error.vm
index f2f69bd17..2b083b5b0 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/login-error.vm
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/login-error.vm
@@ -20,5 +20,5 @@
#end
#if ($message)
- <h3 class="output-message output--error">$encoder.encodeForHTML($message)</h3>
+ <p class="output-message output--error">$encoder.encodeForHTML($message)</p>
#end
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/login.vm b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/login.vm
index 0679f3b4a..d23763d6e 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/login.vm
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/login.vm
@@ -28,7 +28,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")">
- #parse("custom-styles.vm")
</head>
<body>
<main class="main">
@@ -37,7 +36,7 @@
#set ($serviceName = $rpUIContext.serviceName)
#if ($serviceName && !$rpContext.getRelyingPartyId().contains($serviceName))
- <h2>#springMessageText("idp.login.loginTo", "Login to") $encoder.encodeForHTML($serviceName)</h2>
+ <h1>#springMessageText("idp.login.loginTo", "Login to") $encoder.encodeForHTML($serviceName)</h1>
#end
</header>
@@ -67,36 +66,29 @@
#parse("login-error.vm")
- <fieldset>
- <label for="username">#springMessageText("idp.login.username", "Username")</label>
- <input id="username" name="j_username" type="text"
- value="#if($username)$encoder.encodeForHTML($username)#end" />
- </fieldset>
-
- <fieldset>
- <label for="password">#springMessageText("idp.login.password", "Password")</label>
- <input type="password" name="j_password" id="password" value="" />
- </fieldset>
+ <label for="username">#springMessageText("idp.login.username", "Username")</label>
+ <input id="username" name="j_username" type="text"
+ value="#if($username)$encoder.encodeForHTML($username)#end" />
+
+ <label for="password">#springMessageText("idp.login.password", "Password")</label>
+ <input type="password" name="j_password" id="password" value="" />
## You may need to modify this to taste, such as changing the flow name checked to authn/MFA.
#if (!$authenticationContext.getActiveResults().containsKey('authn/Password'))
- <fieldset>
<input type="checkbox" name="donotcache" value="1" id="donotcache" />
<label for="donotcache">#springMessageText("idp.login.donotcache", "Don't Remember Login")</label>
- </fieldset>
#end
- <fieldset>
- <legend><span>Login Permissions</span></legend>
- <input id="_shib_idp_revokeConsent" type="checkbox" name="_shib_idp_revokeConsent" value="true" />
- <label for="_shib_idp_revokeConsent">#springMessageText("idp.attribute-release.revoke", "Clear prior granting of permission for release of your information to this service.")</label>
- </fieldset>
+ <input id="_shib_idp_revokeConsent" type="checkbox" name="_shib_idp_revokeConsent" value="true" />
+ <label for="_shib_idp_revokeConsent">#springMessageText("idp.attribute-release.revoke", "Clear prior granting of permission for release of your information to this service.")</label>
- <fieldset>
- <button type="submit" name="_eventId_proceed"
- onClick="this.childNodes[0].nodeValue='#springMessageText("idp.login.pleasewait", "Logging in, please wait...")'"
- >#springMessageText("idp.login.login", "Login")</button>
- </fieldset>
+ <div class="grid">
+ <div class="grid-item">
+ <button type="submit" name="_eventId_proceed"
+ onClick="this.childNodes[0].nodeValue='#springMessageText("idp.login.pleasewait", "Logging in, please wait...")'"
+ >#springMessageText("idp.login.login", "Login")</button>
+ </div>
+ </div>
</form>
<ul>
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/spnego-unavailable.vm b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/spnego-unavailable.vm
index c74f8564a..ee6f17b52 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/spnego-unavailable.vm
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/views/spnego-unavailable.vm
@@ -20,7 +20,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")">
- #parse("custom-styles.vm")
</head>
<body onload="window.location = '$errorUrl'">
<main class="main">
@@ -29,11 +28,10 @@
</header>
<section>
- <h2>#springMessageText("idp.title", "Web Login Service") - #springMessage("idp.title.suffix", "Error")</h2>
+ <h1>#springMessageText("idp.title", "Web Login Service") - #springMessage("idp.title.suffix", "Error")</h1>
<p>#springMessageText("${eventKey}.message", "Your web browser doesn't support authentication with your desktop login credentials.")</p>
<p><a class="button secondary--button" href="$errorUrl">#springMessageText("spnego-unavailable.return", "Cancel the attempt.")</a></p>
</section>
-
</main>
<footer class="footer">
<div class="cc">
diff --git a/idp-conf/src/main/resources/views/client-storage/client-storage-read.vm b/idp-conf/src/main/resources/views/client-storage/client-storage-read.vm
index a08143668..1afe818d0 100644
--- a/idp-conf/src/main/resources/views/client-storage/client-storage-read.vm
+++ b/idp-conf/src/main/resources/views/client-storage/client-storage-read.vm
@@ -22,7 +22,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")">
- #parse("custom-styles.vm")
<script>
<!--
#include("client-storage/local-storage-read.js")
@@ -32,14 +31,13 @@
<body onload="doLoad()">
<main class="main">
<section>
- <h2>$title - $titleSuffix</h2>
+ <h1>$title - $titleSuffix</h1>
<p>$springMacroRequestContext.getMessage("idp.client-storage-read.text", "Loading login session information from the browser...")</p>
<noscript>
$springMacroRequestContext.getMessage("idp.client-storage.no-js", "Since your browser does not support JavaScript, you must press the Continue button once to proceed.")
</noscript>
#parse("client-storage/read.vm")
</section>
-
</main>
<footer class="footer">
<div class="cc">
diff --git a/idp-conf/src/main/resources/views/client-storage/client-storage-write.vm b/idp-conf/src/main/resources/views/client-storage/client-storage-write.vm
index a3356df02..066cbdbc1 100644
--- a/idp-conf/src/main/resources/views/client-storage/client-storage-write.vm
+++ b/idp-conf/src/main/resources/views/client-storage/client-storage-write.vm
@@ -22,7 +22,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")">
- #parse("custom-styles.vm")
<script>
<!--
#include("client-storage/local-storage-write.js")
@@ -32,7 +31,7 @@
<body onload="doSave()">
<main class="main">
<section>
- <h2>$title - $titleSuffix</h2>
+ <h1>$title - $titleSuffix</h1>
<p>$springMacroRequestContext.getMessage("idp.client-storage-write.text", "Saving login session information to the browser...")</p>
<noscript>
<div class="content">
diff --git a/idp-conf/src/main/resources/views/custom-styles.vm b/idp-conf/src/main/resources/views/custom-styles.vm
deleted file mode 100644
index 4c3e481de..000000000
--- a/idp-conf/src/main/resources/views/custom-styles.vm
+++ /dev/null
@@ -1,188 +0,0 @@
-## Custom styles
-##
-## idp.styles.background-color (Default: #ECEFF1)
-## idp.styles.link-color (Default: #1534E3)
-## idp.styles.button-color (Default: #1534E3)
-## idp.styles.button-hover-color (Default: #1A237E)
-## idp.styles.body-color (Default: #32424A)
-## idp.styles.message-color (Default: #7A2D00)
-## idp.styles.error-color (Default: #B50024)
-## idp.styles.success-color (Default: #1C7D40)
-## idp.styles.inactive-color (Default: #999999)
-##
-<style>
-body, hr {
- background-color: #springMessageText("idp.styles.background-color", "#ECEFF1");
-}
-main section + section {
- border-top: 1px solid #springMessageText("idp.styles.background-color", "#ECEFF1");
-}
-header {
- border-bottom: 1px solid #springMessageText("idp.styles.background-color", "#ECEFF1");
-}
-input[type="text"]:read-only,
-input[type="email"]:read-only,
-input[type="password"]:read-only,
-input[type="telephone"]:read-only,
-input[type="tel"]:read-only,
-input[type="url"]:read-only,
-textarea:read-only,
-select:read-only,
-input[type="text"]:disabled,
-input[type="email"]:disabled,
-input[type="password"]:disabled,
-input[type="telephone"]:disabled,
-input[type="tel"]:disabled,
-input[type="url"]:disabled,
-textarea:disabled,
-select:disabled {
- background-color: #springMessageText("idp.styles.background-color", "#ECEFF1");
-}
-
-a[href], a[href]:hover, a[href]:active, a[href]:focus {
- color: #springMessageText("idp.styles.link-color", "#1534E3");
-}
-ul li:before {
- background-color: #springMessageText("idp.styles.link-color", "#1534E3");
-}
-label:focus {
- color: #springMessageText("idp.styles.link-color", "#1534E3");
-}
-input[type="text"]:focus,
-input[type="email"]:focus,
-input[type="password"]:focus,
-input[type="telephone"]:focus,
-input[type="tel"]:focus,
-input[type="url"]:focus,
-textarea:focus,
-select:focus,
-input[type="text"]:active,
-input[type="email"]:active,
-input[type="password"]:active,
-input[type="telephone"]:active,
-input[type="tel"]:active,
-input[type="url"]:active,
-textarea:active,
-select:active {
- border-color: #springMessageText("idp.styles.link-color", "#1534E3");
-}
-input[type="checkbox"]:checked + label, input[type="radio"]:checked + label,
-input[type="checkbox"]:focus + label, input[type="radio"]:focus + label {
- color: #springMessageText("idp.styles.link-color", "#1534E3");
-}
-input[type="checkbox"]:checked + label:before, input[type="radio"]:checked + label:before,
-input[type="checkbox"]:focus + label:before, input[type="radio"]:focus + label:before {
- border-color: #springMessageText("idp.styles.link-color", "#1534E3");
-}
-input[type="checkbox"] + label:after {
- border: solid #springMessageText("idp.styles.link-color", "#1534E3");
-}
-input[type="radio"] + label:after {
- background-color: #springMessageText("idp.styles.link-color", "#1534E3");
-}
-button, input[type=button], input[type=submit], a.button, .button {
- background-color: #springMessageText("idp.styles.link-color", "#1534E3");
- border: 4px solid #springMessageText("idp.styles.link-color", "#1534E3");
-}
-button.button--secondary,
-input[type=button].button--secondary,
-input[type=submit].button--secondary,
-a.button.button--secondary,
-.button.button--secondary {
- background-color: transparent;
- border-color: #springMessageText("idp.styles.link-color", "#1534E3");
- color: #springMessageText("idp.styles.link-color", "#1534E3");
-}
-
-button:hover,
-input[type=button]:hover,
-input[type=submit]:hover,
-a.button:hover,
-.button:hover,
-button:focus,
-input[type=button]:focus,
-input[type=submit]:focus,
-a.button:focus,
-.button:focus {
- background: #springMessageText("idp.styles.button-hover-color", "#1A237E");
- color: #fff !important;
- text-decoration: none !important;
- border-color: #springMessageText("idp.styles.button-hover-color", "#1A237E");
-}
-button.button--secondary:hover,
-input[type=button].button--secondary:hover,
-input[type=submit].button--secondary:hover,
-a.button.button--secondary:hover,
-.button.button--secondary:hover,
-button.button--secondary:focus,
-input[type=button].button--secondary:focus,
-input[type=submit].button--secondary:focus,
-a.button.button--secondary:focus,
-.button.button--secondary:focus {
- background: #springMessageText("idp.styles.button-hover-color", "#1A237E");
- border-color: #springMessageText("idp.styles.button-hover-color", "#1A237E");
-}
-
-body {
- color: #springMessageText("idp.styles.body-color", "#32424A");
-}
-label {
- color: #springMessageText("idp.styles.body-color", "#32424A");
-}
-input[type="text"],
-input[type="email"],
-input[type="password"],
-input[type="telephone"],
-input[type="tel"],
-input[type="url"],
-textarea,
-select {
- border: 2px solid #springMessageText("idp.styles.body-color", "#32424A");
- color: #springMessageText("idp.styles.body-color", "#32424A");
-}
-input[type="checkbox"] + label:before, input[type="radio"] + label:before {
- border: 2px solid #springMessageText("idp.styles.body-color", "#32424A");
-}
-
-
-.output-message {
- color: #springMessageText("idp.styles.message-color", "#7A2D00");
-}
-
-.output-message.output--error {
- color: #springMessageText("idp.styles.error-color", "#B50024");
-}
-fieldset .error {
- color: #springMessageText("idp.styles.error-color", "#B50024");
-}
-input[type="text"].error,
-input[type="email"].error,
-input[type="password"].error,
-input[type="telephone"].error,
-input[type="tel"].error,
-input[type="url"].error,
-textarea.error,
-select.error {
- border-color: #springMessageText("idp.styles.error-color", "#B50024");
-}
-
-.output-message.output--success {
- color: #springMessageText("idp.styles.success-color", "#1C7D40");
-}
-
-button.button--secondary:disabled,
-input[type=button].button--secondary:disabled,
-input[type=submit].button--secondary:disabled,
-a.button.button--secondary:disabled,
-.button.button--secondary:disabled {
- color: #springMessageText("idp.styles.inactive-color", "#999999");
-}
-button:disabled,
-input[type=button]:disabled,
-input[type=submit]:disabled,
-a.button:disabled,
-.button:disabled {
- background-color: #springMessageText("idp.styles.inactive-color", "#999999");
- border-color: #springMessageText("idp.styles.inactive-color", "#999999");
-}
-</style>
\ No newline at end of file
diff --git a/idp-conf/src/main/resources/views/error.vm b/idp-conf/src/main/resources/views/error.vm
index 63d368c01..0f01e89f7 100644
--- a/idp-conf/src/main/resources/views/error.vm
+++ b/idp-conf/src/main/resources/views/error.vm
@@ -52,7 +52,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")">
- #parse("custom-styles.vm")
</head>
<body>
@@ -62,7 +61,7 @@
</header>
<section>
- <h2>$title - $titleSuffix</h2>
+ <h1>$title - $titleSuffix</h1>
<p>#evaluate($message)</p>
</section>
</main>
diff --git a/idp-conf/src/main/resources/views/logout-complete.vm b/idp-conf/src/main/resources/views/logout-complete.vm
index e9d17a9dd..2d332eac7 100644
--- a/idp-conf/src/main/resources/views/logout-complete.vm
+++ b/idp-conf/src/main/resources/views/logout-complete.vm
@@ -24,7 +24,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")">
- #parse("custom-styles.vm")
</head>
<body>
@@ -51,10 +50,7 @@
#if ( $profileRequestContext.getProfileId().contains("saml2/logout") )
<iframe style="display:none" src="$flowExecutionUrl&_eventId=proceed"></iframe>
#end
-
-
</section>
-
</main>
<footer class="footer">
<div class="cc">
diff --git a/idp-conf/src/main/resources/views/logout-propagate.vm b/idp-conf/src/main/resources/views/logout-propagate.vm
index 682e7a28d..ab733829c 100644
--- a/idp-conf/src/main/resources/views/logout-propagate.vm
+++ b/idp-conf/src/main/resources/views/logout-propagate.vm
@@ -26,7 +26,6 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()/css/logout.css">
- #parse("custom-styles.vm")
</head>
<body>
@@ -35,12 +34,11 @@
<img class="main-logo" src="$request.getContextPath()#springMessageText("idp.logo", "/images/placeholder-logo.png")" alt="#springMessageText("idp.logo.alt-text", "logo")" />
</header>
-
<section>
#if($hidden == "true")
<p>#springMessageText("idp.logout.hidden", "Your single sign-on session has been terminated, but you are still logged into many of the services you have accessed during your session.")</p>
#else
- <p>#springMessageText("idp.logout.attempt", "Attempting to log out of the following services:")</p>
+ <h1>#springMessageText("idp.logout.attempt", "Attempting to log out of the following services:")</h1>
#end
#parse("logout/propagate.vm")
@@ -49,7 +47,6 @@
<li><a href="#springMessageText("idp.url.helpdesk", '#')">#springMessageText("idp.login.needHelp", "Need Help?")</a></li>
</ul>
</section>
-
</main>
<footer class="footer">
<div class="cc">
diff --git a/idp-conf/src/main/resources/views/logout.vm b/idp-conf/src/main/resources/views/logout.vm
index a0ad69df4..87e78f05a 100644
--- a/idp-conf/src/main/resources/views/logout.vm
+++ b/idp-conf/src/main/resources/views/logout.vm
@@ -35,7 +35,6 @@
#end
*#
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")">
- #parse("custom-styles.vm")
</head>
<body>
@@ -46,7 +45,9 @@
<section>
<div class="output-message">
- <p><strong>Note for deployers:</strong> This page is displayed when a logout operation at the Identity Provider completes. This page is an example and should be customized. It is not fully internationalized because the presentation will be a highly localized decision, and we don't have a good suggestion for a default.</p>
+ <p><strong>Note for deployers:</strong> This page is displayed when a logout operation at the Identity Provider completes.
+ This page is an example and should be customized. It is not fully internationalized because the presentation will be a highly localized decision,
+ and we don't have a good suggestion for a default.</p>
</div>
#if ($rpContext)
diff --git a/idp-conf/src/main/resources/views/user-prefs.vm b/idp-conf/src/main/resources/views/user-prefs.vm
index 54165ee70..8f70837d2 100644
--- a/idp-conf/src/main/resources/views/user-prefs.vm
+++ b/idp-conf/src/main/resources/views/user-prefs.vm
@@ -15,7 +15,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<link rel="stylesheet" type="text/css" href="$request.getContextPath()#springMessageText("idp.css", "/css/placeholder.css")">
- #parse("custom-styles.vm")
<script language="Javascript">
<!--
#parse( "user-prefs.js" )
@@ -31,7 +30,7 @@
<section>
- <h2>#springMessageText("idp.title", "Web Login Service") - #springMessageText("idp.userprefs.title.suffix", "Login Preferences")</h2>
+ <h1>#springMessageText("idp.title", "Web Login Service") - #springMessageText("idp.userprefs.title.suffix", "Login Preferences")</h1>
<p>#springMessage("idp.userprefs.info")</p>
<noscript>
@@ -40,13 +39,10 @@
</div>
</noscript>
-
<form>
- <fieldset>
- <label>#springMessageText("idp.userprefs.options", "The following options are available:")</label>
- <input type="checkbox" id="spnego" name="_idp_spnego_autologin" value="1" onClick="check(this)">
- <label for="spnego"> #springMessageText("idp.userprefs.spnego", "Automatically try desktop login when available.")</label>
- </fieldset>
+ <p>#springMessageText("idp.userprefs.options", "The following options are available:")</p>
+ <input type="checkbox" id="spnego" name="_idp_spnego_autologin" value="1" onClick="check(this)">
+ <label for="spnego"> #springMessageText("idp.userprefs.spnego", "Automatically try desktop login when available.")</label>
</form>
</section>
diff --git a/idp-war/src/main/webapp/css/placeholder.css b/idp-war/src/main/webapp/css/placeholder.css
index 359c89c9d..57a5c83d6 100644
--- a/idp-war/src/main/webapp/css/placeholder.css
+++ b/idp-war/src/main/webapp/css/placeholder.css
@@ -73,18 +73,18 @@ a[href]:hover, a[href]:active, a[href]:focus {
/* Heading styles */
h1 {
- font-size: 30px;
- font-size: 1.875rem;
- line-height: 36px;
- line-height: 2.25rem;
- font-weight: 700;
-}
-
-h2 {
font-size: 24px;
font-size: 1.5rem;
line-height: 28px;
line-height: 1.75rem;
+ font-weight: 700;
+}
+
+h2 {
+ font-size: 20px;
+ font-size: 1.25rem;
+ line-height: 25px;
+ line-height: 1.5rem;
font-weight: 400;
}
@@ -300,7 +300,7 @@ header .main-logo {
}
section {
- padding: 8%;
+ padding: 4% 8% 4% 8%;
}
/* Output Messages */
@@ -754,6 +754,10 @@ a.button:disabled,
color: #a9b0b4;
}
+.grid {
+ margin-top: 12px;
+}
+
/* Grid (used for 2 columns) */
.grid:before, .grid:after {
content: " ";
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list