如何自定义 ADFS 3.0 注销页面以强制注销?
How do I customize the ADFS 3.0 logout page to force sign out?
我们将 ADFS 3.0 与多个应用程序一起用作依赖方。从 Web 应用程序注销时,应用程序重定向到:
https://fs.company.com/adfs/ls/idpinitiatedsignon.aspx
该页面然后有一个登录按钮和一个带有两个选项的注销按钮:
退出您访问过的所有站点(已选择)
退出此站点
用户选择这些选项之一,然后单击“注销”按钮。我们是否可以强制按下退出按钮(使用默认选项),以便最终用户不需要做任何事情?
看来我明白了:注销页面加载了一个可以修改的 javascript 文件 (onload.js)。我向该文件添加了一个 javascript 函数,该函数将点击事件发送到注销按钮。
在 ADFS 服务器上打开 PowerShell。查看当前活动的网络主题:
Get-AdfsWebConfig
这已设置为默认值。然后根据默认网页主题创建自定义网页主题:
New-AdfsWebTheme -Name Custom -SourceName Default
导出网页主题进行编辑:
Export-AdfsWebTheme -Name Custom -DirectoryPath C:\temp
需要编辑的文件为:C:\temp\scripts\onload.js。在末尾添加这些行(我通过检查注销页面的源代码获得了注销按钮的 ID):
var signOutPanelExists = document.getElementById('idp_SignOutPanel');
if (signOutPanelExists)
{
// only click the SignOut button if it is displayed - to avoid endless loop
if (document.getElementById('idp_SignOutPanel').style.display != 'none')
{
var logoutKnopf = document.getElementById('idp_SignOutButton');
if (logoutKnopf)
{
window.onload = function(){ document.getElementById('idp_SignOutButton').click(); }
}
}
}
上传修改后的onload.js:
Set-AdfsWebTheme -TargetName Custom -AdditionalFileResource @{Uri='/adfs/portal/script/onload.js';path='C:\temp\script\onload.js'}
激活自定义网页主题:
set-adfswebconfig -ActiveThemeName Custom
现在,当用户退出 Web 应用程序时,他将完全退出 w/o 必须按下另一个退出按钮。
有关编辑登录和注销页面的更多信息:
https://technet.microsoft.com/en-us/library/dn636121(v=ws.11).aspx
我们将 ADFS 3.0 与多个应用程序一起用作依赖方。从 Web 应用程序注销时,应用程序重定向到:
https://fs.company.com/adfs/ls/idpinitiatedsignon.aspx
该页面然后有一个登录按钮和一个带有两个选项的注销按钮:
退出您访问过的所有站点(已选择)
退出此站点
用户选择这些选项之一,然后单击“注销”按钮。我们是否可以强制按下退出按钮(使用默认选项),以便最终用户不需要做任何事情?
看来我明白了:注销页面加载了一个可以修改的 javascript 文件 (onload.js)。我向该文件添加了一个 javascript 函数,该函数将点击事件发送到注销按钮。
在 ADFS 服务器上打开 PowerShell。查看当前活动的网络主题:
Get-AdfsWebConfig
这已设置为默认值。然后根据默认网页主题创建自定义网页主题:
New-AdfsWebTheme -Name Custom -SourceName Default
导出网页主题进行编辑:
Export-AdfsWebTheme -Name Custom -DirectoryPath C:\temp
需要编辑的文件为:C:\temp\scripts\onload.js。在末尾添加这些行(我通过检查注销页面的源代码获得了注销按钮的 ID):
var signOutPanelExists = document.getElementById('idp_SignOutPanel');
if (signOutPanelExists)
{
// only click the SignOut button if it is displayed - to avoid endless loop
if (document.getElementById('idp_SignOutPanel').style.display != 'none')
{
var logoutKnopf = document.getElementById('idp_SignOutButton');
if (logoutKnopf)
{
window.onload = function(){ document.getElementById('idp_SignOutButton').click(); }
}
}
}
上传修改后的onload.js:
Set-AdfsWebTheme -TargetName Custom -AdditionalFileResource @{Uri='/adfs/portal/script/onload.js';path='C:\temp\script\onload.js'}
激活自定义网页主题:
set-adfswebconfig -ActiveThemeName Custom
现在,当用户退出 Web 应用程序时,他将完全退出 w/o 必须按下另一个退出按钮。
有关编辑登录和注销页面的更多信息:
https://technet.microsoft.com/en-us/library/dn636121(v=ws.11).aspx