I used Server 2016 TP4 for this but you can use any version of ADFS from 2012 R2 upwards.
I gave an overview here but this is the actual code sample.
This is based on #AzureAD Mailbag: Self-Service Password Reset.
The PowerShell commands are:
New-ADFSWebTheme -Name ADFSChangePassword -SourceName default
Name : ADFSChangePassword
IsBuiltinTheme : False
StyleSheet : {[, System.Byte[]]}
RTLStyleSheet : {42, 32, 123, 13...}
OnLoadScript :
Logo : {}
Illustration : {[, System.Byte[]]}
AdditionalFileResources : {[/adfs/portal/script/onload.js, System.Byte[]], [/adfs/portal/images/idp/localsts.png, System.Byte[]], [/adfs/portal/images/i
[/adfs/portal/images/idp/otherorganizations.png, System.Byte[]]}
Export-ADFSWebTheme -Name ADFSChangePassword -DirectoryPath C:\Work
Onload.js will now be in c:\work\script\onload.js
Modify onload.js at this point as below.
Set-AdfsWebTheme -TargetName ADFSChangePassword -AdditionalFileResource @{Uri=’/adfs/portal/script/onload.js';path=”c:\work\script\onload.js”}
Set-AdfsWebConfig -ActiveThemeName ADFSChangePassword
Modify onload.js by adding the following at the end:
// Add "Change Password" link
var formsAuthArea = document.getElementById("formsAuthenticationArea");
if (formsAuthArea) {
// Create the hyperlink
var pwdResetLink = document.createElement('a');
var linkText = document.createTextNode("Change your password");
pwdResetLink.appendChild(linkText);
pwdResetLink.title = "Change your password";
pwdResetLink.href = "https://my-adfs/adfs/portal/updatepassword/";
document.body.appendChild(pwdResetLink);
// Append to the authArea
var authArea = document.getElementById("authArea");
authArea.appendChild(pwdResetLink);
}
Then run the last two PowerShell commands.
The login screen will now look like:
Clicking the link leads to:
Enjoy!
No comments:
Post a Comment