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

Single sign on 如何自定义ADFS 3.0注销页面以强制注销?,single-sign-on,adfs3.0,Single Sign On,Adfs3.0,我们将ADFS 3.0与多个应用程序一起作为依赖方使用。从web应用程序注销时,应用程序将重定向到: https://fs.company.com/adfs/ls/idpinitiatedsignon.aspx 该页面有一个登录按钮和一个注销按钮,其中有两个选项: 从您访问过的所有站点注销(选定) 从此网站注销 用户选择其中一个选项,然后单击注销按钮。我们是否可以强制按下“注销”按钮(使用默认选项),以便最终用户无需执行任何操作?看起来我已经解决了:注销页面加载了一个可以修改的javascri

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

https://fs.company.com/adfs/ls/idpinitiatedsignon.aspx
该页面有一个登录按钮和一个注销按钮,其中有两个选项:

  • 从您访问过的所有站点注销(选定)

  • 从此网站注销


  • 用户选择其中一个选项,然后单击注销按钮。我们是否可以强制按下“注销”按钮(使用默认选项),以便最终用户无需执行任何操作?

    看起来我已经解决了:注销页面加载了一个可以修改的javascript文件(onload.js)。我向该文件添加了一个javascript函数,该函数向注销按钮发送一个单击事件

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

    Get-AdfsWebConfig
    
    New-AdfsWebTheme -Name Custom -SourceName Default
    
    set-adfswebconfig -ActiveThemeName Custom
    
    这已设置为默认值。然后基于默认web主题创建自定义web主题:

    Get-AdfsWebConfig
    
    New-AdfsWebTheme -Name Custom -SourceName Default
    
    set-adfswebconfig -ActiveThemeName Custom
    
    导出web主题以进行编辑:

    Export-AdfsWebTheme -Name Custom -DirectoryPath C:\temp
    
    需要编辑的文件是:C:\temp\scripts\onload.js。在末尾添加这些行(我通过检查signout页面的源代码获得了signout按钮的ID):

    上传修改后的onload.js:

    Set-AdfsWebTheme -TargetName Custom -AdditionalFileResource @{Uri='/adfs/portal/script/onload.js';path='C:\temp\script\onload.js'}
    
    激活自定义web主题:

    Get-AdfsWebConfig
    
    New-AdfsWebTheme -Name Custom -SourceName Default
    
    set-adfswebconfig -ActiveThemeName Custom
    
    现在,当用户注销web应用程序时,他将完全注销,而不必按另一个注销按钮

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

    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(); }
            }
        }
    }