在ADFS 2.0的登录页面,如果需要实现登录页面只输入域用户的用户名而不需要输入域名,可以直接修改FormsSignIn.aspx.cs文件即可,但是ADFS 3.0不再依赖于IIS,磁盘上默认也没有对应的代码文件,因此,实现这个功能就需要通过PowerShell。
下面是我们实现的具体步骤:
原理:通过自定义一个新主题,并导出主题包含的代码文件,再修改代码文件,增加我们的自定义代码来实现这个功能。
最后导入自定义主题的代码文件,详细请参考微软官方文档Advanced Customization of AD FS Sign-in Pages。
1)我们通过复制默认主题(default)来自定义一个新主题(crm_customize),命令为:New-AdfsWebTheme -Name crm_customize -SourceName default
2)导出自定义的主题到C:\ADFSTheme目录下,命令为:Export-AdfsWebTheme -DirectoryPath C:\ADFSTheme -Name crm_customize
3)在导出的主题目录下找到script\onload.js文件,修改onload.js文件,增加以下代码:
if (typeof Login != 'undefined') {
Login.submitLoginRequest = function () {
var u = new InputUtil();
var e = new LoginErrors();
var userName = document.getElementById(Login.userNameInput);
var password = document.getElementById(Login.passwordInput);
if (userName.value && !userName.value.match('[@\\\\]')) {
var userNameValue = 'systexucom.com\\' + userName.value;
document.forms['loginForm'].UserName.value = userNameValue;
}
if (!userName.value) {
u.setError(userName, e.userNameFormatError);
return false;
}
if (!password.value) {
u.setError(password, e.passwordEmpty);
return false;
}
document.forms['loginForm'].submit();
return false;
};
}
4)把修改后的主题文件更新到自定义主题(crm_customize)中,命令为:
Set-AdfsWebTheme -TargetName crm_customize -AdditionalFileResource @{Uri=’/adfs/portal/script/onload.js’;path="C:\ADFSTheme\script\onload.js"},
5)设置自定义主题(crm_customize)为当前应用主题,命令为:
Set-AdfsWebConfig -ActiveThemeName crm_customize
至此,再次打开ADFS的登录页面,可以直接输入用户名进行登录了。
如您发现侵权内容,欢迎友好的反馈,站长必在24小时内妥善处理。站长邮箱:postmaster@cloud700.com