апач, шибболет, псевдоним выравнивания нагрузки, ssl

Это - сценарий, который я использую для генерации листа Excel для каждого ПК на домене и кто в настоящее время зарегистрирован. Сохраните его в .ps1 файл и выполните его после включения пути OU к поиску. Я скопировал большую часть из этого от где-нибудь от сети давным-давно.

# This way it won't die when a machine is unavailable
# It's powered off, or the machine account was left behind, etc
$erroractionpreference = "SilentlyContinue"

function GetList 
{ param ([string]$base)
    # Give this function the LDAP search string and it will search there
    $blah = [ADSI]"$base"
    $objDomain = New-Object System.DirectoryServices.DirectoryEntry
    $objSearcher = New-Object System.DirectoryServices.DirectorySearcher
    $objSearcher.Filter = "(objectClass=computer)"
    $objSearcher.SearchRoot = $blah

    $PropList = "cn","operatingSystem"
    foreach ($i in $PropList){$objSearcher.PropertiesToLoad.Add($i)}
    $Results = $objSearcher.FindAll()

    foreach ($objResult in $Results)
    {
        $OS = $objResult.Properties.operatingsystem
        If ($OS -match "Windows")
        {
            Echo $objResult.Properties.cn | Out-File -Append -FilePath $OutFile
        }
    }
}

# This is for output
$Outbook = New-Object -comobject Excel.Application
$Outbook.visible = $True

$Workbook = $Outbook.Workbooks.Add()
$Worksheet = $Workbook.Worksheets.Item(1)

$Worksheet.Cells.Item(1,1) = "Machine Name"
$Worksheet.Cells.Item(1,2) = "Remote User"

$Formatting = $Worksheet.UsedRange
$Formatting.Interior.ColorIndex = 19
$Formatting.Font.ColorIndex = 11
$Formatting.Font.Bold = $True

$intRow = 2

# Put the path to the OU with your computer accounts here, if you need more than one, put another GetList line
GetList "LDAP://OU=Computers,dc=yourdomain,dc=name"

foreach ($strComputer in Get-Content $OutFile)
{
    $Worksheet.Cells.Item($intRow,1)  = $strComputer.ToUpper()

    # Using .NET to ping the servers
    $Ping = New-Object System.Net.NetworkInformation.Ping
    $Reply = $Ping.send($strComputer)


    if($Reply.status -eq "success")
    {
        $RemoteSys = Get-WmiObject -Comp $strComputer -CL Win32_ComputerSystem
        If ($?)
        {
            $Worksheet.Cells.Item($intRow,2).Interior.ColorIndex = 4
            $Worksheet.Cells.Item($intRow,2) = $RemoteUser = $RemoteSys.UserName
        }
        Else
        {
            $Worksheet.Cells.Item($intRow,2).Interior.ColorIndex = 3
            $Worksheet.Cells.Item($intRow,2) = "Error"
        }
    }
    Else
    {
        $Worksheet.Cells.Item($intRow,2).Interior.ColorIndex = 3
        $Worksheet.Cells.Item($intRow,2) = "Not Pingable"
    }

    $Formatting.EntireColumn.AutoFit()

    $Reply = ""
    $pwage = ""
    $intRow = $intRow + 1
}

$Formatting.EntireColumn.AutoFit()
cls
0
задан 30 November 2012 в 13:12
1 ответ

Сначала небольшое предостережение: я знаю, что такое shibboleth / делает, но не реализовал эту настройку, поэтому, хотя это можно определить, я могу придумать несколько ошибок, которые могут его сбить. Я предлагаю задать вопрос в списке shibboleth-users , так как именно там находятся пользователи =)

То, что вы пытаетесь, должно «просто работать», если вы можете привязать поток аутентификации к host01 или host02, в конце концов, это SSO. Если вы действительно хотите направить пользователя обратно на основной домен в качестве «целевого», то есть шанс, что он будет перенаправлен на другой хост и повторно авторизован для локального поставщика услуг. Это должно сработать, процесс может быть немного сложным, с точки зрения пользовательского опыта, если они сразу перевернуты и проходят долгое ожидание нескольких перенаправлений, или у них есть ручной шаг в процессе IDP для POST обратно на ваш сайт (т.е. нет JavaSript или IDP, который плохо отслеживает сеансы). Так что я думаю, что вы попали на изменение в середине авторизации.

User GET requests hostalias.com/protected
User redir to idp.com/sso?shire=host01.hostalias.com/sso&target=hostalias.com/protected
<IDP auth>
User POST to host01.hostalias.com/sso
host01.hostalias.com/sso redir to hostalias.com/protected

Попытка может заключаться в том, что спецификация shibboleth заботится об использовании разных доменов для id / shire / target. Хотя я в этом сомневаюсь.

«Чистое» решение - это менеджер сеанса, который может делиться состоянием сеанса между вашими хостами. Если вы выполняли аутентификацию в приложении java, вы могли бы использовать общую базу данных или удаленный поиск, если локальный поиск не удался и т. Д. Вам, вероятно, понадобится это, если вы планируете горизонтальное масштабирование с помощью X-хостов. У демона SP есть некоторые параметры для совместного использования состояния, которое, похоже, зависит от того, будет ли apache использовать SP для сеансов.

Другой вариант, если вы застряли, - изменить настройку аварийного переключения DNS. Если вы сопоставляете любые новые аутентифицированные сеансы с именем хоста (host01 host02 host0n) , тогда вы можете сохранить пользователя на этом хосте. Сделайте авторизацию для этого хоста. Затем переключитесь на новый хост только тогда, когда он не работает (или перегружен ..) Эта настройка может вызвать несколько проблем с балансировкой нагрузки, если ссылки на один хост начинают использоваться больше, и может потребовать небольшого управления. Я бы попробовал это только в том случае, если есть проблемы с выполнением вышеуказанных двух.

Сертификаты SSL основаны на доступном имени хоста. Если у вас есть несколько имен хостов, которые вы хотите защитить для клиентов, вам, вероятно, понадобится несколько сертификатов. Если у вас есть несколько имен хостов поддоменов, вы можете вместо этого получить групповой сертификат. Для вышеуказанной настройки я бы предложил подстановочный знак для публичного имени, host01 и host02 .HostAlias.com. Первый и третий методы, описанные выше, потребуют wildcard / нескольких сертификатов для покрытия клиентов, обращающихся к различным поддоменам.

1
ответ дан 4 December 2019 в 21:33

Теги

Похожие вопросы