Предусловия
- Установленный и настроенный Indeed AM Saml IdP: https://confluence.indeed-id.com/display/IAM8D/Indeed+AM+SAML+IDP
- Установленный, с базовыми настройками, Cisco ASA.
Карта сети для примера настройки

Описание:
DC - контроллер домена iid.local, DNS сервер домена, Indeed SAML IdP.
Подготовка сертификатов для работы
Необходимые сертификаты:
- Самоподписанный сертификат SAML idP с закрытым ключом, который создавался при установке SAML idP.
- Сертификат CiscoASA с закрытым ключом.
- Сертификат CiscoASA без закрытого ключа.
- Сертификат центра сертификации без закрытого ключа.
Для создания сертификатов на данном стенде использовался доменный центр сертификации MS CA.
- Создадим шаблон сертификата для CiscoASA (шаблон веб-сервера):


Укажем удобное для нас имя шаблона, в данном случае “IID-web”:

Укажем версию Windows Server’a, на котором стоит Indeed SAML idP:


Укажем, кто может создать запрос на выдачу сертификата:

Увеличим размер ключа до “4096”:

Настройка шаблона закончена, жмем “ОК”. Включим созданный шаблон. (Правая кнопка мыши по “Шаблоны сертификата” -> “Создать” -> “Выдаваемый шаблон сертификата”). Выбираем созданный шаблон “IID-web”

Теперь он доступен для запроса:

-
Создадим сертификат для CiscoASA.






- Экспортируем созданный сертификат CiscoASA:


 Обязательно указываем пароль сертификата (не менее 8 символов), иначе не получится импортировать его на CiscoASA.



- Аналогично экспортируем самоподписанный SAML idP сертификат:

- Выгружаем корневой сертификат без закрытого ключа:






- Аналогично экспортируем сертификат CiscoASA без закрытого ключа.
Итого, у нас имеется следующий комплект сертификатов:

Настройка Indeed SAML idP
- Переносим файл сертификата без закрытого ключа (ciscoasa.cer) для CiscoASA на сервер Indeed SAML в папку C:\inetpub\wwwroot\am\idp\ciscoasa\ciscoasa.cer
- Добавляем права на чтение для учетных записей IUSR и IIS_IUSRS


- Редактируем файл C:\inetpub\wwwroot\am\idp\saml.config. Добавляем поле, как показано на рисунке:

<PartnerServiceProvider Name="https://ciscoasa.iid.local/saml/sp/metadata/iid_saml" AssertionConsumerServiceUrl="https://ciscoasa.iid.local/+CSCOE+/saml/sp/acs?tgname=iid_saml" WantAuthnRequestSigned="true" SignSAMLResponse="false" SignAssertion="true" EncryptAssertion="false" CertificateFile="C:\inetpub\wwwroot\am\idp\ciscoasa\ciscoasa.cer"/>
Name - IdentityID полученное от CiscoASA; AssertionConsumerServiceUrl - ссылка на CiscoASA, куда отправится ответ от Indeed SAML; WantAuthnRequestSigned - проверка подписи запроса от CiscoASA в сторону Indeed SAML; SignAssertion - проверка подписи ответа от Indeed SAML в сторону CiscoASA; CertificateFile - указание на сертификат CiscoASA для проверки подписи.
Данные для этих параметров получены по ссылке с метаданными CiscoASA https://ciscoasa.iid.local/saml/sp/metadata/iid_saml, которая станет активна после настройки политики iid_saml.
-
Добавим информацию о сертификате, которым будем подписывать ответ от Indeed SAML в сторону CiscoASA (для версий ниже 8.0.5, для версий 8.0.5 и выше отпечаток требуется указать только в Web.config):
CertificateThumbprint="EA1BD873EF2DDF45994E91AC907309AE7CAB1B50" - отпечаток сертификата, используемого для SAML. Используется для подписи ответа. Получить его можно с помощью команды PowerShell: Get-ChildItem -Path Cert:\LocalMachine\My
- Укажем разрешение на доступ к закрытому ключу сертификата , для учетных записей IIS:



