如何自定义ADFS 3.0注销页面以强制注销?

时间:2016-12-13 21:50:47

标签: single-sign-on adfs3.0

我们将ADFS 3.0与多个应用程序一起用作依赖方。从Web应用程序注销时,应用程序会重定向到:

https://fs.company.com/adfs/ls/idpinitiatedsignon.aspx

然后该页面有一个登录按钮和一个带有两个选项的注销按钮:

  1. 退出您访问过的所有网站(已选择)

  2. 从此网站退出

  3. 用户选择其中一个选项,然后单击“注销”按钮。是否可以强制按下“注销”按钮(使用默认选项),以便最终用户不需要做任何事情?

1 个答案:

答案 0 :(得分:2)

看起来我想通了:注销页面加载了一个可以修改的javascript文件(onload.js)。我在该文件中添加了一个javascript函数,该函数向clickout按钮发送一个click事件。

在ADFS服务器上打开PowerShell。查看当前活动的网络主题:

Get-AdfsWebConfig

这被设置为默认值。然后基于默认Web主题创建自定义Web主题:

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

现在,当用户退出网络应用程序时,他完全退出,无需按下另一个退出按钮。

有关编辑登录和注销页面的更多信息:

https://technet.microsoft.com/en-us/library/dn636121(v=ws.11).aspx