1 <!DOCTYPE html> 2<html lang="en-US"> 3 <head> 4 <meta http-equiv="X-UA-Compatible" content="IE=edge"/> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=1"/> 6 <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> 7 <meta http-equiv="cache-control" content="no-cache,no-store"/> 8 <meta http-equiv="pragma" content="no-cache"/> 9 <meta http-equiv="expires" content="-1"/> 10 <meta name='mswebdialog-title' content='Connecting to MyOECD Authentication Service'/> 11 12 <title>Home Realm Discovery</title> 13
13<script type='text/javascript'> 14//<![CDATA[ 15function HRDErrors(){this.invalidSuffix = 'We do not recognize this organizational account. Enter your organizational account again or contact your administrator for more information.';} 16//]]> 17</script>
17 18
19<script type='text/javascript'> 20//<![CDATA[ 21// Copyright (c) Microsoft Corporation. All rights reserved. 22function InputUtil(errTextElementID, errDisplayElementID) { 23 24 if (!errTextElementID) errTextElementID = 'errorText'; 25 if (!errDisplayElementID) errDisplayElementID = 'error'; 26 27 this.hasFocus = false; 28 this.errLabel = document.getElementById(errTextElementID); 29 this.errDisplay = document.getElementById(errDisplayElementID); 30}; 31InputUtil.prototype.canDisplayError = function () { 32 return this.errLabel && this.errDisplay; 33} 34InputUtil.prototype.checkError = function () { 35 if (!this.canDisplayError){ 36 throw new Error ('Error element not present'); 37 } 38 if (this.errLabel && this.errLabel.innerHTML) { 39 this.errDisplay.style.display = ''; 40 var cause = this.errLabel.getAttribute('for'); 41 if (cause) { 42 var causeNode = document.getElementById(cause); 43 if (causeNode && causeNode.value) { 44 causeNode.focus(); 45 this.hasFocus = true; 46 } 47 } 48 } 49 else { 50 this.errDisplay.style.display = 'none'; 51 } 52}; 53InputUtil.prototype.setInitialFocus = function (input) { 54 if (this.hasFocus) return; 55 var node = document.getElementById(input); 56 if (node) { 57 if ((/^\s*$/).test(node.value)) { 58 node.focus(); 59 this.hasFocus = true; 60 } 61 } 62}; 63InputUtil.prototype.setError = function (input, errorMsg) { 64 if (!this.canDisplayError) { 65 throw new Error('Error element not present'); 66 } 67 input.focus(); 68 69 if (errorMsg) { 70 this.errLabel.innerHTML = errorMsg; 71 } 72 this.errLabel.setAttribute('for', input.id); 73 this.errDisplay.style.display = ''; 74}; 75InputUtil.makePlaceholder = function (input) { 76 var ua = navigator.userAgent; 77 78 if (ua != null && 79 (ua.match(/MSIE 9.0/) != null || 80 ua.match(/MSIE 8.0/) != null || 81 ua.match(/MSIE 7.0/) != null)) { 82 var node = document.getElementById(input); 83 if (node) { 84 var placeholder = node.getAttribute("placeholder"); 85 if (placeholder != null && placeholder != '') { 86 var label = document.createElement('input'); 87 label.type = "text"; 88 label.value = placeholder; 89 label.readOnly = true; 90 label.style.position = 'absolute'; 91 label.style.borderColor = 'transparent'; 92 label.className = node.className + ' hint'; 93 label.tabIndex = -1; 94 label.onfocus = function () { this.nextSibling.focus(); }; 95 96 node.style.position = 'relative'; 97 node.parentNode.style.position = 'relative'; 98 node.parentNode.insertBefore(label, node); 99 node.onkeyup = function () { InputUtil.showHint(this); }; 100 node.onblur = function () { InputUtil.showHint(this); }; 101 node.style.background = 'transparent'; 102 103 node.setAttribute("placeholder", ""); 104 InputUtil.showHint(node); 105 } 106 } 107 } 108}; 109InputUtil.focus = function (inputField) { 110 var node = document.getElementById(inputField); 111 if (node) node.focus(); 112}; 113InputUtil.hasClass = function(node, clsName) { 114 return node.className.match(new RegExp('(\\s|^)' + clsName + '(\\s|$)')); 115}; 116InputUtil.addClass = function(node, clsName) { 117 if (!this.hasClass(node, clsName)) node.className += " " + clsName; 118}; 119InputUtil.removeClass = function(node, clsName) { 120 if (this.hasClass(node, clsName)) { 121 var reg = new RegExp('(\\s|^)' + clsName + '(\\s|$)'); 122 node.className = node.className.replace(reg, ' '); 123 } 124}; 125InputUtil.showHint = function (node, gotFocus) { 126 if (node.value && node.value != '') { 127 node.previousSibling.style.display = 'none'; 128 } 129 else { 130 node.previousSibling.style.display = ''; 131 } 132}; 133InputUtil.updatePlaceholder = function (input, placeholderText) { 134 var node = document.getElementById(input); 135 if (node) { 136 var ua = navigator.userAgent; 137 if (ua != null && 138 (ua.match(/MSIE 9.0/) != null || 139 ua.match(/MSIE 8.0/) != null || 140 ua.match(/MSIE 7.0/) != null)) { 141 var label = node.previousSibling; 142 if (label != null) { 143 label.value = placeholderText; 144 } 145 } 146 else { 147 node.placeholder = placeholderText; 148 } 149 } 150}; 151 152//]]> 153</script>
153 154 155 156 157 <link rel="stylesheet" type="text/css" href="/adfs/portal/css/style.css?id=24B90B3D880E4605966CF1F9325955B2297955B770A59DA316FA84440BC57752" /> 158 </head> 159 <body dir="ltr" class="body"> 160 <div id="noScript" style="position:static; width:100%; height:100%; z-index:100"> 161 <h1>JavaScript required</h1> 162 <p>JavaScript is required. This web browser does not support JavaScript or JavaScript in this web browser is not enabled.</p> 163 <p>To find out if your web browser supports JavaScript or to enable JavaScript, see web browser help.</p> 164 </div> 165
165<script type="text/javascript" language="JavaScript"> 166 document.getElementById("noScript").style.display = "none"; 167 </script>
167 168 <div id="fullPage"> 169 <div id="brandingWrapper" class="float"> 170 <div id="branding"></div> 171 </div> 172 <div id="contentWrapper" class="float"> 173 <div id="content"> 174 <div id="header"> 175 <img class='logoImage' id='companyLogo' src='/adfs/portal/logo/logo.png?id=5B583B74E48B6364ACD4FEF3266D6652A6C04A538F541E42396DE972873C239F' alt='MyOECD Authentication Service'/> 176 </div> 177 <main> 178 <div id="workArea"> 179 <div id="hrdArea"> 180 <form id="hrd" method="post" autocomplete="off" novalidate="novalidate" action="/adfs/oauth2/authorize/?client_id=96392889-98b4-45a1-937c-38c7b7628bc7&redirect_uri=https%3A%2F%2Fcontact.oecd.org%2Flogin.aspx&response_type=code%20id_token&scope=openid%20profile&state=OpenIdConnect.AuthenticationProperties%3Dst7DSyVwoAmIcE3v9rCDT36LXXAfM9dp-KHLL5ffnIxEpM22Ti4J0Xbr_cJ4ygD9ktU94bii85WJEIa7eekywLRqGXWZDwpvU8YrA0NokP0J0iBlU0FFBzqFAWPb_232Qtqw9XGMJdYDp9THN2czs6BxBhyVVDLkD6R6YCIt2SwkRevILefML5OilxjlPFkGUP4niqKvpmHkke4g_5rD_ReSNRszUg1lz45KH4t-aS4QZsbCZheaDt912wyp0bT6nAEisg&response_mode=form_post&nonce=639258268384195588.ZGZiMzI1ZTEtY2E5Ny00YjMzLWFhYzAtNTc0NTI0MTdmZjgyMjlmMzZiZWItZTg2YS00YmE2LWFhZmEtMmQ3YjljMzAzMWYw&x-client-SKU=ID_NET451&x-client-ver=5.3.0.0&client-request-id=8925c716-b054-46ff-6810-0080000000bb"> 181 182 <div id="bySelection"> 183 <div id="openingMessage" class="groupMargin">Sign in with one of these accounts</div> 184 185 <input id="hrdSelection" type="hidden" /> 186 <div class="idp" tabIndex="1" role="button" aria-label="OECD/IEA/ITF/NEA" onKeyPress="if (event && (event.keyCode == 32 || event.keyCode == 13)) HRD.selection('http://sts.oecd.org/adfs/services/trust');" onclick="HRD.selection('http://sts.oecd.org/adfs/services/trust'); return false;"><img class="largeIcon float" src="/adfs/portal/images/idp/idp.png?id=3EADD3E829A20DF612C7A77960FF811E66E3EE6BAE2C33C9B20E7478BAC87548" alt="OECD/IEA/ITF/NEA"/><div class="idpDescription float"><span class="largeTextNoWrap indentNonCollapsible">OECD/IEA/ITF/NEA</span></div></div><div class="idp" tabIndex="2" role="button" aria-label="MyOECD" onKeyPress="if (event && (event.keyCode == 32 || event.keyCode == 13)) HRD.selection('urn:myoecd');" onclick="HRD.selection('urn:myoecd'); return false;"><img class="largeIcon float" src="/adfs/portal/images/idp/localsts.png?id=A3911892BE04D81EBA5A8E0C74F77099AA1DB05E542FBFCC78C9DF4B0EC0E3A6" alt="MyOECD"/><div class="idpDescription float"><span class="largeTextNoWrap indentNonCollapsible">MyOECD</span></div></div> 187 </div> 188 189 <div id="byEmail" style="display:none"> 190 <div class="groupMargin"> 191 <img tabIndex="3" class="smallIcon float" onKeyPress="if (event && (event.keyCode == 32 || event.keyCode == 13)) HRD.hideEmailInput();" onclick="HRD.hideEmailInput(); return false;" src="data:image/Png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACHDwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZEsRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTsAIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQdli7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtFehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGXwzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNFhImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH554SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJVgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyCqbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiEj6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhGfDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFpB+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJyeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJCYVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO
19104bpr1borTEaQlnyfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48vvacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0CvpvfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15LWytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AAbWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0zllmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHWztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5sxybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPwYyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmRXVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNmWS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wlxqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33zaEb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2vTqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqbPhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h/HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavrXTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxSfNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALEgAACxIB0t1+/AAAAR5JREFUOE+VlAEVwjAMRCcBCUhAAhKQgAQcIAEJSEACEpCAhEmA/LwdZGu7LvfePVibXC5Z16GDo/FivE48G/fGFHZGkkfjp8GX8WTs4mB8G0m6G0migMA+jhXzMMb9GWgPV1QnsQeEFV+IMpfm5gooTN7TnwJYoI2MmMBYaJ8X5qDV2UKAHMC1MTBLDDkY/u8hYKsYkCl+fW43/gRkxARiOW6u7H8mSIx1nDPfGpcmWKPbQpBZstYjAhEq9LcaINHMMSLWdVDlLS2REWWfWD8pnHgeah/9VtGZBoG07QOtgJfEcWjdMtV8VXDLSTAuBIuCVMiI4mw1JwZQtdUiQEBXWNeAriWC9RVxHKDa097Wr8jdIhwFIK7oonFbD8MXH45yevOBn/oAAAAASUVORK5CYII=" alt="back"/> 192 Other organizational account 193 </div> 194 195 <div id="emailArea" class="indent"> 196 197 <div id="emailIntroduction" class="groupMargin"> 198 If your organization has established a trust relationship with MyOECD Authentication Service, enter your organizational account below. 199 </div> 200 201 <div id="error" class="fieldMargin error smallText" > 202 <span id="errorText" for="emailInput" aria-live="assertive" role="alert"></span> 203 </div> 204 205 <div id="emailInputArea"> 206 <label id="emailInputLabel" for="emailInput" class="hidden">Email</label> 207 <input id="emailInput" name="Email" type="email" value="" autocomplete="off" class="text fullWidthIndent" 208 spellcheck="false" placeholder="[email protected]"/> 209 </div> 210 211 <div id="submissionArea" class="submitMargin"> 212 <input class="submit" name="HomeRealmByEmail" type="submit" value="Next" 213 onclick="return HRD.submitEmail()" /> 214 </div> 215 </div> 216 </div> 217 218 </form> 219 220
220<script type="text/javascript" language="JavaScript"> 221 //<![CDATA[ 222 223 function HRD() { 224 } 225 226 HRD.emailInput = 'emailInput'; 227 HRD.emailMismatch = 'errorText'; 228 229 HRD.selection = function (option) { 230 var i = document.getElementById('hrdSelection'); 231 i.name = "HomeRealmSelection"; 232 i.value = option; 233 document.forms['hrd'].submit(); 234 return false; 235 } 236 237 HRD.showEmailInput = function () { 238 var selection = document.getElementById('bySelection'); 239 selection.style.display = 'none'; 240 var email = document.getElementById('byEmail'); 241 email.style.display = ''; 242 var emailInput = document.getElementById('emailInput'); 243 emailInput.focus(); 244 } 245 246 HRD.hideEmailInput = function () { 247 var selection = document.getElementById('bySelection'); 248 selection.style.display = ''; 249 var email = document.getElementById('byEmail'); 250 email.style.display = 'none'; 251 } 252 253 HRD.initialize = function () { 254 255 var u = new InputUtil(); 256 u.checkError(); 257 258 var idpElements = document.getElementsByClassName('idp'); 259 var emailError = document.getElementById(HRD.emailMismatch); 260 261 if ((emailError && emailError.innerHTML) || idpElements.length == 0) 262 { 263 HRD.showEmailInput(); 264 u.setInitialFocus(HRD.emailInput); 265 } 266 else 267 { 268 HRD.hideEmailInput(); 269 } 270 271 } (); 272 273 HRD.submitEmail = function () { 274 var u = new InputUtil(); 275 var e = new HRDErrors() 276 277 var email = document.getElementById(HRD.emailInput); 278 279 if (!email.value || !email.value.match('[@]')) {
280 u.setError(email, e.invalidSuffix); 281 return false; 282 } 283 284 return true; 285 }; 286 287 InputUtil.makePlaceholder(HRD.emailInput); 288 289 //]]> 290 </script>
290 291 </div> 292 293 294 </div> 295 </main> 296 <div id="footerPlaceholder"></div> 297 </div> 298 <footer id="footer"> 299 <div id="footerLinks" class="floatReverse"> 300 <div><span id="copyright">© 2018 Microsoft</span><a id="privacy" class="pageLink footerLink" href="https://www.oecd.org/privacy/">Privacy Policy</a><a id="helpDesk" class="pageLink footerLink" href="https://www.oecd.org/termsandconditions/">Terms & Conditions</a></div> 301 </div> 302 </footer> 303 </div> 304 </div> 305
305<script type='text/javascript'> 306//<![CDATA[ 307// Copyright (c) Microsoft Corporation. All rights reserved. 308 309// This file contains several workarounds on inconsistent browser behaviors that administrators may customize. 310"use strict"; 311 312// iPhone email friendly keyboard does not include "\" key, use regular keyboard instead. 313// Note change input type does not work on all versions of all browsers. 314if (navigator.userAgent.match(/iPhone/i) != null) { 315 var emails = document.querySelectorAll("input[type='email']"); 316 if (emails) { 317 for (var i = 0; i < emails.length; i++) { 318 emails[i].type = 'text'; 319 } 320 } 321} 322 323// In the CSS file we set the ms-viewport to be consistent with the device dimensions, 324// which is necessary for correct functionality of immersive IE. 325// However, for Windows 8 phone we need to reset the ms-viewport's dimension to its original 326// values (auto), otherwise the viewport dimensions will be wrong for Windows 8 phone. 327// Windows 8 phone has agent string 'IEMobile 10.0' 328if (navigator.userAgent.match(/IEMobile\/10\.0/)) { 329 var msViewportStyle = document.createElement("style"); 330 msViewportStyle.appendChild( 331 document.createTextNode( 332 "@-ms-viewport{width:auto!important}" 333 ) 334 ); 335 msViewportStyle.appendChild( 336 document.createTextNode( 337 "@-ms-viewport{height:auto!important}" 338 ) 339 ); 340 document.getElementsByTagName("head")[0].appendChild(msViewportStyle); 341} 342 343// If the innerWidth is defined, use it as the viewport width. 344if (window.innerWidth && window.outerWidth && window.innerWidth !== window.outerWidth) { 345 var viewport = document.querySelector("meta[name=viewport]"); 346 viewport.setAttribute('content', 'width=' + window.innerWidth + ', initial-scale=1.0, user-scalable=1'); 347} 348 349// Gets the current style of a specific property for a specific element. 350function getStyle(element, styleProp) { 351 var propStyle = null; 352 353 if (element && element.currentStyle) { 354 propStyle = element.currentStyle[styleProp]; 355 } 356 else if (element && window.getComputedStyle) { 357 propStyle = document.defaultView.getComputedStyle(element, null).getPropertyValue(styleProp); 358 } 359 360 return propStyle; 361} 362 363// The script below is used for downloading the illustration image 364// only when the branding is displaying. This script work together 365// with the code in PageBase.cs that sets the html inline style 366// containing the class 'illustrationClass' with the background image. 367var computeLoadIllustration = function () { 368 var branding = document.getElementById("branding"); 369 var brandingDisplay = getStyle(branding, "display"); 370 var brandingWrapperDisplay = getStyle(document.getElementById("brandingWrapper"), "display"); 371 372 if (brandingDisplay && brandingDisplay !== "none" && 373 brandingWrapperDisplay && brandingWrapperDisplay !== "none") { 374 var newClass = "illustrationClass"; 375 376 if (branding.classList && branding.classList.add) { 377 branding.classList.add(newClass); 378 } else if (branding.className !== undefined) { 379 branding.className += " " + newClass; 380 } 381 if (window.removeEventListener) { 382 window.removeEventListener('load', computeLoadIllustration, false); 383 window.removeEventListener('resize', computeLoadIllustration, false); 384 } 385 else if (window.detachEvent) { 386 window.detachEvent('onload', computeLoadIllustration); 387 window.detachEvent('onresize', computeLoadIllustration); 388 } 389 } 390}; 391 392if (window.addEventListener) { 393 window.addEventListener('resize', computeLoadIllustration, false); 394 window.addEventListener('load', computeLoadIllustration, false); 395} 396else if (window.attachEvent) { 397 window.attachEvent('onresize', computeLoadIllustration); 398 window.attachEvent('onload', computeLoadIllustration); 399} 400 401// Function to change illustration image. Usage example below. 402function SetIllustrationImage(imageUri) { 403 var illustrationImageClass = '.illustrationClass {background-image:url(' + imageUri + ');}'; 404 405 var css = document.createElement('style'); 406 css.type = 'text/css'; 407 408 if (css.styleSheet) css.styleSheet.cssText = illustrationImageClass; 409 else css.appendChild(document.createTextNode(illustrationImageClass)); 410 411 document.getElementsByTagName("head")[0].appendChild(css); 412} 413 414// Example to change illustration image on HRD page after adding the image to active theme: 415// PSH> Set-AdfsWebTheme -TargetName <activeTheme> -AdditionalFileResource @{uri='/adfs/portal/images/hrd.jpg';path='.\hrd.jpg'} 416// 417//if (typeof HRD != 'undefined') { 418// SetIllustrationImage('/adfs/portal/images/hrd.jpg'); 419//} 420 421//////////////////////////////////// 422// OECD CUSTOMIZATION STARTS HERE // 423//////////////////////////////////// 424 425// MyOECD IDP Issuer 426var myoecdAuthIdpIssuer = 'urn:myoecd' 427 428// If HRD, go directly to MyOECD 429if (typeof HRD != 'undefined') {
430 HRD.selection(myoecdAuthIdpIssuer); 431} 432 433// Check if we are displaying the login page to include STS Auth URL 434if (document.getElementById('authArea')) { 435 436 // To support startWith method with IE 11 (required for opening documents in Office) 437 if (!String.prototype.startsWith) { 438 String.prototype.startsWith = function(searchString, position) { 439 position = position || 0; 440 return this.indexOf(searchString, position) === position; 441 }; 442 } 443 444 // To support URLSearchParams with IE 11 (required for opening documents in Office) 445 function GetURLParams(name){ 446 var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); 447 if (results == null){ 448 return null; 449 } 450 else { 451 return decodeURI(results[1]) || 0; 452 } 453 } 454 455 // For automatic redirection for OECD/IEA/ITF/NEA users 456 var myoecdAuthIdpRedirect = 'RedirectToIdentityProvider=urn%3amyoecd'; 457 var stsAuthIdpRedirect = 'RedirectToIdentityProvider=http://sts.oecd.org/adfs/services/trust'; 458 var stswsUrl = 'https://stsws.oecd.org/anon/'; 459 460 // For looking at URL-encoded parameters and for redirection to IDP 461 var currentUrl = window.location.href; 462 463 // Changes of strings and localisation 464 var locale = navigator.language.startsWith('fr')? 'fr' : 'en'; 465 //const params = new URLSearchParams(window.location.search); 466 //var queryLocale = params.get('stslang'); 467 var queryLocale = GetURLParams('stslang'); 468 if ( (queryLocale === 'fr') || (queryLocale === 'en') ) { 469 locale = queryLocale; 470 } 471 /*else { 472 if (currentUrl.toLowerCase().indexOf("stslang%253dfr") != -1) { 473 locale = 'fr'; 474 } 475 else { 476 if (currentUrl.toLowerCase().indexOf("stslang%253den") != -1) { 477 locale = 'en'; 478 } 479 } 480 }*/ 481 482 var stsAuthUrl = ''; 483 if ( currentUrl.indexOf("?") != -1 ) { 484 if (currentUrl.indexOf("RedirectToIdentityProvider") != -1) { 485 // RedirectToIdentityProvider is present, we replace it 486 stsAuthUrl = currentUrl.replace(myoecdAuthIdpRedirect, stsAuthIdpRedirect); 487 } 488 else { 489 // RedirectToIdentityProvider is not present, we add it 490 stsAuthUrl = currentUrl + "&" + stsAuthIdpRedirect 491 } 492 } 493 else { 494 // RedirectToIdentityProvider is not present, we add it 495 stsAuthUrl = currentUrl + "&" + stsAuthIdpRedirect 496 } 497 498 var pwdResetUrl = 'https://account.oecd.org/SetPassword.aspx'; 499 var createAccountUrl = 'https://contact.oecd.org/'; 500 var ssoEnabledDomains = '@(((oecd|mopanonline|biac|mapsinitiative|tuac|tiwb|fatf-gafi|itf-oecd|oecd-nea|iea)\.org)|(gpai\.ai))$'; 501 var oecdTitle = 'Organisation for Economic Co-operation and Development'; 502 var oecdLogoPath = '/adfs/portal/images/logooecd_en.png'; 503 var oecdCopyright = 'OECD. All rights reserved.'; 504 var oecdHomeUrl = 'https://www.oecd.org/'; 505 var oecdPrivacy = 'Privacy Policy'; 506 var oecdPrivacyUrl = 'https://www.oecd.org/privacy/'; 507 var oecdHelpdesk = 'Terms & Conditions'; 508 var oecdHelpdeskUrl = 'https://www.oecd.org/termsandconditions/'; 509 var oecdLoginWithSSO = 'Sign in with SSO (OECD/IEA/ITF/NEA)'; 510 var oecdSignin = 'Already registered?'; 511 var oecdLogin = 'Login'; 512 var oecdPassword = 'Password'; 513 var oecdUserNameFormatError = 'Please enter your login.'; 514 var oecdPasswordEmpty = 'Please enter your password.'; 515 var oecdNextButton = 'Next'; 516 var oecdSubmitButton = 'Sign in'; 517 var oecdLoginError = 'Invalid login or password.'; 518 var oecdFirstVisitMessage = '<div id="firstVisitMessage" class="groupMargin">First visit?</div><div>Personalise your OECD site home page by selecting the themes that interest you to see only the news, events and documentation related to the themes you selected. You can also sign up for e-mail alerts (<b>OECDdirect</b>) and get notified about newsletters, new statistics and publications related to your selected themes.<br/><a href="' + createAccountUrl + '" target="_blank"><span id="createAccountButton" class="createAccount">Create Account</span></a></div>'; 519 var oecdStsLang = 'fr'; 520 var oecdStsLangText = 'Français'; 521 var oecdResetPassword = 'Reset password'; 522 var oecdErrorOccurred = 'Login not successful'; 523 var oecdNotAuthorizedError = 'Unfortunately, your login was not successful, which could be due to an expired password or to a suspended account.<br/>First, please click <a href="' + pwdResetUrl + '" target="_blank">here</a> to reset your password.<br/>If you are still unable to connect after resetting your password, this means that access for your account has been suspended. In this case, please contact O.N.E Support (<a href="mailto:[email protected]">
523[email protected]</a>) for more information.' 524 var oecdUseSSOForEnabledDomains = 'Your account requires you to <a href="' + stsAuthUrl + '">sign in with SSO</a>.'; 525 var institutionalAccountsPattern = '^[0-9]{3}[A-Za-z]{6,12}$'; 526 var oecdUseInstitutionalAccountsPattern = 'It seems you\'ve entered an old institutional account (e.g. "001MINFRA") as your login. For security reasons, this is no longer possible.<br/>Please use your MyOECD account instead (in most cases this is your professional email).'; 527 var oecdErrorDetails = 'Error details'; 528 529 if (locale == 'fr') { 530 oecdTitle = 'Organisation de coopération et de développement économiques'; 531 oecdCopyright = 'OCDE. Tous droits réservés.'; 532 oecdLogoPath = '/adfs/portal/images/logooecd_fr.png'; 533 oecdHomeUrl = 'https://www.oecd.org/fr/'; 534 oecdPrivacy = 'Protection des données et de la vie privée'; 535 oecdPrivacyUrl = 'http://www.oecd.org/fr/confidentialite/'; 536 oecdHelpdesk = 'Conditions d\'utilisation'; 537 oecdHelpdeskUrl = 'http://www.oecd.org/fr/conditionsdutilisation/'; 538 oecdLoginWithSSO = 'Se connecter en SSO (OECD/IEA/ITF/NEA)'; 539 oecdSignin = 'Déjà enregistré ?'; 540 oecdLogin = 'Identifiant'; 541 oecdPassword = 'Mot de passe'; 542 oecdUserNameFormatError = 'Veuillez entrer votre identifiant.'; 543 oecdPasswordEmpty = 'Veuillez entrer votre mot de passe.'; 544 oecdNextButton = 'Suivant'; 545 oecdSubmitButton = 'Se connecter'; 546 oecdLoginError = 'Identifiant ou mot de passe invalide.'; 547 oecdFirstVisitMessage = '<div id="firstVisitMessage" class="groupMargin">Nouveau venu ?</div><div>Personnalisez votre page d\'acceuil du site OCDE en sélectionnant vos centres d\intêret pour voir uniquement les nouvelles, les évenements et la documentation reliés à vos intérêts. Vous pouvez également souscrire à des alertes via courriels (<b>OECDdirect</b>) vous annonçant les nouveautés tel que des bulletins de nouvelles, de nouvelles statistiques et des publications liées à vos champs dâintérêts.<br/><a href="' + createAccountUrl + '" target="_blank"><span id="createAccountButton" class="createAccount">Créer un Compte</span></a></div>'; 548 oecdStsLang = 'en'; 549 oecdStsLangText = 'English'; 550 oecdResetPassword = 'Réinitialisation du mot de passe'; 551 oecdErrorOccurred = 'Echec de connexion'; 552 oecdNotAuthorizedError = 'Malheureusement votre connexion a échoué, ce qui peut être dû à votre mot de passe qui a expiré ou à votre compte qui a été suspendu.<br/>En premier lieu, veuillez cliquer <a href="' + pwdResetUrl + '" target="_blank">ici</a> pour réinitialiser votre mot de passe.<br/>Si vous ne parvenez toujours pas à vous connecter après avoir réinitialisé votre mot de passe, cela signifie que les accès liés à votre compte ont été suspendus. Dans ce cas, veuillez contacter le Support O.N.E (<a href="mailto:[email protected]">[email protected]</a>) pour plus d\'informations.' 553 oecdUseSSOForEnabledDomains = 'Votre compte requiert de vous <a href="' + stsAuthUrl + '">connecter en SSO</a>.'; 554 oecdUseInstitutionalAccountsPattern = 'Il semble que vous ayez saisi un ancien compte institutionnel (ex : "001MINFRA") comme identifiant. Pour des raisons de sécurité, cela n\'est plus possible.<br/>Veuillez plutôt utiliser votre compte MyOECD (dans la plupart des cas, il s\'agit de votre adresse e-mail professionnelle).'; 555 oecdErrorDetails = 'Détails de l\'erreur'; 556 } 557 558 // Process only if there is no error message 559 if (document.getElementById('errorArea') == null) { 560 // Function for automatic redirect when inside OECD 561 if ( (currentUrl.toLowerCase().indexOf("forcelogin=true") == -1) && (currentUrl.toLowerCase().indexOf("forcelogin%253dtrue") == -1) ) { 562 (function () { 563 function loadScript(url, callback) { 564 var script = document.createElement("script"); 565 script.type = "text/javascript"; 566 567 //console.log('Loading jQuery'); 568 if (script.readyState) { //IE 569 script.onreadystatechange = function () { 570 if (script.readyState === "loaded" || script.readyState === "complete") { 571 script.onreadystatechange = null; 572 callback(); 573 } 574 }; 575 } else { //Others 576 script.onload = function () { 577 callback(); 578 }; 579 } 580 script.src = url; 581 document.getElementsByTagName("head")[0].appendChild(script); 582 } 583 584 loadScript("/adfs/portal/script/jquery.min.js", function () { 585 // jQuery loaded 586 //console.log('jQuery loaded'); 587 588 var getInfo = function (callback) { 589 //console.log('Getting redirection info'); 590 591 var jqxhr = $.get( stswsUrl, function() { 592 }) 593 .done(function() { 594 //console.log('Redirection info: ' + jqxhr.responseText); 595 var result = jqxhr.responseText; 596 if (result == "anon") { 597 callback(result); 598 } 599 }) 600 601 .fail(function() { 602 //console.log('Error querying redirection info: ' + jqxhr.responseText); 603 });
604 } 605 606 $(document).ready(function () { 607 try { 608 //$.ajaxSetup({xhrFields: { withCredentials: true } }); 609 getInfo(function(redirect) { 610 if (redirect !== null) { 611 //console.log('Redirect URL: ' + stsAuthUrl); 612 window.location.href = stsAuthUrl; 613 } 614 }); 615 } 616 catch(err) { 617 //console.log(err); 618 } 619 }); 620 }); 621 })(); 622 } 623 624 // Load functions to override default AD FS behaviour 625 if (window.addEventListener) { 626 window.addEventListener('load', override_form_validation, false); 627 } 628 else if (window.attachEvent) { 629 window.attachEvent('onload', override_form_validation); 630 } 631 632 function override_form_validation() { 633 Login.submitLoginRequest = function () { 634 var u = new InputUtil(); 635 var e = new LoginErrors(); 636 637 var userName = document.getElementById(Login.userNameInput); 638 var userNamePaginated = document.getElementById(Login.userNameInputHolder); 639 var password = document.getElementById(Login.passwordInput); 640 641 if (!userName && userNamePaginated) { 642 userName = userNamePaginated; 643 } 644 645 //if (!userName.value || !userName.value.match('[@\\\\]')) { 646 if (!userName.value) { 647 u.setError(userName, oecdUserNameFormatError); 648 return false; 649 } 650 651 if (!password.value) { 652 u.setError(password, oecdPasswordEmpty, true); 653 return false; 654 } 655 656 if (password.value.length > maxPasswordLength) { 657 u.setError(password, e.passwordTooLong, true); 658 return false; 659 } 660 661 password.value = password.value.trim(); 662 663 document.forms['loginForm'].submit(); 664 return false; 665 }; 666 667 paginationManager.validateAndNext= function () { 668 var u = new InputUtil(); 669 var e = new LoginErrors(); 670 671 var userName = document.getElementById(Login.userNameInput); 672 673 if (!userName.value) { 674 //if (!userName.value || !userName.value.match('[@\\\\]')) { 675 u.setError(userName, oecdUserNameFormatError); 676 return false; 677 } 678 679 if (userName.value.match(ssoEnabledDomains)) { 680 window.location.href = stsAuthUrl; 681 //u.setError(userName, oecdUseSSOForEnabledDomains); 682 return false; 683 } 684 685 if (userName.value.match(institutionalAccountsPattern)) { 686 u.setError(userName, oecdUseInstitutionalAccountsPattern); 687 return false; 688 } 689 690 _self.updatePagesWithUsername(userName.value); 691 u.clearError(); 692 693 if (_self.options.currentPageIndex + 1 >= _self.options.pages.length) { 694 // POST back to ADFS since there are no more pages to go to 695 document.forms['loginFormPaginated'].submit(); 696 return true; 697 } else { 698 _self.displayNextPage(); 699 } 700 701 return true; 702 }; 703 } 704 } 705 706 // Set OECD Title 707 document.title = oecdTitle; 708 709 // Set Logo 710 document.getElementById('companyLogo').src = oecdLogoPath; 711 712 // Set logo clickable 713 var parentOfLogo = document.getElementById("companyLogo").parentElement; 714 var imgLogoElement = parentOfLogo.innerHTML; 715 parentOfLogo.innerHTML = '<a href="' + oecdHomeUrl + '">' + imgLogoElement + '</a>'; 716 717 // Set OECD Copyright and other footer text 718 document.getElementById("copyright").innerText = oecdCopyright; 719 document.getElementById("privacy").innerText = oecdPrivacy; 720 document.getElementById("privacy").href = oecdPrivacyUrl; 721 document.getElementById("helpDesk").innerText = oecdHelpdesk; 722 document.getElementById("helpDesk").href = oecdHelpdeskUrl; 723 if (document.getElementById("errorDetailsLink")) { 724 document.getElementById("errorDetailsLink").innerText = oecdErrorDetails; 725 } 726 727 // Add First Visit part 728 var firstVisitDiv = document.createElement("div"); 729 firstVisitDiv.id = 'firstVisitArea'; 730 firstVisitDiv.innerHTML = oecdFirstVisitMessage; 731 document.getElementById('workArea').appendChild(firstVisitDiv); 732 733 // Only if no error 734 if (document.getElementById('errorArea') == null) { 735 // Add link "Sign in with SSO" 736 var stsAuthDiv = document.createElement("div"); 737 stsAuthDiv.id = "footerStsAuthUrl" 738 stsAuthDiv.innerHTML = "<a href='" + stsAuthUrl + "' class='pageLink footerLink'>" + oecdLoginWithSSO + "</a>"; 739 document.getElementById('footer').appendChild(stsAuthDiv); 740 741 // Add Reset Password link 742 var resetPasswordDiv = document.createElement("div"); 743 resetPasswordDiv.id = 'resetPasswordDiv'; 744 resetPasswordDiv.innerHTML = "<a href='" + pwdResetUrl + "' target='_blank'>" + oecdResetPassword + "</a>"; 745 document.getElementById('nextButtonArea').appendChild(resetPasswordDiv); 746 747 // Change some text 748 document.getElementById('loginMessage').innerHTML = oecdSignin; 749 document.getElementById('userNameInput').placeholder = oecdLogin; 750 document.getElementById('passwordInput').placeholder = oecdPassword; 751 document.getElementById('errorTextPassword').innerHTML = oecdLoginError; 752 document.getElementById('nextButton').innerHTML = oecdNextButton; 753 document.getElementById('submitButton').innerHTML = oecdSubmitButton; 754 } 755 756 // Add Switch Lang - Only if not IE 757 if (window.document.documentMode === undefined) { 758 var switchLangDiv = document.createElement("div"); 759 switchLangDiv.id = 'switchLang'; 760 switchLangDiv.innerHTML = "<a href='' onclick=\"var langParams = new URLSearchParams(window.location.search);langParams.delete('stslang');langParams.append('stslang','" + oecdStsLang + "');window.location.href=window.location.href.split('?')[0] + '?' + langParams.toString();return false;\">" + oecdStsLangText + "</a>"; 761 document.getElementById('header').appendChild(switchLangDiv); 762 } 763 764 // If there is an error 765 if (document.getElementById('errorArea')) { 766 document.getElementById('authOptions').remove(); 767 document.getElementById('openingMessage').innerHTML = oecdErrorOccurred; 768 document.getElementById('errorMessage').innerHTML = oecdNotAuthorizedError; 769 770 var firstVisitDiv = document.getElementById('firstVisitArea'); 771 var ErrorDetailsDiv = document.createElement("div"); 772 ErrorDetailsDiv.id = 'firstVisitMessage'; 773 ErrorDetailsDiv.class = 'groupMargin'; 774 ErrorDetailsDiv.innerHTML = document.getElementById('errorDetailsLink').innerHTML; 775
776 firstVisitDiv.replaceChildren(); 777 firstVisitDiv.appendChild(document.getElementById('errorDescription')); 778 document.getElementById('errorDescription').prepend(ErrorDetailsDiv); 779 } 780 781 // Allow autocomplete - Only if not IE 782 if (window.document.documentMode === undefined) { 783 if (document.getElementById("loginFormPaginated")) { 784 if (document.getElementById("userNameInput")) { 785 document.getElementById("userNameInput").autocomplete = 'username'; 786 } 787 788 // Create a dummy password field to enable autocomplete in the login page 789 var pwdPlaceholder = document.createElement("input"); 790 pwdPlaceholder.type = 'password'; 791 pwdPlaceholder.autocomplete = 'current-password'; 792 pwdPlaceholder.style = 'display:none;'; 793 document.getElementById('userNameArea').appendChild(pwdPlaceholder); 794 } 795 796 if (document.getElementById("loginForm")) { 797 if (document.getElementById("userNameInputHolder")) { 798 document.getElementById("userNameInputHolder").autocomplete = 'username'; 799 document.getElementById("userNameInputHolder").type = 'email'; 800 document.getElementById("userNameInputHolder").style = 'display:none;'; 801 } 802 if (document.getElementById("passwordInput")) { 803 document.getElementById("passwordInput").autocomplete = 'current-password'; 804 } 805 } 806 } 807} 808 809//]]> 810</script>
810 811 812 813
813<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a3ff9bb50c65b837',t:'MTc5MDIzMDAzOQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
813</body> 814</html> 815
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.