-
Редактируем файл C:\inetpub\wwwroot\am\idp\Web.config

Добавляем строки: <amIdentityProviderSettings CertificateThumbprint="7FE9EA1CA7EED0C33DF23356E13300AA94566497" /> <amAuthFormat id="https://ciscoasa.iid.local/saml/sp/metadata/iid_saml" inLoginFormat="Name" outLoginFormat="PrincipalName" />
CertificateThumbprint="EA1BD873EF2DDF45994E91AC907309AE7CAB1B50" - отпечаток сертификата, используемого для SAML idP. Используется для подписи ответа. Получить его можно с помощью команды PowerShell: Get-ChildItem -Path Cert:\LocalMachine\My id - PartnerServiceProvider Name, из файла saml.config; inLoginFormat - формат логина для ввода при аутентификации (допускается UPN формат и <domain>\<login>); outLoginFormat - формат логина для ответа в сторону CiscoASA (указан UPN).
Настройка CiscoASA
- Импорт сертификатов на Cisco ASA. На Cisco ASA требуется установить корневой сертификат, и подписанные им сертификаты для CiscoASA и для SAML idP.
- Устанавливаем корневой сертификат:


-
Устанавливаем сертификаты SAML и CiscoASA:



- Синхронизация времени на CiscoASA и Windows Server с установленным Indeed SAML idP. При погрешности во времени, подпись ответа от Indeed до CiscoASA будет не действительна.
Укажем сервер синхронизации времени:

 IP-адрес сервера синхронизации времени можно найти например здесь: https://tf.nist.gov/tf-cgi/servers.cgi
После применения настроек, требуется перезагрузить CiscoASA. Этот же сервер времени нужно прописать на Windows Server с SAML.
- Укажите сертификат CiscoASA для SSL подключения:


- Указываем разрешения интерфейсам, на которые будем подключаться, на использование SSL и IPSec:

- Создаем отдельный профиль:


-
Для аутентификации учетных записей из домена, требуется настройка LDAP подключения:



- SAML профиль:



Указываем IDP Entity ID: urn:indeedid:saml_idp
Sign In URL - ссылка на SAML сервис Indeed saml.iid.local/am/idpAccount/SsoService
Sign OutURL - ссылка на страницу выхода SAML Indeed saml.iid.local/am/idp/Account/Logout
Base URL - DNS имя ciscoasa ciscoasa.iid.local
Identity Provider Certificate - сертификат Indeed SAML idP, импортированный вначале Service Provider Certificate - сертификат CiscoASA, импортированный вначале Request Signature - подпись запроса в сторону Indeed SAML iDP, по алгоритму rsa-sha1 Request Timeout - допустимое время задержки между запросом и ответом, лучше - больше
- Пул адресов для VPN клиентов:


- Добавляем отдельную политику группы:



- Параметры аутентификации:

Указываем, что искать пользователя будем по LDAP подключению к домену:

Укажем, что проверяем по UPN имени:

Проброс доменных групп на CiscoASA:

-
Ассоциации для быстрого доступа к способу аутентификации. По умолчанию должен был создаться Alias iid_saml. Если нет - добавим в ручную.
Далее добавим Group URLs.
При вводе ссылки в браузере или в Cisco Anyconnect, будет пропущен выбор способа аутентификации, и сразу перейдет на Indeed SAML idP.

Нажав на ОК, применяем политику и сохраняем конфигурацию. Если ошибок не возникло, то метаданные Service Provider’a CiscoASA доступны по ссылке: https://ciscoasa.iid.local/saml/sp/metadata/iid_saml, где “iid_saml” - alias профиля для saml подключения.
Подготовка работы клиентских устройств для Cisco AnyConnect
- Установим корневой сертификат ca.cer на рабочую станцию, в доверенные корневые центры сертификации:

-
Переходим по ссылке: https://ciscoasa.iid.local/

Если перейти по ссылке https://ciscoasa.iid.local/saml, то сразу перенаправит на страницу аутентификации Indeed SAML idP:




Подключаемся через Cisco AnyConnect:



|